# Thursday, 25 July 2024

Day 2 at CppNorth started with Lightning Talks! But first I had to walk to the venue. When I drive around, I'm used to a flagger making cars stop from time to time to let a construction vehicle proceed. But this was my first sidewalk flagger:

The lightning talks were terrific, as they so often are. Funny, helpful, educational, often all 3. Pier-Antoine Giguère was our high-energy MC and really shone. I don't have any pictures because I was paying attention to all the talks!

Then it was Chandler Carruth, one of my fellow Carbon leads, with How Designing Carbon with C++ Interop Taught Me About C++ Variadics and Overloads, a talk I definitely enjoyed. There was plenty of code in both languages.

The audience seemed to enjoy it, too. After lunch I went to Hiding your Implementation Details is Not So Simple by Amir Kirsh, who has a gentle teaching style I really like. Then it was Mitigating the Intellectual Anxiety Associated with Learning the C++ Programming Language by Emmanuel Danso Nyarko from CppAfrica. If you've ever worried about C++'s reputation for being "the language for smart people" this talk will show you just how real it is. The reality of what jobs are available in Africa controls what languages people will learn. With no high-paying fintech or envy-of-your-friends gamedev employers, why would someone take on something they think is incredibly difficult?

This also applies to what is in the standard library. Seasoned C++ developers with lots of community folks to talk to can figure out how to build a UI. Different projects will make different choices - use Qt or some similar C++ framework, put a not-C++ frontend on a C++ engine, or some of the other choices of various age and success. But how does someone without that community navigate those choices and get started? Why doesn't the standard library help with that in any way at all other than "console apps" with keyboard input and text output?

Then I went to see Sohaila Ali, a very poised 17 year old with years of experience in hackathons and other contests and conferences, talk about career from that youth perspective. The audience was very engaged and the conversation after the talk was lively and enlightening.

Alas, as that talk wrapped up I had to do as I mentioned in my keynote and accept my own limitations. After a very full day of interesting talks I needed to cut the input for a while so I did not see Eric Wastl's keynote. I look forward to the recording, because I heard it was good.

One more day to go!

Kate

Thursday, 25 July 2024 19:59:18 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 10 July 2024

Things are really starting to happen on the Carbon project. Since Chandler Carruth announced the project two years ago at CppNorth, progress on the language design, and the toolchain implementation, has been considerable. Until very recently, if you wanted to try your hand at writing a little "hello world" application, you literally had to clone or fork the repo, and then build all the toolchain and tests, and you had to install a lot of dependencies in order to do that.

Now, there are nightly releases of a tool that can compile and link Carbon code. The only dependency I needed (on a WSL Ubuntu fresh install) was clang-16. I got that like this:

wget https://apt.llvm.org/llvm.sh
chmod u+x llvm.sh
sudo ./llvm.sh 16
sudo apt install \
  clang-16 \
  libc++-16-dev  \
  libc++abi-16-dev \
  lld-16

Then I downloaded a nightly build, untar-ed it, and could compile and link Carbon code, within the limitations of what has been implemented so far.

If you haven't been paying attention, you might want to watch some conference talks. Or check out the Carbon Copy newsletter. You'll find the 3 issues that have been published in the announcements section of the repo. Issue Number 3 is the latest and includes sample code that runs the Sieve of Eratosthenes to count the number of primes under 1000. (You can edit it to try a different limit, if you like.) This shows off user defined types (with a factory function), while loops, if, and a number of other parts of the language. 

Of course, Carbon is nowhere near ready to use. The only UI it can do is to print an integer. No other types, and it can't read input. There are no strings. There's no C++ interop. A number of language features (generics, variadics, lambdas and so on) are not implemented. It is nearly ready to evaluate. If you can't wait to start evaluating, you don't have to. Just be aware you can't evaluate all of it yet. But you can start, if you would like to.

Kate


Wednesday, 10 July 2024 14:17:13 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 13 May 2024

I am really starting to look forward to CppNorth. We're in a new venue this year, the Microsoft Canada offices! They have a lovely suite of presentation rooms that they make available to community groups like ours. The program is chosen, and we're working on the schedule. In the meantime you can see the speakers and their talks. If you're ready, register now! You can also book a room at the conference hotel, the Royal York. It's an easy walk from Union Station to both the conference and the hotel as you can see from this map showing all three.

For those who would fly to Toronto, there's a train called the UP between Union Station and YYZ. You should plan to come a little early so you can do some sightseeing before the conference. There's a see-and-do channel on the conference discord that will give you some great ideas.

I'm honoured to do the opening keynote again. This year's topic: The Aging Programmer. Eyes, wrists, memory, stamina ... so many things we rely on can get weaker as we age. That doesn't mean you can't keep going if you want to. I'll talk about it.

See you there!

Kate

Monday, 13 May 2024 16:39:01 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 20 July 2023

Day 3 began with a terrific keynote from Jessica Kerr, I can write the code. But getting something done is another matter. I was so thrilled when she agreed to come and do a keynote, and this one didn't disappoint. I took pictures of several slides, always a good sign.

After a break it was time for Tony Van Eerd with Value Oriented Programming Part V: Return of the Values. There was plenty of pop culture here but also some darn good advice about making good abstractions, and what's good about them. Then out for lunch again ... I deliberately chose something different on my second trip to the market.

The afternoon started with Conor Hoekstra and New Algorithms in C++23. Conor makes these things look easy -- perhaps they actually are? Then the closing keynote, from Timur Doumler, called Contracts, Testing, and the Pursuit of Well Defined Behaviour. We sure have plenty of undefined behaviour to deal with:


I enjoyed this keynote too -- they were all good.

And then it was time to say goodbye to this lovely venue and this lovely conference for another year.


Being all on a single floor this year made it super easy to meet people, have chats, enjoy the breaks, and so on. One thing I noticed this year was that some people brought their children. This was just lovely! Parents are quite capable of knowing if their child can sit quietly and be in a session, and it was great to see that in action. I hope bringing children to conferences is something I see more often in the future.

Kate
Thursday, 20 July 2023 16:26:00 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 18 July 2023

Another amazing day in Toronto! Let's talk about what sessions I went to so far.

I started with Patrice Roy's Moving an Existing Project to C++ 20 for Fun, Beauty… and Results!. The first part set up a problem and showed some C++17 code to handle it. I was a little impatient during this part, because it was a lot of code and I would have done some of it differently (because I am doing C++20 which is the point of the talk) but I did notice that it was carefully written to be fast and readable. Then the fun started as things got shorter, simpler, and (proven with some measuring) faster using C++20 goodies.

Next was Ben Deane with Calendrical C++: std::chrono, History, Mathematics and the Computus. This very entertaining talk took a problem few of us really face in code (when is Easter next year?) and used it to show off what chrono can do with dates. Probably my favourite slide was the one to show when Thanksgiving is. When you get to it, you'll see why.

The first break of Day 1 was the "Canada Snacks" -- see the published menu for details. I've never put a blackberry on a Nanaimo bar, but they certainly were delicious.

I enjoyed And Then() Some(T) by Victor Ciura a lot, even though I had to duck out early. If you would say no to "are you using higher order functions today?" this is the talk for you. Because you almost certainly are, and knowing that will make a lot of things easier to understand.

For the last talk of Day 1 I had planned to attend Rud Merriam's A Journey into Ranges, Views, Pipelines, and Currying but some last minute schedule juggling as speakers ran into travel problems put it up against Timur Doumler with C++ and Safety. Safety is a timely topic, so I'll wait for the video to watch Rud's talk. Timur did an interesting review of what the word "safety" even refers to, why governments are starting to have an opinion, and whether C++ can ever be proven safe -- and why you should care.

We wrapped up the day with the conference dinner, a nice mix of old friends and new, speakers and not, and good food. I enjoyed the conversations a lot!

Day 2 started with a keynote from Ben Deane, Optimizing for Change. Some excellent advice in this talk even if I did find the dark background a bit of a challenge on some of the code slides.

I had an online meeting I couldn't miss, so I didn't go to another morning session. After my call I walked over to the St Lawrence Market to get some lunch. I wish more conferences were fully in the towns where they are held, and made it simple for attendees to walk out and experience a little sunshine and access a wider variety of food options.

The afternoon had more tough choices, but I went to Why Good Code is Relative by Daniel Withopf. A good summary of why you can't "just write it the fast way" and some solid code samples about how to actually follow advice like "avoid heap allocations."

Then I went to Get() into Retroactive Static Reflection by Vincent Tourangeau. This was a slideless talk, bopping around in a lot of surprisingly-readable code that showed how to get properties, introspection, and a lot of other things you think C++ doesn't have -- and all with C++11. I know I'll be watching the video when it's out because there were a few moments where I wanted to rewind and see something again!

For my last session of Day 2 I went to Writing C++ to Be Read by Vincent Zalzal. I really enjoyed this talk! It's the sort of talk I would give, but Vincent included a number of excellent points I had not made or heard before. He also had fantastic slides, with highlights to point out the parts he wanted to draw attention to, and good examples.

That left the Lightning Talks. Wow, these were so good! As always, some were funny, some showed something we needed to learn, and some were highly personal. I've seen a lot of lightning talks and I always get a lot from them. But I don't remember lightning talks from student volunteers and members of the organizing committee anywhere else. Worth staying up for!

Next, one more day!

Kate



Tuesday, 18 July 2023 07:03:11 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 17 July 2023

So great that the second year of CppNorth has really happened, and started so darn well, too!

We started planning year two even before year one had happened, with a "next year" folder, and never really stopped. If you thought it was challenging to plan and host a conference with a pandemic still underway, that's nothing compared to doing the same thing during -- what are we calling it? -- an "economic downturn"? Getting attendees and sponsors took a lot of work, and luckily a pile of people who aren't me did that work.

Me, I showed up on Day 1 and did a keynote. I really enjoyed it, too. I'll post again when the video is up ... if you're an attendee you should be able to get the slides any time now.

This is 90 minutes of "stuff I've learned" like "Take Notes in Meetings" and "Always Take a Moment to Check" (aka Shift Left but for people) and the like. Many people told me it was helpful, which is very reassuring.

Kate

Monday, 17 July 2023 11:34:57 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 17 June 2023

From time to time I think it's wise to summarize the courses I have on Pluralsight. There is a link on the side you can use to get a free trial if you want to take any of these. Because I redo most of the courses each time a new version of C++ becomes widespread, there are quite a few courses with similar names. Here's a quick summary.

If you are using the latest version of a major compiler, you are on C++20. These courses have been updated for C++20:

  • C++ 20: The Big Picture This is an overview covering "what is C++?" and "what is it used for?". If someone has suggested you learn it, start here to understand why you might want to. The title means that it's up to date to C++20, not that it only covers C++20. The actual content is equally applicable to older versions of the language.
  • C++20 Fundamentals is more properly "the fundamentals of C++ including things that were introduced in C++20". This is an introduction to the ideas, syntax, and standard library. At seven and a half hours it can't cover absolutely every corner of the language, but it does cover what you need to call yourself a C++ programmer, and get started writing real code. This course assumes you already know how to program. If you don't, try Learn to Program with C++ 17 which will cover the building blocks of programming languages like loops, functions, and objects while teaching the C++ syntax and library. Afterwards, you can take Fundamentals to fill in any gaps.
  • C++20 Algorithms Playbook again covers up to and including C++20, so plenty of things that have been around for decades, but it does have a lot of content that is C++20 only, because ranges made such a big difference here. If you're not on C++20 yet, take the C++17 version, listed below. Both versions are designed to convince you to stop writing raw loops and start using the many useful functions provided in the standard library. I demystify iterators and show you the benefits of using library code instead of rolling your own.
If you're not on C++20 and are wondering if you should be, try What's New in C++20. It will show you what you have to gain by updating to the latest version of your compiler (and how to try things out if your compiler doesn't support something yet.)

If you're on an older version and can't move, you should still use the latest iteration of Fundamentals. There's very little C++20 only material in there, and it's all signposted, so you can just move past that part if you need to. For the algorithms course, Beautiful C++ 14: STL Algorithms is the older version that doesn't have all the ranges additions.

Some of my courses are really not version specific, but apply to particular kinds of work you might need to do.
I plan to update everything for C++23 when the compilers have support for the new features. There are a few things coming I'm really looking forward to!

Kate

Saturday, 17 June 2023 14:51:47 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 03 August 2022

I've been working away for the last few months completely overhauling my C++ Fundamentals course at Pluralsight. Of course I updated everything for C++20, but I also added a module on error handling options, tweaked most demos, and lightened the overall look and feel. I'm really happy with how it turned out.

Here's the table of contents:

Leaving pointers almost till the end may seem like a shock, but this is how I teach C++ these days and it really works well.

As always, if you need a trial code, look for the image in the sidebar here to get a free trial and give it a whirl! I had a great time writing and recording it and hope you enjoy watching it.

Kate

Wednesday, 03 August 2022 11:18:49 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 25 February 2022

Maybe you hadn't heard? There's going to be a C++ conference in Toronto this summer. It's very exciting! I'm helping to arrange it. We've got a great venue (the King Edward) and are busy building a program right now that includes breakouts, workshops on concurrency, generic programming, and game development, plus entertainment in the evenings and plenty of special extras. I want to see Canadian C++ programmers well represented, and hope we attract people from further afield as well. Toronto in the summer is warm, fun, and light well into the evening.

Toronto downtown

Right now, the early bird price of $925 is in effect. After we announce the full program in April, the regular price will be $1250. So you can save a lot of money if you trust us to put together a great conference program for you (and we will!). You'll save enough to be able to pay for the speaker dinner, a conference Tshirt, and so on. And you'll let us know that we'll get the attendees we need to put on a great show.

Registering early helps us do things like make deposit payments to our vendors. We don't have a surplus-from-last-year, because this is our first year. So support from the community will really help. Why not check your schedule for the third full week of July (the conference is the 17th to 20th, and there are two-day workshops over the weekend of the 15th/16th) and arrange now to join us?

Kate

Friday, 25 February 2022 15:31:14 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 17 May 2021

In April, I did my Naming is Hard talk at ACCU 2021. I'm getting better at doing talks online and handling interactions, at least I think I am :-). The recording is now online, so if you weren't at the conference, you can watch the talk. Being there is still better, even when it's digital - being able to chat to other attendees and the presenter is always going to be better than just watching a recording.

I added the talk to my youtube playlist of conference talks, so if you like that one and want some more, take a look!

Kate

Monday, 17 May 2021 20:19:53 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 02 September 2020

A little while ago, I recorded a chat with Adam Bell for the CoRecursive podcast. My episode is now published, and it's good. There's a transcript, which needs some help (C++ apparently sounds like syphilis to machine transcription), but will give you an idea of the topics we covered so you can decide to listen. It's definitely a conversation to listen to, with tone of voice and laughter and such being more important than in say, how to write generic lambdas or some other technical topic.

We basically elaborated on the 5 tips I covered in a lightning talk at Meeting C++ 2017, while I was still receiving treatment but knew that it was working and I wasn't dying after all. So the focus is on how to do your work and manage your time more than on anything specifically C++-related. We also talked a little about #include <C++> and the culture of this industry, and what I (with some friends) am trying to do about that.

Take a listen, and I hope you enjoy it.

Kate

Wednesday, 02 September 2020 08:26:16 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 06 August 2020

At the start of the lockdown, Pluralsight made its huge curriculum free to help those who were suddenly needing new skills to find a new job during the pandemic. I saw a huge number of views of my C++ course for those who don't already know how to program. It was ironic, because I was busy updating that course, a process that is finally complete.

Please check it out on Pluralsight. The new course is called Learn to Program with C++. (The similar-but-not-the-same Learn How to Program with C++ is the old one.) Here's what I did to the 6+ year old course:

  • redid all the demos in the latest compilers (Visual Studio Community Edition on Windows; Clang on Ubuntu and Mac)
  • added more Ubuntu and Mac versions of demos and tested EVERYTHING on all the compilers
  • moved content to slides and then just demonstrated it in the demo, instead of trying to explain concepts during long demos where there's no typing or other "demo" action
  • took a more "modern C++" approach wherever I could
  • improved the names in my sample code, trying not to have a,b,c and the like if I could
  • added some explanation of "make" and removed rather a lot of "how to get Visual Studio to be nicer" because it does that itself now

Plus I just generally tweaked samples, slides, and demos throughout the whole course based on comments I've had from new learners since the original publication. It's a better course.

People often say that C++ cannot possibly be taught as a first language, but that's wrong. Modern C++ is not that hard. This course is a little over 5 hours long and covers most of the syntax and punctuation you need, functions, classes, type safety, using templates from the STL like vector and string, and even touches on const and RAII. If you want to learn C++ for whatever reason, don't let someone else tell you that you must go and learn some "scratch" or starter language first before coming back to what you really want to learn.

If you already know one programming language, and concepts like "if" or "loop" then you don't need this course. C++ Fundamentals Including C++ 17 is for you. It covers even more syntax, punctuation, library, and design aspects of the library.

As always, if you don't have a Pluralsight subscription, you can get a ten day trial by clicking the big white square on the blue sidebar of this blog. Enjoy!

Kate

Thursday, 06 August 2020 13:50:16 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 09 June 2020
This year is very strange, but conferences are still happening. And they aren't all free, either. Perhaps there's a conference you'd like to go to, and being online makes it almost feasible for you, but you can't afford the conference fee? If you're a member of an under-represented group in C++, you might win a scholarship to C++ on Sea in July or CppEurope in just two weeks. (I'm speaking at C++ on Sea, so if you win, you'll hear my talk.) The scholarships are arranged by #include <C++> and the application process is pretty easy. Please let us know a little about your background: perhaps you're part of a gender minority,  a racial minority, or in some way you feel that there are less people like you in C++ than there are in the world. If you work somewhere that pays to send you to conferences, this isn't the program for you: this is for people who maybe aren't working, or who are working somewhere that sends other team members to conferences, but not you. Your application should show us that, so we can decide to send you.

More details, including a list of conferences we've sent applicants to in the past, and testimonials from recipients, are on the scholarship page.

Want to contribute? We're ok for these two conferences. But when face to face conferences start again, we'll be raising money for admissions, plane tickets, hotel rooms, and all the other costs that keep people away from the life changing and career changing benefits of conferences. Remember our site for when that is necessary.

Kate

Tuesday, 09 June 2020 18:22:16 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 28 November 2019

I'm thrilled to announce my latest Pluralsight course:

Here are the modules:

  • Course Overview
  • Modern C++
  • Standard Library Containers
  • Lambdas
  • Standard Library Algorithms
  • Move Semantics
  • Exceptions
The course picks up where C++ Fundamentals Including C++ 17 leaves off and puts you in a good place to take Beautiful C++: STL Algorithms or other C++ courses. As always, if you want a free 10 day trial, click the large white box on the side of this blog page.

Hope you enjoy it!

Kate

Thursday, 28 November 2019 10:22:03 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 25 July 2019
CppCon is approaching again and my calendar is FULL. The schedule may change and there are things still to be added, but the current plan is:
  • On Sunday, I am doing a preconference workshop (you can still get a spot) with John Lakos and Andrei Alexandrescu
  • After the precon I hope to relax at the TShirt dinner. Pack a Tshirt that says C++ (or bring your badge, or a piece of paper on which you wrote C++ yourself) and choose a restaurant from the list that should be published by the time we all get to Colorado. When you arrive, ask where the other C++ Tshirt people are, and make some new friends! I'll be tweeting my plans just before I head out.
  • Then it's back to the shiny new venue for the Registration Reception. Even if you're on East Coast time like me, make an appearance, see some friends or some of your heroes, there will probably be treats, and you'll be all set for the morning. Knowing the venue a bit is going to make you sleep better, and having your badge already will let you sleep longer.
  • Monday I will be attending talks and spending time at the exhibitor table for #include<C++>, an organization working to make the C++ community more welcoming and inclusive. Come by and get a sticker! Buy a shirt! And you know, attending talks and hanging at the #include table is what I'll be doing all 5 days.
  • If I manage to stay awake, I'll go to The Committee Fireside Chat after dinner. If there is something you always wanted to ask the people who create the C++ standard, here's where that happens.
  • Tuesday and Wednesday it's talks, talks, talks! I predict I will go back to my room for a nap at least once. It's a strategic choice that lets you actually experience the post-nap talks instead of drowsing through them and needing to watch the recording in the end.
  • Wednesday night is the #include<C++> dinner and panel! You can register for this on Eventbrite as part of registering for the conference. I'll moderate a discussion about some of what we've achieved in just two years, and what some of us would like to see next.
  • Afterwards it's Lightning Talks. Everyone loves the Lightning Talks, they're always fantastic. I will try my best to stay up for them.
  • If I can, I'll come super early on Thursday and Friday for recordings of CppChat. And stay all day for talks, of course.
  • Thursday night is the Speaker's Dinner. And there's a planning meeting after that. But I might need an early night, because...
  • Friday morning I have my one breakout session: Naming is Hard: Let's Do Better. And like last year, a lot of really good content is on Friday. Don't even think of leaving early. Fly home Saturday morning, you won't regret it.

See why I call CppCon an intense conference? 12 or 13 hours a day, every day. And no time for sightseeing! But oh my goodness the things I will learn, the people I will meet, and the fun I will have. See you there!

Kate

Thursday, 25 July 2019 20:02:09 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 14 July 2019

On July 14th, 2017, Guy Davidson tweeted what he thought was a passing pun:

But when I saw the tweet, I thought, yeah, why isn’t there?

And in that moment, #include was born. We got together at CppCon and again at Meeting C++ where Guy did a lightning talk on inclusion. We were off and running. At that time we had a channel on the cpplang slack, but that didn’t work out well: a change of owners of the slack to someone who was less interested in preventing harassment and abuse, coupled with slack’s fundamental design tenet that people having trouble with bad behavior on a slack channel can always go to their mutual boss (which doesn’t work on public servers that bring strangers together) resulted in #include being pretty much driven off the slack and forming our own server elsewhere, on discord.

The original channels on the discord were all about the work of running #include. How can we get conferences to have a code of conduct? How can we help employers to write job ads that will attract all kinds of applicants, not just people who closely resemble the ones they already have? But we couldn’t stop talking about C++ so we added a channel for that, and then another for something else technical, and another, … and things really started to grow.

By April 2018 we were about a dozen organizers and very few people who weren’t organizers. But now we have over 2300 members and over 70 channels. People are getting help with C++ problems they face, recruiting helpers for projects, getting advice about speaking or attending conferences, and much more.

Our original goals were pretty low key really:

  • To encourage under-represented people to speak, to apply for jobs, to stay in this industry
  • To get conferences to have a code of conduct (we hadn’t even thought about enforcement)
  • To get employers to value diversity somewhat, and to provide some resources to conferences and employers

We thought it would be nice to have some stickers and Tshirts made, and have a table at conferences where we would urge people to join our discord and try to make our industry more welcoming. Well, that worked! We’ve had tables at major C++ conferences the world over and you can be sure to find a smiling person to talk to, whether they’re officially “working the table” or not.

We’ve seen these shirts at conferences and user groups around the world, at C++ standards meetings, and on a lot of speakers and influencers. We think they send a strong message to attendees that the world is full of friendly and welcoming people who will not exclude you because you are different in some way. If you want one, we have a US-based store and a European store, or you can find us at a conference near you. We try to diffuse the stickers around the world – if you run a user group and are going to be at a conference, get in touch with one of us (the conference channel on our discord would be the best place) to see if you can get a handful of stickers to take home and give out at the group.

Last year at about this time, someone asked if we were interested in partnering with the Women in Tech Fund to get women to CppCon. We sure were! The conference donated tickets at below their catering costs, and we raised $4000 to cover travel and accommodation for our scholarship winners. It was a big success and we keep doing it at conference after conference. Right now we’re raising for CppCon again – this year not just women, but anyone who is under-represented in the C++ community, can apply. If your employer isn’t sending you, why not see if we can?

This is a lot more than we had originally planned to do. A number of us started insisting on a Code of Conduct before agreeing to submit talks to a conference, and suddenly it seems all the C++ conference have good Codes of Conduct now, with real enforcement too. There’s a best practice gaining popularity of introducing the Code of Conduct team at the start of the conference too. We started handing out pronoun stickers to put on badges, and not only do lots of people take them (please take one even if your gender is obvious, it makes life easier for those whose isn’t) but some conferences have even started including a pronouns field on badges. We’ve built this amazing friendly community on the discord where people are learning and growing and becoming leaders in the C++ community at large. We’ve seen talks and demos and forms and web sites changed after we pointed out that a particular wording or example wasn’t welcoming and inclusive. People generally want to be welcoming and inclusive, they’re just not sure how to do it, so our strategy of providing really specific unsolicited advice has worked well. And probably the thing I’m most proud of is the people – actual breathing humans – we have sent to conferences. Going to a conference is career-changing, especially when you’re relatively inexperienced. You can meet your heroes, ask questions, learn a ton, make connections, get advice, and re-energize your connection to this industry and your job. Already I am seeing former scholarship winners on stage, donating to the current fundraiser, and finding their voices on Twitter and our discord. It’s amazing. I want to pinch myself some days.

The people who form the core of #include support and encourage each other. Many of us have given talks we would never have otherwise given. I won’t speak for her, but I expect the jaw dropping and enlightening Deconstructing Privilege talk that Patricia Aas has been giving could be one of them. If you haven’t watched it, you should. A lot of what we’re doing at #include is “privilege lending” – using our positions to ask for things to make people with less privilege feel welcome. We’re also teaching people who’ve been spared some hardships about the realities some other people face. Often this is all it takes for things to change quite quickly.

We’ve also done a lot of lightning talks and internal corporate presentations about #include and what we’re trying to do, but it seems like none of them ever get recorded and uploaded. Rest assured, we’re still working hard to move the needle when it comes to inclusion in the C++ community.

What’s next? Well, we’d love to start seeing child care available at C++ conferences. We’d love to see other developer communities doing some of what we’re doing, and we’re going to keep learning from other developer communities too. We’re seeing things like quiet rooms, pronouns on conference badges, and food labelling becoming the norm. And we’d love to get suggestions from anyone who feels excluded from conferences, training, job opportunities, and online communities. Join the discord and join the conversation, or find us on Twitter. See you there!

Kate

Sunday, 14 July 2019 06:46:26 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 28 June 2019

I just published a small course on Pluralsight called Advanced Debugging with Visual Studio 2019. It covers IntelliTrace and Code Map, two features that are only in the Enterprise Edition of Visual Studio. Many people don't know about them, so I put together a quick introduction.

Here are some of my other current courses:

  • Visual Studio 2019 Getting Started - what you need as a new user of Visual Studio to start using it. There are a variety of other Visual Studio courses, and pretty much all of the material from my 2017 one is still applicable, so don't take just this one or you'll be missing some really powerful techniques.
  • Beautiful C++: Updating Legacy Code - I really enjoyed writing this course and if you maintain old C++ code, I think it will make your life a lot easier. It discusses both specific patterns to update (and why) and overall strategic approaches (not mechanically replacing every incidence of one pattern with a newer pattern.)
  • C++ Fundamentals Including C++ 17 - this is the go-to course for developers who want to learn C++ today. Whether you never did any, or did some a decade or two ago, this course will cover the syntax, library, and best practices you need. If you've never programmed in any language, try Learn How to Program with C++ instead.
  • Using Stack Overflow and Other Stack Exchange Sites - we all go to Stack Overflow when we're stuck. But a lot of us are bad at it, because it doesn't work like other sites. Take a little time to improve this skill and you'll get better and faster answers. You might even become one of those high-rep users who others admire!
  • Beautiful C++: STL Algorithms - Stop writing raw loops and you will get more readable code with less effort. The library has so much waiting for you and this course will help you make sense of it all.
There are more, but if you take all of these, you'll be in a strong place as a C++ developer. (BTW, only the Visual Studio courses require Visual Studio. All the others work with any development environment you prefer.)

Kate

Friday, 28 June 2019 09:39:32 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 06 May 2019

In early April I was lucky enough to go to Bristol in the UK for the annual ACCU conference. This has been an aspirational conference for me, one I attended before speaking at and am always delighted to attend. This year I was invited to keynote, and it turned out to be the closing keynote, which meant I was not done with all my talks until the conference was over! Nevertheless I enjoyed the week tremendously.

I flew to England overnight Saturday night. People often ask me how, given the fatigue issues I have left over from the whole surviving incurable cancer thing, I am able to travel. One reason is that when I travel, I only travel on travel days. I don’t try to work at the airport, on the plane, etc. I read a book or listen to music or just relax. On overnight flights, I sleep. I also schedule a few days to adjust to the time zone without having to think hard or meet important deadlines, like finishing my talk. On this trip, I spent two days visiting Cardiff, which is actually where I was born, with my sister who is planning to move there. It was marvelous fun watching a family explore and discover their new home town, and going to places I have seen on TV or in pictures.

Tuesday I did a private corporate talk about #include<C++> and diversity issues. It was very well received and I might offer it to other companies as a result. I always buy a train pass when I go to the UK and it got a good workout on this occasion. Back in Bristol I was able to relax and know I was ready for the conference.

After a lovely opening address by Russel, we had an illuminating keynote from Angela Sasse.  Security can’t be left until the end or handled by a separate group who fight the developers. Afterwards I took some time to meet up with more friends and spend some time at the #include table. After lunch, a very good talk from Jonathan Boccara on reading unfamiliar code.  I loved the map analogy and the way he showed using a call stack to increase your mapped area. Then a workshop from Gail Ollis on Helping Developers to Help Each Other which really brought home to me once again how important tactile artifacts – things you can pick up, put down, wave around, put next to each other and so on – can be to encourage open and complete communication.  The recording stops when the hands on part starts – just one of those things you can only get by attending in person. The talks wrapped up with Lightning Talks and I did one – my first time doing so at ACCU. I was not able to stay up for the evening reception beyond a quick “hey! Great to see you!” to a handful of people. There were plenty of talks I couldn’t get to – recordings for me to watch later!

Day 2 started with a Herb Sutter keynote.   I’ve read the paper but was really happy to hear it as a talk, and to hear the motivations behind enabling more people to use the whole language.  Then I needed some down time before my talk right after lunch. I gave an updated version of “Nothing” and as always at ACCU got some great questions that will go into the next version of the talk – or some other one.  Then I kept to tradition by doing the Pub Quiz, entertaining as always for the don’t-write-this-at-work code and marveling at how some folks know a lot of dark corners! Another round of lightning talks and an early night, meaning I couldn’t attend the Bristol Girl Geeks dinner as I had planned.

The Day 3 keynote was low on code and high on insight as Paul Grenyer talked about growing a community while dealing with the ups and downs of life in general.  Then to a fascinating talk by Dom Davis about communicating, with significant meta content that I really enjoyed.  I spent the lunch break at the #include table, and then dove into a variety of little talks – 15 and 20 minute ones. I was starting to tire and didn’t pay as much attention as I should have, but let me recommend Alex Chan’s reminder that the tech we build can hurt people when it’s being used as designed.  I took a break to be ready for the Conference Dinner where I was able to catch up with old friends and meet a few new ones.

Finally Day 4. I started with Kevlin Henney and a talk with a similar title to my “Nothing” but very different content.  Another break, another lunch at the #include table, and then some down time before my closing keynote. I updated the beginning of this talk since the C++ on Sea keynote, and I think this improves it. More great questions after and I think more material to work in there somehow. Then the close of the conference, a certain amount of hanging around not wanting it to end, and up to my room for another early night and to get ready to go.

Sunday all I did was take the train to the airport, fly home (sleeping a little on the plane) and drive home. A lot to process, as always after ACCU. And when I got home, a lot to catch up on, which is why this has taken a few weeks to write up!

Kate

Monday, 06 May 2019 06:57:37 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 02 April 2019

Usually, I start writing product-specific courses during the beta of a product, then record them after release. But this time around I am happy to announce my Visual Studio 2019 course is live on Pluralsight already, on launch day!

If you need a trial code, click over there where it says Click Start a FREE 10-Day trial (I didn't make the image so I'm not responsible for the missing "to" in the text.)

It's just over 2 hours long - less if you play it higher speed. I cover the basics to get you using it properly. Yes, a long and super detailed course is in the works, but you could probably take the Visual Studio 2017 Essentials and Beyond course and most of it will apply to 2019. Things that are new in 2019 I covered in the Getting Started course.


Kate

Tuesday, 02 April 2019 12:56:34 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 20 November 2018

My latest Pluralsight course is live!

I start by talking about strategy - what parts to update, what general approach to take, and so on. Then I present a number of specific tactics, like using the preprocessor less and the compiler more, actually using C++ instead of just C, and using C++ features that were added in C++ 11, C++ 14, and C++ 17. I show you code examples for the changes I am suggesting, and explain why specific changes produce code that is more readable, understandable, and maintainable.

As always, if you don't already have a Pluralsight subscription, feel free to click the large white box in the margin and start a free trial. I hope you like the course, and tell your friends about it too!

Kate

Tuesday, 20 November 2018 11:39:33 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 15 September 2018
Oh my, I am doing a LOT at CppCon. Here's a list:
  • On Sunday, I am doing a preconference workshop (I believe it's sold out now) with Scott Meyers and Andrei Alexandrescu
  • After the precon I will relax at the TShirt dinner. Pack a Tshirt that says C++ (or bring your badge, or a piece of paper on which you wrote C++ yourself) and choose a restaurant from the list on that page. When you arrive, ask where the other C++ Tshirt people are, and make some new friends! I'll be tweeting my plans just before I head out.
  • Then it's back to the Meydenbauer for the Registration Reception. Even if you're on East Coast time like me, make an appearance, see some friends or some of your heroes, there will probably be cake, and you'll be all set for the morning. Knowing the venue a bit is going to make you sleep better, and having your badge already will let you sleep longer.
  • Monday I will be attending talks and working a shift at the exhibitor table for #include<C++>, an organization working to make the C++ community more welcoming and inclusive. Come by and get a sticker! Buy a shirt!
  • If I manage to stay awake, I'll go to Grill the Committee after dinner.
  • Tuesday I have a session called What Do We Mean When We Say Nothing At All? and it's at 9 sharp - but you'll have been in the building for Open Content at 8, won't you? Grab a coffee and come find out how nothing can say a lot.
  • Tuesday night is the #include<C++> dinner and panel! Buy your ticket now, everyone is welcome. You do not need to be a CppCon attendee.
  • Then it's back to the Meydenbauer after dinner for Lightning Talks. Everyone loves the Lightning Talks, they're always fantastic.
  • Wednesday I'll arrive early because there are 3 sessions I want to watch at 9 (thankfully all the talks are recorded)
  • My keynote is at 10. I'm a bit nervous, but I'm mostly looking forward to it.
  • Right after that, I have a panel about interop with managed code.
  • Then I'm going to relax and listen to talks for the rest of the day, and go to the Planners Dinner. And more Lightning Talks afterwards.
  • Thursday I have no talks to give, shifts to work, or panels to be on. I'll be a free attendee ... until the Speaker's Dinner. And there's a planning meeting after that.
  • Friday is JAMMED with talks. And if you live locally, come on down and attend some because it's the open day. I have marked 11 talks in three time slots as ones I want to attend. Not sure that's going to work, exactly.
See why I call CppCon an intense conference? 12 or 13 hours a day, every day. But oh my goodness the things I will learn, the people I will meet, and the fun I will have. See you there!

Kate

Saturday, 15 September 2018 12:26:26 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 03 September 2018

Next year, I'll be keynoting a new C++ conference, C++ on Sea. I'm really looking forward to it. A little while ago, they ran a "tweet why you want to go" contest for a free ticket, and said that if the winner already had a ticket, the conference would help the winner give away the ticket.

Can you guess where this is going? I won the ticket. I already have one, so you can win mine. Here's what you need to do:

  • Choose a way to "give back" to your community before, during and after attending. This might be blogging, tweeting, hosting a local meetup where you talk about what you saw and recommend specific talks for others to watch later, or even activities at the conference like giving a lightning talk.
  • Gather supporting links - to your blog, your repo, your YouTube Channel, the meetup site, and so on
  • If your plan won't fit in a tweet, put it somewhere that it will fit. Include lots of links - I want people to find your blog, channel, meetup etc even if you don't win
  • Tweet me (@gregcons) with your plan or a link to it. I will retweet. Focus on what you will give if you are able to attend the conference.(It's not that I don't care whether you are deserving or can't afford to go or whatever, I do, but I am going to focus on how you will share your good fortune with others.)
  • If you're not on Twitter, post on my public Facebook page. You can't just email me because the idea is to promote those links to blogs, channels, meetups, and suchlike.

That's it! I'll choose someone, probably by filtering to everyone who is offering to do something generous and then randomly choosing one, but I reserve the right to choose the single person who comes up with the most amazing plan. I'll tell the conference that you get my ticket.

Fine print: this is just admission to the conference. Not travel or hotel. Not paid time off work. You'll need to cover that yourself. I suggest that telling your boss you won the ticket because of your community involvement might be quite helpful as far as that is concerned :-). And while I can't force you to keep your promise, I will remember if you do, and that will probably be a good thing for you over and above the rewards of doing those good things for the community.

Good Luck!

Kate

Monday, 03 September 2018 12:32:39 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 09 June 2018

Here's what's coming up over the next few quarters:

  • August 27-30: NDC Techtown (two talks)
  • Sept 23-29: CppCon (preconference day; main conference talks not yet announced)
  • Oct 18th-19th: Pacific++ (two talks)
    • Submissions are still open so if you want to join me in Sydney as a presenter, get on that!
  • Nov 15th-17th: Meeting C++ - I will not be speaking here (I just can't fit it in), but I want you to know it's happening
  • Feb 4th-6th 2019: C++ on Sea (keynote at this brand new conference)
  • April 2019 - ACCU (nothing announced yet, but I plan to be there)

I consider it an absolutely marvelous problem that there are so many C++ conferences I can't go to them all! There are a number of smaller conferences that draw primarily from one country or region, and more meetups than I can keep track of. I'm open to talking at a meetup if I happen to be traveling to a city for business anyway, but I don't think I can get up above 5 or 6 conferences a year, especially if some of them involve keynotes, plenary sessions, or workshop days. It's a lot of work!

Hope I get to see plenty of people in these various places,

Kate

Saturday, 09 June 2018 16:24:48 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 08 July 2017

I spent much of the spring working on this course, and am delighted to see it live!

Visual Studio 2017: Essentials to the Power User is 7 hours of good stuff you need if you're a Visual Studio user. My emphasis is on keeping you happy and productive by getting the tool to help you and showing you neat features you probably didn't know about. If you open that link in a new tab, you can play the course overview (a 2 minute "trailer") and look at the table of contents. I've done versions of this course for older Visual Studios and I get comments like "It's as though I have a whole new IDE" and "I've been using Visual Studio for years and you showed me things I didn't know, and I'm glad I do now."

I think debugging in general is not taught enough, so I'm happy to have 2 whole modules on it here - not on philosophy of debugging or how to narrow down a bug, but just on how to operate the machinery of Visual Studio's debugger. There's lots of it. Plus, if you have Ultimate, there's another half a module on "Historical Debugging", IntelliTrace. I also spend quite a lot of time on how to find your way around a large codebase with the various searching, finding, navigating and exploring capabilities that have evolved over time.

Here's a quick topic summary:

I really enjoyed writing this course and hope you enjoy watching it. If you need a free trial, look over to the right on this page for the grey rectangle that says Author and click for a 10 day trial.

Kate

Saturday, 08 July 2017 10:40:45 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 29 April 2016

I've started a C++ column in Visual Studio Magazine. I'm sure you've read plenty of C++ columns in your time - I sure have! I wanted this one to be a little different. So, here's what I've decided to do. For each column, I choose a guidelines from the C++ Core Guidelines, and then explain it. But the twist is that I'm not going through the guidelines from top to bottom - I'm picking guidelines whose explanations require a little language knowledge.

The first column just sets the stage and explains what I'm doing, and gives you a link to the Guidelines. The second, Don't Cast Away Const, explains the guideline, but also the consequences of const-correctness, a typical situation where you might find it hard to stay const-correct when you make a performance tweak to a running system, and the correct use of the mutable keyword. Not bad for explaining a four-word guideline!

I have a number of columns already written and plans to write more. Please check them out and spread the word!

Kate

Friday, 29 April 2016 17:17:26 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 07 December 2015

The first keynote at CppCon this year was Bjarne Stroustrup (who invented the C++ language) announcing the C++ Core Guidelines. They are on Github and once he announced them, as Herb Sutter reported in the second keynote the very next day, they quickly became a trending topic across all languages. Here is a description of the guidelines from there:

The C++ Core Guidelines are a collaborative effort led by Bjarne Stroustrup, much like the C++ language itself. They are the result of many person-years of discussion and design across a number of organizations. Their design encourages general applicability and broad adoption but they can be freely copied and modified to meet your organization's needs.

The aim of the guidelines is to help people to use modern C++ effectively. By "modern C++" we mean C++11 and C++14 (and soon C++17). In other words, what would you like your code to look like in 5 years' time, given that you can start now? In 10 years' time?

The guidelines are focused on relatively higher-level issues, such as interfaces, resource management, memory management, and concurrency. Such rules affect application architecture and library design. Following the rules will lead to code that is statically type safe, has no resource leaks, and catches many more programming logic errors than is common in code today. And it will run fast - you can afford to do things right.

To me, these guidelines are the key to getting across my fundamental message that C++ does not have to be hard, scary, complicated, or dangerous. The language may still say “it’s your foot!” but the guidelines, and the tools they can drive, are quite the opposite.

You probably know that Visual Studio has a static analyser built in. (You should, anyway, I’ve blogged about it.) It will catch things like this:

    int* p = nullptr;
    *p = 10;   

But it doesn’t mind things like this:

    int arr[10];        
    int* p2 = arr;

Two lines, two violations of the guidelines – I’m not initializing any of the elements of arr, and then I am using its address as a regular old pointer. Now, there’s nothing wrong with regular old pointers – some people have got quite a hate on for them with the rise of genuinely smart pointers, but pointers are fine. Using pointers to control lifetime isn’t fine, because it’s impossibly difficult. But pointers themselves are fine. What’s not fine here is the “decay” of an array into a pointer – folks from other languages don’t expect that at all, and some marvelous bugs have hidden behind this simple bit of helpfulness from the compiler. So there’s a guideline that says don’t do that. Specifically:

(I’m giving you a picture of code because if you want to copy and paste you should go to the live, always updated, guidelines on github.)

This guideline is part of a “profile” – a particular set of rules that are designed to be enforced and that are supported by tools. Well, when I say tools I might be overstating the case a little. There’s just one tool at the moment, but that could be enough!

This tool, C++ Core Checker, is on the NuGet Gallery. You don’t have to get it from there though. You get it, and use it, from inside Visual Studio 2015. Any version will do. If you don’t use Visual Studio normally, just get and install the Community Edition, which is free and is ok to use for commercial purposes, from https://www.visualstudio.com/ . (Need the fine print? if you’re using it as a person, you can do whatever you like. If you work for a company with less than 250 PCs and less than a million dollars US in revenue, again you and up to 4 of your coworkers can use it for whatever you like. If you work for an “enterprise” company then any and all of the employees can still use it for learning purposes or to work on open source.) Note that Visual C++ isn’t part of the Typical install, so you’ll need to choose Custom and select Visual C++:

So once you have Community Edition or some edition of Visual Studio, make a console application and put in the two bad lines of code. Build it and then also run static analysis on it (On the Analyze menu, choose Run Code Analysis, On Solution.) You won’t get any warnings or errors. That’s your pre-guidelines life. You’re doing something inappropriate and nobody is telling you.

Now, add the checker to your solution. This is solution-by-solution, not a change to how Visual Studio does static analysis. On the Tools menu, choose NuGet Package Manager, Package Manager Console. In the console window that appears, type Install-Package Microsoft.CppCoreCheck and press enter. You will see output like this:

Attempting to gather dependencies information for package 'Microsoft.CppCoreCheck.14.0.23107.2' with respect to project 'ConsoleApplication1', targeting 'native,Version=v0.0'
Attempting to resolve dependencies for package 'Microsoft.CppCoreCheck.14.0.23107.2' with DependencyBehavior 'Lowest'
Resolving actions to install package 'Microsoft.CppCoreCheck.14.0.23107.2'
Resolved actions to install package 'Microsoft.CppCoreCheck.14.0.23107.2'
Adding package 'Microsoft.Gsl.0.0.1' to folder 'c:\users\kate\documents\visual studio 2015\Projects\ConsoleApplication1\packages'
Added package 'Microsoft.Gsl.0.0.1' to folder 'c:\users\kate\documents\visual studio 2015\Projects\ConsoleApplication1\packages'
Added package 'Microsoft.Gsl.0.0.1' to 'packages.config'
Successfully installed 'Microsoft.Gsl 0.0.1' to ConsoleApplication1
Adding package 'Microsoft.CppCoreCheck.14.0.23107.2' to folder 'c:\users\kate\documents\visual studio 2015\Projects\ConsoleApplication1\packages'
Added package 'Microsoft.CppCoreCheck.14.0.23107.2' to folder 'c:\users\kate\documents\visual studio 2015\Projects\ConsoleApplication1\packages'
Added package 'Microsoft.CppCoreCheck.14.0.23107.2' to 'packages.config'
Successfully installed 'Microsoft.CppCoreCheck 14.0.23107.2' to ConsoleApplication1
PM>

This changes your project settings so that analysis runs this Core Checker for you. Repeat the analysis step and this time the new tool will run and you will get output like this:
------ Rebuild All started: Project: ConsoleApplication1, Configuration: Debug Win32 ------
  stdafx.cpp
  ConsoleApplication1.cpp
  ConsoleApplication1.vcxproj -> c:\users\kate\documents\visual studio 2015\Projects\ConsoleApplication1\Debug\ConsoleApplication1.exe
c:\users\kate\documents\visual studio 2015\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(9): warning C26494: Variable 'arr' is uninitialized. Always initialize an object. (type.5: http://go.microsoft.com/fwlink/p/?LinkID=620421)
c:\users\kate\documents\visual studio 2015\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(10): warning C26485: Expression 'arr': No array to pointer decay. (bounds.3: http://go.microsoft.com/fwlink/p/?LinkID=620415)
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

Where it says "type.5" and there's a link, that's to the specific rule in the "type" profile that this code breaks. And where it says "bounds.3", the same - I showed a picture of bounds.3 up above.

Isn’t that great? Come on, it’s great! The tool will add more rules as we move through 2016. I’m going to have a lot more to say about the Guidelines as well. But this is a great place to start.Why not point it at some of your own code and see what happens?

Kate

Monday, 07 December 2015 13:54:57 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 26 November 2015

If you have an MSDN subscription, you know that it provides a number of benefits besides software licenses - you get Azure hours, you can use Visual Studio Online, and so on. Those are well worth the price of the subscription. But it also gives you access to a number of Pluralsight courses, completely free. If you have a Professional Subscription, you get access to 30 courses, and if you have an Enterprise subscription, you get access to 45 courses.  (You want one of the over 4500 other courses? You'll need a full subscription, but you can buy that at 30% off, which helps.)

And yes, my latest course, Visual Studio 2015: Essentials to the Power-User is one of the ones you'll get access to. So go, check it out!

Kate

Thursday, 26 November 2015 13:29:22 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 09 November 2015

I have a new Pluralsight course on Visual Studio called Visual Studio 2015: Essentials to the Power-User. It starts at the beginning, so if you're new to Visual Studio it will help you get started, but carries on "to 11" as it were, covering things many everyday users of Visual Studio don't know. Here are the modules, each with their length:

  1. Getting Started (42:08)
  2. Projects and Solutions (13:23)
  3. Namespaces, Folders, and Files(27:03)
  4. Understanding and Personalizing Visual Studio UI Components (26:57)
  5. Exploring Relationships in Your Code(36:41)
  6. Using Search and Find Effectively(28:15)
  7. Letting Visual Studio Help You (46:28)
  8. Basic Debugging Features (24:04)
  9. Additional Debugging Features (44:30)
  10. Working with Designers (39:37)
  11. Useful Extensions (39:54)
  12. IntelliTrace and Code Map (25:57)

If you don't have a Pluralsight subscription, click the Author link over on the right hand side of this blog - click Subscribe, then Start 10-Day trial. That should give you a good idea of how valuable the subscriptions can be. (My company buys subscriptions for my staff, and I use my free author one all the time. It's a great way to learn a new technology.)

My main goal in this course was to have Visual Studio make sense to the learner. There are so many ways to do any action that sometimes when you learn something it seems pointless, and you quickly get tired of learning an endless parade of similar features. I worked hard to put these into an order that would lead naturally through the capabilities of the tool, and put things in context. If you watch all 12 modules, you'll know more Visual Studio than most developers - and you'll have a productivity boost to show for it that should be pretty impressive! Please do give it a try.

Kate

Monday, 09 November 2015 12:18:54 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 11 June 2015

One of the CppCon sponsors, Bloomberg, is running a contest for students in university or college and giving away trips to attend CppCon2015 in September in Bellevue, Washington:

The series of seven weekly challenges will kick off on June 22, 2015, and each week contestants will be provided a different set of problems to solve via Bloomberg’s cloud-based CodeCon platform. Each week’s winner will earn a trip to CppCon in September. The list of seven winners will be announced and notified via email on August 5.

Interested? You should be. CppCon is a great experience for students and one you won't soon forget.

Kate

Thursday, 11 June 2015 15:38:34 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 13 January 2015

ACCU has announced the schedule for their 2015 conference in Bristol, so I can announce that it includes me!

James and I are adding quite a lot of material, so if you saw this talk at CppCon, you should probably come and see it again at ACCU. Alternatively, you could come to the conferences and watch one of the conflicting talks and take excellent notes, because I really wish I could be at those as well!

I first went to ACCU two years ago, spending my own money for travel and the registration fee. I enjoyed it immensely and learned a lot, so it's a real thrill to be speaking there this year. I can't wait!

Early bird rates last till the end of February. Register as soon as you can, and I'll see you there.

Kate

Tuesday, 13 January 2015 12:48:48 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 12 January 2015

My friend (and fellow Pluralsight author) Kathleen Dollard is coming to town, and will speak at the East of Toronto .NET User Group on "What's New in C# 6.0".

The next release of Visual Studio includes some major language enhancements that every developer should be aware of. Get up to speed on forthcoming enhancements quickly with this user group meeting from Microsoft MVP and language guru Kathleen Dollard.

Join us at 6pm at the Pickering Central Library! Please register at the Meetup page. See you there!

Kate


Monday, 12 January 2015 18:10:01 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 24 December 2014

In my Pluralsight course, Using StackOverflow and Other StackExchange Sites, I cover all the things you really need to know to use the sites effectively and get answers to your questions, or a chance to show your skills. In the last module I explain how to help run the sites yourself, and I suppose you don't actually need to know that to use them - but knowing how they're run can help you understand what happens and why, so I included that material. I didn't include things that are really just for fun.

Right now, Winter Bash is on and it's just for fun. I made a quick video to show what it's about - take a look and let me know what you think. I hope to keep adding more "almost-great" items throughout next year.

Kate

Wednesday, 24 December 2014 10:43:41 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 12 August 2014

Earlier this year I flew to Utah for the Pluralsight Author Summit. Spending time with such a great collection of my friends and colleagues, and learning more about how to make a great course, was the real reason for the trip, but I got up early one morning to record a Play by Play video with Geoffrey Grosenbach. He has a genuine skill of getting you to demonstrate your own thought processes aloud and I've enjoyed watching other people's Play by Play sessions a lot.

Geoffrey had arranged for some ancient C++ code for me to poke around in. Mike Woodring came through with the sample code from his 1997 book with Aaron Cohen, WIN32 Multithreaded Programming. Seventeen-year old code it may have been, but it turned out not to be quite as ugly as I would have liked. Still, we put it through its paces a little and talked about how I approach this sort of task.

It came out to about 90 minutes overall so if you have a chance to watch it, let me know what you thought!

Kate

Tuesday, 12 August 2014 13:34:43 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 02 August 2014

It's just around the corner - the largest C++ conference EVER with over one hundred talks!

And two of those talks I'll be doing with James McNellis. We had such a good time presenting together for Microsoft Virtual Academy that we decided to do it again. How do these sound?

Modernizing Legacy C++ Code

C++ is a programming language with a long, storied history spanning over three decades--four if one includes its C ancestry. The C++ language has undergone many changes during that time, compiler technology has advanced substantially, and computers today are very different from the computers of decades past. But despite all of these advances, there's an awful lot of C++ code in use today that looks like it was written in the 1980s. In some cases, the code was written in the 1980s and it's still in use; in other cases, it's recently-written code that just doesn't use modern style.

In this talk, we'll discuss some of the problems with legacy code, and review some practical techniques for applying principles of modern C++ to gradually improve the quality of legacy code and improve maintainability and debuggability. We'll show how some very small changes to code can yield huge benefits.

Making C++ Code Beautiful

Ask a non-C++ developer what they think of C++ and they'll give the language plenty of compliments: powerful, fast, flexible, and "the language for smart people". But along with that you are likely to hear ugly, complicated, hard to read, and "the language for smart people". Is it possible to write beautiful C++? Not arcanely elegant or wickedly compact, but readable, clear, expressive - beautiful! We say it is, and we want to show you how.

In this session, you'll see how to turn pages of "comic book characters swearing" into code you'll be proud to call your own. By making your code express your intent, using the power of new language and library functionality, and leaving hard-to-read constructs out of your vocabulary, you can give your code a makeover that will stand the test of time.

If you're not registered yet, there's still time! All five days cost $995 and there are one and two day passes available for less. You're going to want to meet and learn from the stars of C++ - check the full session list to read all about it.

Kate

Saturday, 02 August 2014 14:37:09 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 14 June 2014

My latest Pluralsight course, Introduction to Visual Studio 2013 - Part 2 is live and ready for action. The modules are:

  • Basic Debugging
  • Additional Debugging Features
  • IntelliTrace
  • Working With Designers
  • Extensions

If you haven't watched Part 1, you really should.

What's my next course? I'm trying to decide that at the moment and will let you know when it's underway.

Kate

Saturday, 14 June 2014 16:21:12 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 23 May 2014

I've completed my development of my latest Pluralsight course and I'm just waiting for it to go live. Here are the "teaser" images  I posted to Twitter and my public Facebook page as I was developing it:

This was fun to put together and it's nice to get into things so many people don't know. I hope you take a look at it once it's live and learn from it!

Kate

Friday, 23 May 2014 09:38:00 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 30 April 2014

Do you think Agile and Enterprise can go together? Are you a senior .NET developer who is looking to lead? If so, a client of mine is looking for you. Their job description includes:

We’ll look to you as a team leader who embraces a solid leadership capacity that has truly valuable impact on our team. In this senior role, you will participate in all aspects of the software development lifecycle including planning, technical design and architecture, construction, documentation, testing and deployment. Additionally, you’ll have a big picture view and the opportunity to play a role in the design.

and they're expecting:

  • Proven and deep experience with different versions of .NET Framework and C#/ASP.NET development
  • Demonstrable experience working on N-tier architectures
  • Solid understanding of the full development life-cycle
  • Knowledge and experience with Agile development methodologies (e.g. XP, Scrum)
  • Champion of agile engineering practices (e.g. TDD, continuous integration, refactoring etc)
  • Good understanding of design patterns and their application
  • Experienced unit testing frameworks
  • Computer Science (or related) degree
  • Knowledge of/experience with Sitecore is an asset
  • Knowledge of/experience with Ektron is an asset
  • Knowledge of/experience with Sharepoint is an asset

Sounds like you? Then get in touch with me and I'll make an introduction.

Kate

Wednesday, 30 April 2014 12:58:02 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 17 March 2014

Office Lens went live in the Windows Phone Store today. I happened to have a list of things to do on a whiteboard in my office, so I gave it a try. I had already taken a picture of the whiteboard to transcribe but I went back to the board with the app installed to see if I could save some time.

Here's the picture Office Lens took (resized to 400 pixels wide)

Here's how that looked when Office Lens cleaned it up and put it in a OneNote document for me (I copied the picture out of OneNote, cropped it and resized it):

Much nicer - the glare spots are gone and the background is cleaner. The skew that resulted from taking the picture on an angle (a defensive action to keep the glare out of the important parts of the image) is also gone. As is, this can go into an email. If my handwriting was neater, One Note could have tried to extract the text from it. But this is a lovely improvement and Office Lens is free, so why not give it a try?

Kate

Monday, 17 March 2014 11:19:16 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 28 February 2014

I have updated my Visual Studio Pluralsight course for Visual Studio 2013 and Part 1 is now live. It covers features that were newly added in the 2013 release as well as older material (so you don't need to take the 2012 courses before you take this one.) It focuses on how to work Visual Studio rather than on the mechanics of a particular programming language or framework. The demos are all in C# but almost all of it applies to other languages equally well. (As C++ developers know, some things we don't get, but we're used to that.)

A number of people who've been using Visual Studio for years have reported to me that they decided to watch the course just to see what features I felt were worth covering - and then accidentally learned something! Chances are you will, too, so why not watch on double speed and see if something comes up you didn't know before?

Kate

Friday, 28 February 2014 12:49:26 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 27 November 2013

Channel 9 has all 7 pieces of the MVA Day I did with James McNellis available online now!

We went very fast through this one day introduction. If you'd like a slightly saner pace, please check out my Pluralsight courses, C++ Fundamentals and C++ Fundamentals - Part 2. If you're not a programmer, and you'd like to "begin at the beginning" with C++, try Learn How to Program with C++. There is a free trial for the Pluralsight courses to get you started.

Kate

Wednesday, 27 November 2013 14:44:23 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 22 November 2013
I've been busy this fall with the release of Visual Studio 2013. One of the things I've been working on is live now: a new Pluralsight course. I focused on new things that matter to C++ developers, whether that's compiler support for language changes (hello, variadic templates!) or IDE changes that were implemented for C++ as well as "the other languages". Here's the description:

The C++ Language and the Standard Library both changed dramatically with the release of C++ 11. Some of these features were not implemented until Visual Studio 2013, and those are presented in this course. You'll learn about variadic templates, improvements in constructing and initializing variables, and rawnstring literals. In addition a number of productivity boosting enhancements in debugging, editing, and using libraries are in this version and you will learn how to take advantage of them.

If you don't have a Pluralsight subscription already, there's a free trial available, so please check it out!

Kate

Friday, 22 November 2013 13:36:27 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 12 November 2013
A lot of people (a lot) have asked whether the November 19th session (a whirlwind tour of C++ for those who don't know it) will be recorded. I'm happy to confirm that it will be. On the Live Events Page for Microsoft Virtual Academy you will see both future and past events. Here you can register for our session, and about two weeks afterward a link will appear on this page to let you watch the recording.

Please help spread the word to people you know who want to learn C++!

Kate

Tuesday, 12 November 2013 19:53:21 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 02 October 2013

In yesterday's session, I showed a Windows 8 store app that loads an image and then draws an animated ripple over it.

If you would like to get the code, and more importantly the documentation that explains the code, it's on Codeplex. Mixing and matching a little DirectX into your Windows 8 C++/CX app is remarkably easy, so why not take a quick look?

Kate

Wednesday, 02 October 2013 02:45:36 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 03 April 2013

As it says on the Bristol GGD website:

Our April dinner is being held on Thursday 11th in conjunction with the ACCU 2013 conference.

The event starts at 7pm for 7.30pm, at the Bristol Marriott Hotel City Centre. A few female IT professionals will talk briefly about themselves and their jobs. There will then be time for discussion and networking.

Read more and register http://girlgeeksataccu2013.eventbrite.co.uk/

I can't wait! I'm delighted to be one of the speakers and I'm looking forward to meeting lots of new people.


All are welcome, whether attending ACCU or not. Men are welcome at all GGD but are asked to come in the company of a woman so that women can experience being the majority.

Kate

Wednesday, 03 April 2013 17:54:11 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 28 March 2013
The week of April 8th, I'll be in Bristol, UK, attending ACCU. I'm looking forward to it tremendously - there is a great lineup of sessions and I only wish I could have spared the time to stay on for the C++ committee meetings that will follow it. I am, however, making the most of my time in that delightful city. Having enjoyed Guy Smith-Ferrier's presentations in several different locations, including my own East Of Toronto .NET User Group, I can now turn the tables and present at his.

Of course I want to do a C++ talk. But it's not a C++ group. So to be fair, I've decided to do two talks:

First, Use All of Visual Studio to Become a Better Developer

Most developers know how to use Visual Studio to do the basics of being a developer. You can create a solution, add projects to it, edit code, and run it. Easy, right? In this session, I want to show you how to be a better developer by using parts of Visual Studio you might not know about. Save hours of debugging time, move around your code more smoothly and don't lose your place, see what you want to see and find what you need to find. Demos will be in C# with Visual Studio 2012.

Second, C++ in 2013 – Why on earth?

There are so many languages a developer could use today. Yet some developers still use C++. Some developers are learning C++ when they already know C# and other younger languages. This session will show you why that is happening, and why you might want to learn the new C++ yourself. It's nothing like the C++ you remember, and it can be a very useful language for you to know.
 Please do register for these, and I hope to see you there!

Kate

Thursday, 28 March 2013 11:55:53 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 04 January 2013

Over the last few weeks, I've been accumulating links to appearances of mine, and it seems like a good idea to share these.

  • OReilly webcast: This is a reasonably horrible recording (sound quality and video size) of a webcast I did back in August. It shows why C++ AMP is so cool and why you might care about it. I recorded it to promote the book but I'm not very happy with how it turned out. You'll probably do better with the recording of my Tech Ed talk.
  • Pluralsight interview: This is specifically about my Using Visual Studio 2012 course. You can download the audio or read the transcript as you prefer.  My favourite quote from the conversation:
It’s not just like, oh, I saved five seconds. I can go home five seconds earlier today. It’s that you’re less likely to forget what you were doing because you don’t have to put so much time into the mechanics and you just stay in flow. And to me, that’s a ramping up of two or three times the amount of code I can produce when I use everything the tool has to offer.
  • Dot Net Rocks panel at DevIntersection: Here Scott Allen, Michele Leroux Bustamante, Woody Pewitt, and I discuss whatever we feel like, with occasional leading questions from Carl and Richard, and some Canadian whisky too.

Even though I haven't been blogging much, I have been doing a lot, and I hope these links will help you to discover some of it.

Kate

Friday, 04 January 2013 17:58:45 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 20 November 2012

While I was in Nashville as part of the Dot Net Rocks Roadtrip, we recorded an episode of The Tablet Show. The recording is online now and I'll have to give it a listen myself to remember what we talked about - Hilo, for sure, and C++ AMP, and just generally why C++ can be a great choice for tablet development.

Kate

Tuesday, 20 November 2012 13:30:44 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 16 November 2012

Don McCrady, who with Jim Radigan did an inspiring talk on performance at Build this year, has blogged about a proof-of-concept project that adds C++ AMP to CLANG and LLVM using OpenCL underneath instead of using DirectX the way Visual Studio does. This is super cool! As Don says:

When Microsoft announced C++ AMP back in June 2011, we told you that we would release the C++ AMP specification under the Microsoft Community Promise – essentially opening up the specification to allow any C++ compiler implementer to add C++ AMP to their compiler. Shevlin Park serves as an example of the platform portability potential intended by the Community Promise.

Do read Don's post and follow the links to learn more about Shevlin Park. The praise for C++ AMP as a programming model, and the likelihood that multiple compilers will support it, should make you feel all warm and fuzzy about learning it. You might even want to use my book to do so :-)

Kate


Friday, 16 November 2012 13:19:40 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 02 November 2012

One of the stickers for the badge this year was to attend an 8:30 session. I achieved that by going to Alive with activity: Tiles, notifications, and background tasks which, to be honest, I chose as much to see what Kraig Brockschmidt is doing lately as to learn about tiles and toast. But I'm glad I went, because it was a very good talk.

I've come to Redmond so many times, but I never particularly noticed the colours changing. This week they've been spectacular. I had some meetings in other buildings so I was able to get out of the giant lines at least long enough to take pictures of the giant lines :-)




And yes, it rained, but they were ready for that:




I really like the vibe that came from being on campus. Speakers tended to get up from their desks, jump on a shuttle or walk over, pull on the shirt and talk to us. I really got the sense we were being welcomed into their home.

I also went to Tips for building a Windows Store app using XAML and C++: The Hilo project - how could I not, since I was on the project. Excellent summary of some hard-learned lessons and one you should totally download and watch.

Kate
Friday, 02 November 2012 12:00:10 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 31 October 2012
Build this year is less focused on announcing things (though the Windows phone and native C++ material is brand new) and more on drilling down into topics that we've had a year to experiment with and want some deep study on. Most of the speakers are from product teams. What's fun for me is that most of the attendees are very motivated and here to learn.

I'm also enjoying how full the rooms are for C++ sessions. Here's Tarek's Day 1 session:



BTW, that was session 3-000 demonstrating that (a) the sessions are numbered using zero-based indexing and (b) the C++ sessions were first on the list.

And here's the C++ performance talk from right after the keynote this morning:



This room was standing room only. It's possible all the C++ talks were, I don't always sit at the back where I can see whether people are standing back there or not. And you may not be able to tell from the picture but there were plenty of young developers there too.

There was also a nice session on Project Austin which is a lovely reference app showing how to use DirectX in a Windows Store app. You can get the code from Codeplex and take a look at it yourself or just use it to take beautiful notes on a tablet.

Speaking of reference apps, Hilo (which I've written about before) is now an official sample in the SDK and on the Dev Center. There's a Hilo session here at Build too. Within a day or two these links should have recordings and slides for you to download.

Want to know more about C++ at Build? Here's less than two minutes on just that topic. If you can, please watch Herb's talk on Friday. It promises to be exciting!

Kate

Wednesday, 31 October 2012 19:45:47 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 19 October 2012

Microsoft and Stack Overflow are joining forces on a fun Windows 8 development contest. And since one of the strengths of StackOverlflow is how the community reviews all the content, it only makes sense that there's a serious review component to this contest! And it's not US-only (for once!) so as long as you're over 18 and don't live in Cuba, Iran, North Korea, Sudan or Syria you're good to go. Well, you need a StackOverflow account, but you needed one of those anyway, right?

Top prize is $5,000 and there are shiny achievements and everything - so get going!

Kate

Friday, 19 October 2012 18:13:41 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 18 October 2012
I love the fact that big-name speakers are willing to come and speak at the East of Toronto .NET User Group. You don't have to live in a big city (or struggle through big-city traffic on a visit) to keep up to date with the latest technology and meet fellow developers. The latest example:



As the website says:

Beth Massi is a Senior Program Manager on the Visual Studio team at Microsoft. Beth is a community champion for business application developers and has over 15 years of industry experience building business apps. She is a frequent speaker at various software development events and you can find her on a variety of developer sites including MSDN Developer Centers, Channel 9, and her blog http://www.bethmassi.com. Follow her on twitter @BethMassi

And what will she be talking about?

Visual Studio LightSwitch is the easiest way to create modern line of business applications for the enterprise. In this session you will learn how LightSwitch helps you focus your time on what makes your application unique, allowing you to easily implement common business application scenarios—such as integrating multiple data sources, data validation, authentication, and access control. See how LightSwitch in Visual Studio 2012 has embraced OData making it easy to consume as well as create interoperable data services. Then see how LightSwitch makes it easy to deploy these services to the Azure cloud and consume them from other client applications and platforms. You will also see how the LightSwitch team is enabling mobile scenarios making it easy to create HTML5/JavaScript companion clients for modern mobile devices.

When and where?

Event Agenda

TimeTitle
6:30 - 7:00Socialize and refreshments
7:00 - 8:30Presentation

Pickering Central Library Auditorium (2nd floor)

One the Esplanade
Pickering, ON L1V 6K7

Register now - it's a good way to spend a Wednesday night.

Kate
Thursday, 18 October 2012 17:43:53 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 16 October 2012

I love writing courses for Pluralsight. I can reach a lot of people and I know the production quality will be top notch. My most recent course is Introduction to Visual Studio 2012 Part 1. It's aimed at people who've never used Visual Studio before, but even a seasoned user will learn something from it - just use the cool speedup feature to zip through things that are already familiar, like the difference between a project and a solution. I cover some very nice productivity features and there's sure to be something in there that's new to you.

Another recent Pluralsight development is that the MSDN Subscriber benefit has expanded to cover MSDN subscribers worldwide, not just in the US, and five more courses were added. If you have an MSDN subscription, you can watch all these courses free:

  • Agile Team Practices with Scrum
  • ALM for Developers with Visual Studio 2012
  • ALM with Team Foundation Server 2010
  • ALM with TFS 2012 Fundamentals
  • Building Windows 8 Metro Apps with C# and XAML
  • Building Windows 8 Metro Apps with C++ and XAML
  • C# Fundamentals - Part 1
  • C++ Fundamentals
  • Continuous Integration
  • Developing for Windows 7
  • IntelliTrace
  • Introduction to .NET Debugging using Visual Studio 2010
  • Introduction to Building Windows 8 Applications
  • Introduction to Visual Studio 2010 - Part 1
  • Introduction to Visual Studio 2010 - Part 2
  • Introduction to Visual Studio 2012 - Part 1
  • Introduction to Windows 7 Development
  • Kanban Fundamentals
  • Microsoft Fakes Fundamentals
  • Solution Modeling with UML in Visual Studio 2010
  • Test First Development - Part 1
  • Test First Development - Part 2
  • Web Application Performance and Scalability Testing
  • Windows Azure Diagnostics
  • Windows Phone 7 Basics


The bolded ones are mine. Here's how to sign up - do it by Dec 11th 2012 - and get your one year free access to all these great courses!

Kate


Tuesday, 16 October 2012 13:35:44 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 15 October 2012

Hilo is a reference project written in C++/CX for Windows 8 by the Patterns and Practices team. I was delighted to be part of this project and think it turned out very well. I use the Hilo codebase to remind myself how to do certain things when writing a Windows Store app in C++ (something I'm in the middle of doing for another project.) The accompanying document is rich in best practices for Windows 8 development, async work, modern C++, unit testing, and more. Now the latest version has been released, updated for Windows 8 RTM.

Hilo itself is a photo viewer. Before you roll your eyes, bear with me. I actually think it's better than the one that ships with Windows 8. It shows you some of your pictures as a sort of overview:

Click on one to interact with it. You can right-click to bring up both the app bar at the bottom and a nice strip-navigation control at the top:

If you want to see something cool, use Cartoon Effect. This leverages C++ AMP to cartoonize the picture. I've shopped this image a little to reduce the width (pulled the appbar in from the edges) but the cartoon work was done by Hilo - and super quickly.

If you have any thoughts of writing Windows Store apps, and C++ is a possibility for you, get over to Codeplex, download the Hilo code and the .chm file, and get reading!

Kate

Monday, 15 October 2012 13:17:12 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 28 September 2012
I’ve been writing a book, though I swore I wouldn’t write any more books, and it’s finally done! You can buy a Kindle version from Amazon or an e-book directly from O’Reilly today. The paper copies will be ready in about a week and you can order them from O’Reilly or Amazon. The book is published by Microsoft Press, but O’Reilly handles the actual production of the books.


 I’ve got a page dedicated to the book with links for you to buy it, get the code, submit errata, and whatever else you might want. (If you think something’s missing, comment here and I’ll try to take care of it.)

Kate
Friday, 28 September 2012 14:50:54 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 27 September 2012

Two years ago or so, when Visual Studio 2010 launched, the crazy duo of Richard Campbell and Carl Franklin – if you’re a Dot Net Rocks listener, they’re the voices in your head – took their show on the road and drove an RV across the USA holding live Dot Net Rocks evenings pretty much every night for weeks on end. Each city featured a surprise “rockstar” flown in for the occasion. I did St Louis and had a great time. Now they’re doing it again and this time announcing us in advance – I’ll be in Nashville Oct 24th.

Registration is free, and please do register using the big red Register button for your city (I hope to see you in Nashville). You can track them online too and follow the #dnrRoadTrip hashtag on Twitter.

If you’re in Toronto, don’t miss the October 13th Saturday-a-ganza at the Microsoft Canada offices featuring Michele Leroux Bustmante! I know I won’t!

Kate

Thursday, 27 September 2012 14:19:21 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 26 September 2012

I love writing courses for Pluralsight. I have quite a few and am working on more right now. They like to interview their authors about each course. Here's one about my latest for them. If you’ve done the whole course you won’t learn anything new from the interview, but if you’re curious about writing what we’re now calling Windows Store applications for Windows 8 using C++ and Visual Studio, perhaps this interview will help you decide whether it’s something you want to learn. There’s a transcript as well as an audio link.

Kate

Wednesday, 26 September 2012 14:13:20 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 25 September 2012

We now have a Windows Phone application in the marketplace. We wrote it for ourselves, to learn the framework and to give us a way to track how we spend our time. The minute we started designing it, we discovered everyone in the company wanted a different way to track. People who do pretty much the same thing all the time (coding, for example) wanted to track project-by-project. People who work on only one project at a time wanted to differentiate between types of work, like meetings or email or writing documents. We decided to make it as simple and flexible as we could. I was inspired by a story of a time tracking technique involving physical objects. You get 5-10 paper cups and write things on the cups like Email, Meetings, and so on. Then you get 32 poker chips, all the same colour. As each 15-minute piece of time goes by, you toss a chip into the cup. It is supposed to help you understand that you very literally “spend” your time. And at the end of the day you can look in the cups and see where your day went.


If you’d like to track your time like this – hit the + button to toss a “15 minute” square into a particular “bucket” or just hit the falling drops button to accumulate time in one bucket until you change tasks – please try our app and let me know how it works for you.

Kate


Tuesday, 25 September 2012 14:11:21 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 31 May 2012
Recently one of my staff went to a week-long conference - her first. I gave her some tips before she went and it occurred to me that others might like them too. I hope you'll apply them to a trip to Tech Ed or some other conference where you can hear me speak.

First, here are some links to some other good posts on the topic. Here's me a year ago, pointing to John Bristowe's suggestions for going to a big conference. And here's me 18 months ago, pointing to Joey deVilla's suggestions for meeting people and talking to them. And here's a great question (with an answer from me) on Programmers.StackExchange about networking at conferences. (BTW I met the asker of that question in person at Tech Ed, which was great for both of us.) And here's me four years ago with some details on choosing talks to attend.

Now, here's the super condensed version of my advice:
  • Plan your sessions in advance, at least two per timeslot. Carry a paper list of session names and room numbers so if you decide to bail on one, you know exactly where to run to, even if your electronics are out of battery and there's no wifi.
  • Wear comfortable shoes and clothes, but not so comfortable that you would feel underdressed when talking to a potential employer or other business contacts. You will walk a LOT so choose those shoes with special care. It will be both stinking hot (outside - many conferences are held in hot places at muggy times) and freezing cold (if you end up right under the AC that is set on stun) so have a layering approach.
  • Bring your own bag so you can tell it apart from everyone else's, and know just where to find things you need. Leave as much as you possibly can in the hotel room, to save your back during all that walking and to minimize what you might lose if there's any kind of bag mishap.
  • Eat at the conference - it's a great time to meet people and this is where I usually bump into people I know.
  • Go to the trade show floor, the community area, and the like multiple times. Serendipity will happen but you have to give it a chance
  • Pack a somewhat larger bag than you need to - there is a lot of swag at Tech Ed and first timers can't resist lining up for TShirts and the like. Don't be that person who stuffs it all in the conference bag and checks a second bag on the way home. For one thing, someone may accidentally pick up your conference bag thinking it is theirs. Your conference bag and all your other swag should fit in your main bag.
  • Pack your days and evenings FULL. Don't you dare watch TV in your hotel room! Go to the labs and try something you always wanted to learn a little more about. Download something that was just released and try it. Go to a party. Write up your notes (or better yet, blog them.) Send your boss late night emails about what a great time you're having and how much you're learning. Watch one of the sessions you didn't get to that day and then figure out if the speaker is likely still at the conference and how you can arrange to find that speaker and say thanks for the talk or ask a question. Fill out the evals for the talks you went to. There is SO MUCH you can do while you're on site, so try very hard to do it all. Make the most of the week, make it intense, and you will get more out of it by fully engaging.
  • Try to do at least a few hours of sightseeing - one afternoon or evening - with some friends if you can. Maybe the attendee party is being held in some iconic location? Go to that. Or there's a restaurant in the town that you've always wanted to eat at? Gather a few folks and arrange something. Twitter is great with the conference hashtag - "who wants to go to XYZ tonight?" - I've done this for going on tours too. Gives you fellow geeks to talk to while you sightsee and strengthens friendships if you go with people you only know professionally. But don't overdo the sightseeing - you're here for the conference, remember.

I hope I see you there! The better prepared you are, the more benefit you will get from the conference!

Kate


Thursday, 31 May 2012 11:24:04 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 29 May 2012

I've been putting my schedule together for the talks I want to attend at Tech Ed North America and Tech Ed Europe this year. While I wasn't looking, a bunch more C++ content was added.

In Orlando:

Plus some language agnostic sessions that chose to put C++ in their session descriptions, which is a new thing these days.

Now as it happens, Tech Ed North America is sold out, so if you're not registered yet, you have three choices: join the waiting list, watch these sessions online, or get your boss to agree to a slightly larger T&E budget and head to Tech Ed Europe in Amsterdam just two weeks later. There we will have:

  • PRC08, my all day Monday precon: C++ in Visual Studio 11: Modern, Readable, Safe, Fast
  • DEV316, Tuesday at 4:30 pm: Application Lifecycle Management Tools for C++ in Visual Studio 11 by Rong Lu
  • DEV368, Wednesday at 2:45 pm: Visual C++ and the Native Renaissance by Steve Teixeira
  • DEV322, Thursday at 8:30 am: Building Windows 8 Metro style Apps with Visual C++ 11 by Rong Lu
  • DEV367, Thursday at 4:30: Building Windows 8 Metro Style Apps With C++ by Steve Teixeira
  • DEV334, Friday at 1:00 pm: C++ Accelerated Massive Parallelism in Visual C++ 11 by me

(Europe doesn't have direct links to the sessions, but they do allow links to the search for C++.) I'll have to miss Steve's talk because Rong and I are going to Belgium, so that one I'll be watching online. 

One way or another, please attend or watch these sessions. There's a lot of new stuff happening!

Kate

Tuesday, 29 May 2012 17:31:56 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 28 May 2012
I am having a very lucky year. I've been nominated and accepted as a judge at the Worldwide finals of the Imagine Cup. I love being around students, and everything I've heard about Imagine Cup tells me that the energy, excitement, and creativity is marvelous to be part of. While I'm there, I decided to stay an extra day (July 11th) so I can offer my one-day C++ training to those who can't make it to Tech Ed in Orlando or Amsterdam. Here's what I'll cover:
  • Modern C++ with the Standard Library
  • Application Lifecycle Management for Visual C++ 11
  • Leveraging Lambdas for the PPL and C++ AMP
  • Best practices for C++ developers today

This is not a free session, but the price is even lower than the Tech Ed precons since I don't have travel expenses to get down there and see you all. If you live in Australia, please register and take advantage of this chance to come and learn what's been going on with C++ while you weren't looking! And if you don't, I'd appreciate it if you could spread the word to those who do.

Kate

Monday, 28 May 2012 21:04:29 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 26 May 2012
This report is well overdue, I know. On April 17th I spoke at the first meeting of the Toronto C++ User Group! The room was PACKED:



And as you can see, there's quite an age range represented. The space was provided by bNotions. It was lovely and airy, and I was thrilled to hear their commitment to community across a variety of technologies:



Once I got started, my challenge was to give the one hour version of this talk, and not the six-hour one I plan to do at my Tech Ed precons in June. Here I am in action (thanks Eran for wandering the room with my camera throughout the talk) explaining the new ranged-based for:




The next meeting will be shared with the North Toronto .NET User Group, covering Windows 8 development in native C++. Yes, the .NET folks want to hear about this, too! I'll see you there June 4th, right?

Kate
Saturday, 26 May 2012 20:36:18 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 10 May 2012
So much C++ news going on lately. Time to clear my queue:

It's hard to keep up with it all! Especially when I'm on a book deadline :-)

Kate

Thursday, 10 May 2012 22:06:29 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 26 March 2012

How's this for a renaissance? People are starting C++ user groups!

  • The Jerusalem .NET/C++ User Group will cover both topics. They've had their first meeting already.
  • The Central Ohio C++ User Group has also had its first meeting and will meet monthly.
  • In Austin Texas they're calling it the C++ Meetup and the description sounds a lot like a user group
  • The Belgian C++ User Group has its first meeting in April

It's so much fun to see this excitement springing up. There seem to be two popular topics for first meetings: either "What's new in C++ 11" or "Writing Windows 8 Apps". I think these two things arriving together - the huge language and library improvements (and the unexpected synergy of the language changes and the library changes) with the chance to write for Windows 8 in C++and XAML - is producing much more interest than there used to be.

And now the fun is spreading to Toronto! No, I'm not founding the group - I'm surely not the only C++ developer in Toronto after all. But I am honoured to be speaking at the first event on April 17th right downtown (pretty much Yonge and Bloor.) I'd love to dive deep into C++ AMP, or show how the Consumer Preview of Windows 8 is easier to code for, but I think I should begin at the beginning, so my talk is titled What happened in C++ 11 and why do I care? and has this abstract:

C++, both the language and the libraries that come with every compiler, is defined by an ISO standard. The latest version of the standard, generally known as C++ 11 after its approval last fall, was optimistically called C++0x throughout the multi-year process that led to its adoption. Many of the language changes (new keywords, new punctuation, new rules) and library changes (genuinely smart pointers, threading, and more) have already been implemented by vendors who were following the standards process closely.
In this session Kate will introduce and demonstrate many of the highlights of C++11 including lambdas, auto, shared_ptr, and unique_ptr. These are all supported in Microsoft’s Visual Studio 2010. You can see how to make your code more readable and expressive, easier to update, more correct (less bugs and memory leaks) and faster, not by trading off among those possible constraints but by adopting modern C++ which gives you improvements in all four areas at once. If you’ve been ignoring the Standard Library, for example, you must see how lambdas make all the difference and open a world of productivity to you.
A sneak peek of the next version of Visual Studio will show you even more C++11 goodness.

If you've looked at my Pluralsight courses, you'll know that my biggest challenge is going to be fitting this into an hour plus Q&A. This will be an overview, an overture if you like, and should whet your appetite for the meetings to come!

Please register as soon as you can, please spread the word, and I hope to see you there!

Kate
Monday, 26 March 2012 08:29:02 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 14 March 2012
People keep on releasing interviews with me. If you're willing to listen to them, I'm more than willing to keep on talking. There's remarkably little overlap in all of these.

On The Tablet Show, Richard and Carl (yes, that Richard and Carl) asked me about C++ in this wacky new world of Windows 8. We had the usual freewheeling conversation and covered a lot of ground in 49 minutes.

For PluralSight, Fritz asked me questions about my latest course, and the industry in general. This one's just ten minutes, and there's a transcript if you'd rather read than listen.

Kate

Wednesday, 14 March 2012 14:56:58 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 12 March 2012
It's been a week-and-a-bit that the beta of Visual Studio 11 has been out. I'm using it more than Visual Studio 2010 at the moment - in both Windows 7 and Windows 8, and for C++ projects exclusively at the moment. (Say what you will about the C++ Renaissance, but the fraction of my consulting, writing, and coding that is C++ has taken a major uptick in the last  6 or so months.) I'm getting used to the look, and I'm certainly motivated to use more keyboard shortcuts :-)

Herb has a nice blog post that summarizes the C++ features in this release. You can read the details there, I'll just summarize briefly:
  • Complete Standard Library for C++ 11. Especially the async and threads stuff. Standard!
  • Some more language C++ 11 features. Range for is the big one here.
  • C++ AMP. You know I care about this one!
  • The continuation (.then) syntax of PPL, which makes WinRT asynchronicity much more readable.
  • Windows 8 - both C++/CX and WinRL

And there will be more coming, sooner than "Visual Studio 12" whenever that might be. There will be out of band releases with more goodies as they get finished. If you care what gets done (and released) in what order, you can tell the team. I took the survey myself - I care about uniform initialization, defaulted constructors, and then some other bits and pieces at lower priority. Since they aren't just going to gather them all up and release them a few years from now, order matters. Share your opinion, and you're more likely to get what you want.

Monday, 12 March 2012 11:09:18 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 11 March 2012

Recently the Tech Ed people interviewed me for a profile that is now live. You can read it on their blog. We are all starting to work our way towards being ready for June. The content catalogs are partially public for both Tech Ed North America and Tech Ed Europe. If you search on C++, you'll find more than just my precon, by the way.

North America:

Europe:

Who is giving those talks? Well I am doing the precons in both places - that's official. And I wrote the abstracts for the other two talks, so I'm pretty sure I'm giving those too. I would love to see you there. And if you have colleagues who are coming to Tech Ed who really don't "get" why C++ is different these days, please encourage them to join me for the all-day precon that answers precisely that question.

Kate

Sunday, 11 March 2012 13:48:45 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 10 March 2012

I've been working on another C++ course for Pluralsight to complement the C++ WinRT/Windows 8/Metro course I did as well as the two-part C++ Fundamentals course (part 1, part 2). It's finished and live!

The topics I cover are:

  • Avoid Manual Memory Management
  • Use Lambdas
  • Use Standard Containers
  • Use Standard Algorithms
  • Embrace Move Semantics
  • Follow Style Rules
  • Consider the PImpl Idiom
  • Stop Writing C With Classes

I had a real blast writing this - while I was editing it I could hear my own enjoyment of parts of it. I hope you enjoy it too. A Pluralsight subscription is such a bargain - buy one for the topics you simply MUST learn for work, then use it on your own time to learn all those other things that you think you might benefit from. (I recommend Annual Plus - $500 gets you the sample code and offline viewing, all you can learn for a year.) Whether C++ is "must learn for work" or "I hear it's different know, wonder if it could help me" for you, I hope you find it helpful. Please let me know!

Kate

Saturday, 10 March 2012 14:36:17 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 08 February 2012
I've been excited about C++ AMP since it was first announced back in June. What's C++ AMP? It stands for Accelerated Massive Parallelism and it's about harnessing thousands of cores on accelerators like GPUs. You can speed up some applications by a factor of 10 or more. Not 10%, 10x. And you don't have to learn some C-like language, you get to work in C++. It's done almost entirely with libraries, which means you can use C++ AMP from a variety of applications, including Metro apps for Windows 8.

If you check my Concurrency category you'll see I've been writing code (and words) for months now. I just haven't been putting those words here on my blog. Instead, they're going into a book, for Microsoft Press! Soon, I will have some chapter drafts available for review. If you're interested, I've set up a page with some details, and some links for those who want to learn more.

There's increasing media coverage, including Peter Bright at ars technica and Darryl Taft at eWeek, and last week the spec was released to the public under the Microsoft Community Promise license. This means other compiler vendors can implement C++ AMP in their own compilers, allowing even more developers access to heterogeneous hardware and massive speedups for data parallel calculations. Herb Sutter mentioned it in the Day 2 keynote at GoingNative, the Visual C++ Blog included a link, and Soma blogged about it too.

Dive in! There's a lot to learn. And plenty of samples to play with. I'll post updates here as I go.

Kate

Wednesday, 08 February 2012 20:48:48 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 07 February 2012

The minute this was announced, I knew I had to go.

Two days of "C++ today and tomorrow" with the bright lights of C++ today? Just try and keep me away! I'm so glad I was there - it was AMAZING and FANTASTIC and just generally wonderful. For me, personally, seeing so many old friends was a big part of it. The C++ team, other C++ MVPs, people I went to university with, and so on. It was also wonderful to see so many young people - including speakers, but also attendees, who were clearly in their 20s (and a few who were obviously in their teens.) After Chandler's talk I told someone "we can retire now: the future of C++ is in good hands." The speakers were not "the usual suspects" at a Microsoft event either. At a panel at the end of the second day, someone asked about C++ and the cloud and one of the answers was to indicate three speakers sitting next to each other: "Microsoft guy, Facebook guy, Google guy. Where isn't C++ in the cloud?" While that was a great cloud answer, I think it also highlights how inclusive this was - it was a C++ conference held at Microsoft, not a Microsoft conference.

Some fun quotes I happened to write down:

  • “if it’s that ugly, it must be good” - Bjarne, on why some newbies imitate horrible code written long ago by their heroes
  • “write C-style code, expect C-style errors” - Bjarne again
  • “we know where bugs hide” – Bjarne (they hide in large tracts of complicated code)
  • "dot dot dot is where the fun begins" - Andrei
  • "real code is not supposed to fit on slides" - Andrei
  • "this is legal" - Andrei (we needed to be reassured since it rarely looked legal)
  • "if you're using new or delete, you're doing it wrong" - Herb (it's true!)

And Chandler's talk was very much a 2012 talk, with lolcat-like interjections and Simpsons references and even a how-agile-is-this update with a picture of Oscar Wilde in reference to Andrei's earlier off-the-cuff description of some template error messages (aka template barf) as being "a small novel by Oscar Wilde." The humour level was very high, much of it self-deprecating - no-one, not even the coiners of the terms, thinks RAII or SFINAE are great names, but what the heck, they're the names we use.

Even the little things here were so well done. Herb opened the conference by dedicating it to Dennis Ritchie, which I found extraordinarily touching and appropriate. He opened day 2 by celebrating the 20 year anniversary of Microsoft C7 which was C++ 1 for them, with Visual C++ appearing in the next release. There on the podium was the two foot long, 44 pound box, with multicoloured plusses all over it, in which it shipped.

And what was inside? A lot of books, and a lot of 3.5" floppies (I took this picture earlier, before the box headed to campus):

There are 5 or 6 floppies in each bag and apparently each bag had a part number of its own.

This conference was far more than a trip down memory lane, of course. It was a two-day Valentine from Microsoft to the C++ community, a demonstration of the "new growth" in modern C++ and the power and capability that is there for those who are prepared to start using the new features, and a chance for all of us to accelerate the learning we have to do. I so hope you were able to be there, or to catch the energy by watching it live and following tweets from those of us who had to share the bon mots and the fun. But if not, the on-demand videos are almost all there now. Here are the links:

Bjarne Stroustrup: C++11 Style

Hans Boehm: Threads and Shared Variables in C++11

Stephan T. Lavavej: STL11 – Magic && Secrets

Andrei Alexandrescu: Variadic Templates are Funadic

Panel: The Importance of Being Native (Bjarne, Andrei, Herb, Hans) 

Herb Sutter: C++11, VC++11 and Beyond

Chandler Carruth: Clang - Defending C++ from Murphy's Million Monkeys

Andrei Alexandrescu: Static If I Had a Hammer

Bjarne Stroustrup and Andrew Sutton: A Concept Design for C++

Panel: Ask Us Anything! (all speakers)

Fair warning: both of Andrei's talks, and the Concepts talk, are hard. This is cool new stuff that we are all learning about. There is no shame in pausing, rewinding, and giving something a second listen. Look, Chandler was running through pitfalls and problems that Clang catches, and showed some code with a problem I couldn't spot. A few minutes later in the Q&A, Bjarne asked him to clarify just what the problem was. Made me feel better!

Chances are you won't be able to watch any of these on fast forward, or skip any of them. So I'm asking you to invest 12 hours of your life to watch all of them. Do it! You won't regret it!

Kate

PS: They gave us shirts (it's all about the shirts for developers) with real code on the back and this on the front:



Highly appropriate. Of course, it's not a comeback for those of us who never left. But still...
Tuesday, 07 February 2012 12:19:41 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 12 January 2012
Perhaps not a great surprise, but today the precons for Tech Ed North America were announced and mine is there too. It's well described in the previous blog post and I'll be doing the same material at both events. So if Orlando, June 10th works better for you than Amsterdam, June 25th, terrific and I'll see you there! Registration is now open.

Kate

Thursday, 12 January 2012 10:57:42 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 09 January 2012
Yay! Today I got news that registration is open for Tech Ed 2012 in Amsterdam, and with it confirmation that my preconference has been accepted! This is great news for anyone who loves C++, because it's a C++ all day preconference! The title is C++ in 2012: Modern, Readable, Safe, Fast and here's the abstract:

C++ is gaining momentum as a development language, so whether you’ve never used C++ or stopped using it a decade ago, it may be time to brush up on your skills. With a new standard release providing new keywords and capabilities, C++ is a  featured language for many of the new Microsoft technologies and enables some amazing speed-ups of your application using libraries like PPL and C++ AMP. What’s more, Visual Studio offers tools to native developers that have only been available for managed developers in earlier versions. This all-day session will show you what all the fuss is about and give you the skills you need to understand the advantages of C++ today and how to start applying those benefits to your application.

Now, if you're an experienced and current C++ developer, you may not need to come to this session. But if you were thinking you needed a refresher, here's a great way to get one, and at the same time look at some of the cool new stuff that is available to you once you know C++. If you've never written a line of C++ code in your life, but you're solid in C# or Java so you know the basic syntax (if, while, etc) you should be able to follow this session, though it won't teach you all the fiddly bits of C++ syntax and make you a C++ developer from scratch. It should, however, give you the inspiration you might need to go and learn all that fiddly syntax, and understand why we have it. I am also hoping there will be a number of relevant breakout sessions you'll want to attend after getting a taste of what C++ developers can do, though we have to wait a little longer to find out about those.




I'm still working on the exact content, but my first draft outline looks something like this:
  • Modern C++ with the Standard Library (demo of strings, shared pointers)
  • Application Lifecycle Management for Visual C++ 11
  • Leveraging Lambdas for the PPL and C++ AMP
  • Best practices for C++ developers today

This is 9am - 5pm (all day) the Monday before Tech Ed Europe starts, June 25th. You can register for the precon and Tech Ed now. And tell your friends! I would love to see a TON of registrations to ensure continued C++ content at Tech Eds around the world.

Kate

PS: Yes, I know that Tech Ed US is a few weeks before Tech Ed Europe. You didn't miss the US announcement; you shouldn't have to wait much longer for it though.

Monday, 09 January 2012 20:29:14 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 21 December 2011
Work is underway on settling the agenda for Tech Ed, even though it's almost 6 months away. As Brandy explained a week ago or so, it starts with asking "the usual suspects" for session submissions. Tech Ed is a fairly closed conference - the call goes out to MVPs, RDs, some Microsoft employees and previous speakers. (How do you become a new speaker? Do a great job somewhere else first -Tech Ed is not a beginner's conference. The people who get the call for content can propose great speakers who didn't get the call.) Now they've announced the technical tracks, which gives you an idea of what you can expect to see covered. There are no huge surprises here: I'm most interested in Architecture & Practices, Developer Tools, Languages & Frameworks, Windows Client and Windows Phone.

What will be next? Announcing the precons. They've already announced the price: $400 if you're attending Tech Ed, and $500 if you're not. They'll say what the precon topics are in early January. But by then, the super early bird discount will have expired. That discount will save you $300. So registering now is like paying only $100 for the precon!  If you can decide in January or February, when the precons are announced, you'll still save $200, so it's like your precon is half price. Either way, it's a great deal for a full day of deep training on something relevant to the kind of people who come to Tech Ed.

To be clear, I don't know what the precons are going to be. I will blog as soon as I know. But if you think there's a chance that spending a whole day with someone who really knows their stuff on a topic you need to know (especially one you never got around to learning and feel you should) would be worthwhile, then why not make it official, register for Tech Ed, and see what gets announced in January?

Kate




Wednesday, 21 December 2011 17:24:25 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 15 December 2011
The second part of my C++ Fundamentals course is now live on the Pluralsight site. This one covers:

  • The Standard Library - string, collections, and the like
  • Lambdas - perhaps my favourite C++ 11 feature
  • Exceptions - every C++ developer needs to understand exceptions
  • Understanding Legacy Code - here's where you'll find out how C++ earned its reputation
These four modules build on the material I covered in part 1:

  • Context - to set the stage
  • Tools - Visual Studio and Visual Studio Express
  • Fundamental Types
  • User Defined Types
  • Flow of Control
  • Operators
  • Templates
  • Pointers
  • Pointers, Inheritance, and Polymorphism
One of the things I like best about this material is that char* strings and all the special cases to deal with them don't show up until the last module of part 2. Ditto the kinds of arrays you may have first learned. The kinds of gyrations C-style arrays and C-style strings put C++ programmers through are a large part of why people think C++ is hard. With std::string, std:vector, and other goodies from the Standard Library, C++ really isn't hard. Honestly!

Kate

Thursday, 15 December 2011 16:51:31 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 01 December 2011

I'm in the middle of writing a number of SUPER COOL things that I will blog about as they finish. But interesting things happen even when I'm too busy to blog, and an interesting one happened today.

You know you should have a Pluralsight subscription, don't you? All the training you can watch (some of it by me) for as little as $29/mo? You can't go wrong. And if you're an MVP, or an RD, or a member of BizSpark, you don't even have to pay that! But if you don't have a free subscription and haven't paid for one yet, taking a free course is a great way to see what all the fuss is about.

Well, starting right now, you can do just that! Pluralsight and the Visual Studio folks are providing my Using Visual Studio course completely free. Just visit the Learn Visual Studio page at Microsoft and use the links. And if you like the course, consider getting a subscription - there are scores more that you will like.

Thursday, 01 December 2011 13:56:22 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 17 September 2011

Oh my goodness. What a week that was!

Here's how I thought I would do my first summary. Links to videos, discussions of sessions I either went to or tried to go to (more on that in a moment) along with my tweets from the ground, as it were.

My first real tweet Tuesday morning (8:37 California time) was announcing that my PluralSight C++ Fundamentals course had gone live. Then the keynote started. Here are my tweets and retweets along with the time into the keynote I said them:

  • 6 minutes: #bldwin totally dominating my stream SS doing a good intro to lean back computing
  • 37 minutes: RT @dseven WinRT API'S are natively built into Windows and built to reflect in different languages - C/C++ and .NET. #bldwin
  • 42 minutes: Starting at 8PM today, Seattle time, you can download all of the code that attendees at BUILD received. t.co/nuTuwga
  • 43 minutes: RT @wkrwk Did anyone notice the UI during the VSE 11 demo is the classic Windows UI? #bldwin
  • 48 minutes: #bldwin VS vNext demo is breaking twitter = no hope of following it all
  • 50 minutes: RT @andrewbrust Expression Blend is still Grey on Black. It could use a little "fast and fluid," frankly. #bldwin
  • 51 minutes: Store menu in VS?? #bldwin #wholenewworld
  • 58 minutes: RT @rhundhausen Desktop (#x86) apps can be listed in the #windows8 store as well #bldwin
  • 61 minutes: RT @ayus :))) RT @timheuer The Red Shirt is dominant even when not present. #bldwin @scottgu
  • 79 minutes, @EdgarSanchez retweeted @rickasaurus asking "I'm interested in hearing more about this new GPU offloading API. Any links? #bldwin" and I answered "Check my blog as the week goes on for GPU stuff"
  • 80 minutes: RT @marypcbuk Sinofsky: that gaming PC looks like ice. Angiulo: more like lava, it converts 700w of power to 4.7 teraflops like 3,500 Cray XMPs #bldwinPlatform for Metro style apps
  • 87 minutes: RT @Pete_Brown Dude just cracked open a laptop on stage and showed the electronics. Can't beat that #bldwin #geek
  • 100 minutes: RT @andrewbrust When will we admit Sinofsky's doing a great job? He's working hard, not just presiding. #bldwin
  • 120 minutes: RT @ronnipedersen If you have an iPad, don't watch the build keynote… It'll make you feel like you have bought a C64 #bldwin
  • 127 minutes: RT @jonbrasted It is a great day to be a Windows developer. #bldwin #trbbuild

The download surprised me, I didn't think it would be ready for people to try on any old hardware. And the hardware demo was very very good. And sure, I was on instant messenger back to the office saying "it's official" when the rumour was finally confirmed that we were getting tablets. But mostly, I really liked what I saw and wanted to know more, which is what keynotes are all about.

After eating something completely unmemorable, I found my way to the overflow room, always a little more casual and a good place to find "the cool kids". I had already met a number of old friends in the huge keynote session and before it, but here were more. I'll just give you the links to the Big Picture sessions. They are all very good.

  • 8 traits of great Metro style apps - a truly excellent session by a presenter who cares deeply about the topic. I tweeted a lot less during this one because it required more active listening.
  • Platform for Metro style apps - another very good session during which I just retweeted some other people's "Hey, this stuff is C++" reactions and a link to the session planner app for the phone, which I used heavily.
By this time people were starting to "get it" (including me) and the excitement level was rising. Here's just what I retweeted:
  • @coridrew #bldWin is really, really, really making me want to //BUILD/ Windows apps #BestConferenceNameEver #WhoKnew
  • @briannoyes Add ref from js project to C++ library - really empasizes this is running native #bldwin
  • +@fignewtron iPad limited in many ways to consumption - Windows 8 is production and consumption on many devices. Sales numbers decide winner. #bldwin
  • @mcakins Wow, the silence from Apple's camp is deafening! Windows rocks once more! Its 1995 all over again! #bldwin

One more session: Tools for building Metro style apps - I was getting tired at this point. It was a lot to take in. People were lined up the length of the convention centre for tablets. I knew there were enough for all of us, so I went back to my room to edit my pointers module for the PluralSight course so it could "tack on" to the end of the published course. While videos rendered, I had a little back and forth on Twitter with people who had noticed how much fun I was having, and others who were playing with their tablets already. I slipped out to pickup the tablet about 7:30 but didn't open it till the module was done. Then:

  • 10:48 pm: got major piece of work done ... yielding to temptation ... tablet here i come #bldwin
  • 10:57 pm: How's that for fast setup? Everything's installed.... Trying visual studio next
  • 11:11 pm: Just wrote a Win8 C++ app on the tablet with touch keyboard. Built and ran first time. #winning
That's right, I didn't even set up the bluetooth keyboard. People cite Visual Studio as an app you couldn't possibly use with touch. I wouldn't want to do it all day, but I did it! Then I played a bit more.

Day 2 started with another whole keynote. C++ was front and centre here. Some tweets:
  • 17 minutes: RT @seesharp 3D graphics debugging at the pixel level in DirectX. Unreal. #bldwin
  • 33 minutes: RT @bgervin killer strategy for MS to help developers make HTML apps for iOS and Android #bldwin
  • 34 minutes: RT @tpdorsey RT @EisenbergEffect […] in C++, you can write your own WinRT library, which when built, can be used by C++, C#, VB and JS.
  • 34 minutes: RT @jmorrill This new COM and C++ version is not _anything_ like what you think it is. From what I can tell so far...effing amazing!!!!
  • 49 minutes: Loved it RT @MichaelDesmond Zander shows off the new image editor in VS11 as he works on a C++ DirectX game.
  • 54 minutes: RT @shycohen Moving a VHD while the machine is running is cool. Moving a live VHD is even cooler! :) Will enable amazing things in the future. #bldwin
  • 82 minutes: most tattoos ever in an MS keynote
  • 95 minutes: RT @seesharp WOAH. Did not expect Steve Ballmer today. Everyone was starting to leave already. Woah! #bldwin
  • 97 minutes: RT @carafone 500,000 downloads of #win8 already! #bldwin
  • 98 minutes: RT @LACanuck And #Win8 was downloaded 500K times in 12 hrs RT @mashable: RIM Has Sold Just 490,000 PlayBooks - on.mash.to/nEu0dU #bldwin
  • 102 minutes: That's what these keynotes were missing! Turns out it's a great time to be a developer. I was worrying, no-one had told me yet #bldwin
  • 105 minutes: I've been paid to program since 1979. Keynotes tell me at least once a year it's a great time to be a developer. And they're right. #bldwin
Then it was time for simultaneous breakouts, and that meant choices. You can search the sessions list as well as I can. The C++ ones are not to be missed. These are happy people who are delighted to tell us what's been going on, and they're proud of it, too. At 3:13 I tweeted "Went quiet because i am massively engaged with C++ content in packed rooms. Small break between sessions to say "wow!" #bldwin #happycamper". The remainder of the afternoon was super confusing. People were jumping to conclusions, correcting each other, having opinions about the death of this that and the other. Because C++/Cx (the language extension you use to call WinRT) looks a lot like C++/CLI, people thought it was managed, but it's not, it's all native code and C++ Metro apps get a perf boost from that. The understanding that something amazing and powerful still has COM at the core began to grow. People were reporting trying to use Windows 8 gestures on their iPads and on nontouch screens, showing that the team has made some very intuitive choices. One tweet of mine I want to repeat: "Big props to Aleš Holeček for joining in the Q&A in the last C++ talk of the day when the questions got really Windows-y. Impressed. #bldwin". Even if you're not a C++ developer, download that session and watch the Q & A.

Day 3 started with being turned away from a C++ session, and so going to a different C++ session that was on at the same time. Several people from the C++ team made the trip with me, giving me a chance to tell them how impressive all this was. Meanwhile on mailing lists, people who weren't onsite and were 12 - 24 hours behind as they waited for session videos to go live were echoing the confusion and dismay of yesterday. It was hard to be patient with them. It's going to make sense, I wanted to tell them. Just hang in there! I took a small break from sessions to watch (and help with) the C++ part of Channel 9 Live (I am still waiting for links to the recording, because I couldn't hear everything they said and I want to) and then to Herb's second talk - again the room jammed full and dozens turned away, Don Box (who had earlier reminded us COM is still love) blurting out his admiration for Herb as a speaker and the great content, and the terrific line, "We protect against Murphy, not Machiavelli". What a time to be a C++ developer!

Day 4 kicked off with kind words from Daniel and a chance to hand out paper copies of the whitepaper I recently blogged. I got some quiet time with various smart people who told me their thoughts on all this. I'm still synthesizing it all. I also was downloading videos like a mad thing. I came home with 22 hours of video to watch and since then have grabbed another 15 or so. Some people began to realize they had over-reacted. Some excellent blogs began to appear - Doug Seven, for example, had several sensible things to say.

And then it was time to go. Glenn Ferrie tweeted "Writing C++ in the airport #bldwin #WinRT" and that summed up the week for me. I have a lot of watching, coding, thinking, reading and talking to do so I can establish what all this means. But hey, why not join me? It's a great time to be a developer!

Kate
Saturday, 17 September 2011 16:42:01 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 15 September 2011
Word is starting to get out about C++ AMP, which appeared out of nowhere at a conference remarkably few Microsoft developers were paying attention to, because it was a hardware conference. There was information available in June, enough to get some of us excited:

I got into this right away and have been playing with code and doing a little writing. This is the kind of technology that changes things more than you might think. By leveraging the GPU, your code might run 10x faster, 50x faster, or even 100x faster. And for you to be able to do that from C++, using familiar C++ constructs, and a debugger and profiler in Visual Studio? That means everyone can do it.

Well, not quite everyone. You do have to learn how to parallelize your algorithms. The syntax of using the GPU (or some other heterogeneous computing resource) is not hard at all. The computer science of knowing your work is data parallel can be hard. But let me show you "not hard". Consider this code to add a pair of one-dimensional array:

void AddArrays(int n, int* pA, int* pB, int* pC)
{
    for (int i=0; i<n; i++) 
    {
            pC[i] = pA[i] + pB[i];
    }
}

Compare that to this:

#include <amp.h>
using namespace concurrency;
 
void AddArrays(int n, int * pA, int * pB, int * pC)
{
    array_view<int,1> a(n, pA);
    array_view<int,1> b(n, pB);
    array_view<int,1> c(n, pC);
 
    parallel_for_each(
        c.grid, 
        [=](index<1> idx) restrict(direct3d)
        {
            c[idx] = a[idx] + b[idx];
        }
     );
}

It's all C++ and it's all pretty readable. And this code runs on the GPU and can be WAY faster (and use less power, meaning your data centre is cheaper or your battery lasts longer) just like that.

Recently Daniel Moth has published ten blog posts drilling into some details. They will help if you've decided to start using AMP and want to know how. But before you do that, you might like to read a little background on why heterogeneous computing matters, what other options you might have for doing it, and why C++ AMP is what you want to use. I've done a small whitepaper on just that and would love you to read it and let me know what you think.

Kate



Thursday, 15 September 2011 09:15:16 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 13 September 2011
I've been writing a course for Pluralsight that covers the fundamentals of C++ - types, expressions, basic syntax stuff, templates, pointers, polymorphism - and it has gone live! During BUILD access to it is free. It uses Visual C++ Express, so you don't need to buy any tools to follow along. Lots of buzz at BUILD about C++, so if you want to see if it's a language you could use, here's a great way to find out.

I have more material coming on this, and some Windows 8 - specific material. This is just background. If you think you need to get up to speed on C++, here's how to do it. Let me know what you think.

Kate

Tuesday, 13 September 2011 12:41:14 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 29 August 2011
For a long time now, whenever anyone asks me about support for particular C++0x (oh sorry C++11 :-) ) features in a given compiler, I've sent them to the list Scott Meyers maintains. The format is kind of strange because it's exported from a spreadsheet, but the information is invaluable.  If you'd like to see more compilers covered, try the wiki at apache. Scott does gcc and Microsoft Visual C++; the wiki adds compilers from Intel, IBM, Oracle, and so on. You  might be surprised to see the variations in coverage. Expect new versions to continue to add support as soon as possible.

Kate

Monday, 29 August 2011 16:08:39 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 27 August 2011
I was poking around on CodeProject looking at some developer interviews (they've started these up again with some interesting subjects, so check the recent links) when I spotted An interview with Microsoft's new Visual C++ .NET community liaison - and in March 2002, nearly a decade ago, that was Herb Sutter. Isn't the Internet a handy attic? Check out some of these quotes:

I hope to make a noticeable mark in the product.

C++ continues to be relevant, dominant, and in widespread and still-growing use. The C++ standard and standardization process also continues to be relevant [...] all the vendors, including Microsoft, are there together actively working on the next-generation C++0x standard whose work is now getting underway.

[...] the best numbers I keep seeing put the global developer community at something like 9.5 million people, and those using C++ at about 3 million of that. That's well ahead of Java in nearly all studies I've seen, by the way, usually by a factor of 1.5-to-1 or 2-to-1. [...] The reports of C++'s demise have been, well, "exaggerated."

C++ developers need power and know how to use it. I've always said you should use the best language for the job, and I've used dozens of languages professionally. Depending on how you count languages, I've probably used a dozen professionally in the past year. People who want to write efficient, tight, fast code often tend to choose C++ because it lets you get the job done with powerful code but without sacrificing efficiency. 

People who want mature, stable compilers and tools often tend to use C++ because it's been around a while and the tools and libraries are plentiful and solid. Commercial client-side application development with more than a few screens, most kinds of server-based software, and most kinds of libraries are all done more often with C++ than with other languages, according to the best numbers I've seen and according to my own experience as a developer and as a consultant who shows up at other developers' shops.

Nine and a half years later, I see nothing but good stuff there. I hope all my interviews stand up as well (though I already know they wouldn't) and I'm impressed at the ability to set a goal and meet it. What will the next decade bring?

Kate

Saturday, 27 August 2011 15:53:50 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 25 August 2011
The cone of silence that descended this summer is starting to fray a little. The Visual C++ Team Blog has an entry talking about Productivity features in the IDE. They're willing to talk about:
  • Semantic colorization - this is actually as much font face as it is colour, but anyway function parameters look different from locals, constants you #define'd look different from everything else, and so on.
  • Reference Highlighting - you've seen this in other languages I'm sure - when the cursor is in a variable name, other places in the code with that same variable name are highlighted for you. It can be very helpful.
  • Replacement Solution Explorer - I'm a huge Pro Power Tools fan, and if you've used Solution Navigator, you won't be surprised when you meet the new Solution Explorer. Combination Solution Explorer and Class View is the best way to explain it to a C++ developer.
  • Aggressive IntelliSense - something else you may be familiar with from other languages. I like it.
  • Snippets - oh, yeah!
Apparently there's still plenty more to come! Looking forward to it.

Thursday, 25 August 2011 15:43:15 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 23 August 2011
C++ is a great language for writing applications that will run on a number of platforms. There are compilers for many different platforms, and some powerful libraries you can use. Still, in the end your code needs to talk to the operating system, and that means that most cross platform applications have at least a few little corners where platform-specific code lives. The challenge is how to ensure that your Windows code runs on Windows, your Linux code runs on Linux, etc, without maintaining a number of different branches or hand-merging and splitting every time you deploy.

Being C++, an unspoken requirement in solving this problem is "be as fast as possible". Putting everything through a library and paying for extra indirection, looking up something that cannot change once the program has started executing, is not as fast as possible. You also want developer convenience and productivity. If you support five platforms, and something is the same on four and different on one, copying that code around for the four that are the same is not a productive way to behave. You would like a default behaviour, and then special code for special cases.

Michael Tedder has an intriguing approach using templates. As he says:

Instead of declaring a base interface class with virtual functions then deriving each platform with a different implementation, we declare a class with one template parameter — a platform ID — then specialize it to provide a different implementation for each platform.  The template class is then typedef‘d to expose the specialization for the platform ID being compiled to the application, allowing the implementation to be used without any virtual functions and also allow for inlining of functions as well.

He has some pretty convincing armwaving about using this not for just Windows/Linux/Android but for any hardware differences even on the same operating system - like what kind of graphics architecture you have or anything else that can't change at runtime. It's a good example of how the power of templates makes things possible that would always incur a runtime cost in any other language, or a significant burden on a developer to move code around building custom versions of an application. Worth a read!

Kate

Tuesday, 23 August 2011 14:55:55 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 21 August 2011
Here's an interesting project I came across:




The game is Mastermind, which many people already know. What caught my attention is that it's done in C++ and XAML. To quote Tyler Whitney's blog post,

The Mastermind code sample demonstrates how to create a simple Silverlight storyboard in Expression Blend 3, and then provide the code for the state transitions in Microsoft Visual Studio 2008. You can also see how to create brushes programmatically and how to add a title bar to a Silverlight-based app.

The code is on the Microsoft Code Gallery (only Microsoft Employees can publish there) and Tyler has been updating the article over the summer. Nice way to see how to combine two technologies some people would never thought have combining.

Kate
Sunday, 21 August 2011 14:41:42 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 19 August 2011
I have talked about plenty of C++0x (soon to be known as C++11 or just plain C++) features over the last little while. Here's a nice summary by Danny Kalev of the top features and why they matter. He covers lambdas, auto, the new ways to initialize instances (which hasn't been covered much elsewhere and contribute a lot to readability), suppressing default versions of functions (like constructors for example) or specifically requesting them (how cool is that?), nullptr (which I love because it eliminates a late night drinking argument about "what if someone #defined NULL to 3, would your code still work?", and rvalue references -- and those are just the language changes! His library coverage is super terse, but there are links in it if something (*cough* shared pointer *cough*) catches your attention.

There's no reason for a C++ developer to ignore C++11. This is big stuff, and reading these "what's new" lists from a variety of different people is essential for getting perspective on the changes. So read Danny's list!

Kate

Friday, 19 August 2011 13:51:01 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 17 August 2011
Everyone knows that C++ is the language to use when speed matters. That's just a known fact. So here's a question: if you solved the same problem in both C++ and C#, using the generally available languages (the Standard Library for C++, the .NET Base Class Libraries for C#) and you didn't happen to know which parts of those libraries weren't implemented very efficiently, just wrote your apps -- which would come out faster and by how much?

Think you know? Of course, the answer is "it depends". Debug or Release builds? Laptop or handheld device? Whose implementation of the .NET Framework are you going to use - Microsoft or Mono? What chip are you running on? Oh, and to what extent are you deliberately setting C++ options that emphasize runtime speed? Also, did you choose an algorithm with a lot of generics or templates? C++ has a huge perf advantage there, but lots of benchmarks don't use generics or templates since they are solving one specific problem.

An article on CodeProject leapt into all of this feet-first and did some measuring. Along the way, "Qwertie" proved a universal rule of the internet: nothing will get you the answers you seek faster than posting the wrong answer. Want to know the exact date Bewitched switched Darrens? Find a place that discusses old TV shows and post your belief that there was only one, or that there were seven, or whatever, and people will correct you while the ads are still loading on their copies of the page. When Qwertie posted the first version of the benchmarking article, commenters were quick to say "but you made this mistake, and that mistake, and forgot this other thing" all of which led to a much better article.

Definitely worth a read. It gets you thinking about the things that truly affect performance. Absent-mindedly deploying a Debug build is going to cost you far more performance than your language choice ever will. Using a library in a performance-sensitive situation without understanding whether the library is high-performing or not will too. It's chock full of graphs like this one:




Don't read it to find out the answer to "is C++ faster than C#?" - we already know that. Read it to find out how to make your applications faster.

Kate
Wednesday, 17 August 2011 16:59:15 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 15 August 2011
Months ago, I tweeted "Once you have a hammer, everything looks like a nail" with a link to an interesting article about the times you shouldn't use System.DateTime.Now - sure, you know how to use it, but it's not always the right tool for the job. Keyvan Nayyeri provides a number of alternatives for .NET developers who want to know when something happened, or how long something took. Definitely worth a read.

Then just weeks after that, Susan Ibach gave the SQL side of the story with a blog post about avoiding the DATETIME type if you're using SQL 2008. I saw the headline and thought "what? what else would I keep a date or a time in?". The answer is, either something smaller or something with more precision. Makes sense.

Goes to show, just because you've heard of System.DateTime in .NET or DATETIME in SQL doesn't mean there's no other way to solve your problem. Keep learning!

Kate

Monday, 15 August 2011 16:19:31 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 13 August 2011
When I provide links from this blog, I don't shorten them. When I get a link in an email, I always hover over it to see where it leads, in case it's a phishing email. But when someone emails you a shortened link, or tweets a shortened link, how do you know where it leads? It might be a phishing link. Or it might just be that cat video you've seen too many times already.

Years ago, Joshua Long wrote up a summary of how to see where a shortened link goes before you click it, and he's been updating it pretty regularly. He covers TinyURL, bit.ly and its relatives like on.fb.me, goo.gl, is.gd, and many I've never heard of. There's even a site you can paste a shortened link and get back what it redirects to. Not all links will be worth this treatment, but many will. It's nice to have a summary of how to check them before you follow them.

Kate

Saturday, 13 August 2011 13:56:47 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 11 August 2011
I'm pleased to see that Kenny Kerr is writing his C++ column for MSDN again. He's also blogging again and in a recent entry, he provides some really plain-spoken advice to people looking for guidance:

  • "You can of course still use MFC but I do not recommend it as modern C++ can do a better job of supporting the Windows developer."
  • "You should never again use auto_ptr for anything."
So there! I agree with these, especially the auto_ptr one. It was an attempt at a smart pointer that just wasn't smart enough. We have shared_ptr and unique_ptr now and they work in collections and are truly smart pointers. Use them and stop typing delete in your code entirely.

As for MFC, it does fill a need and I certainly wouldn't scrap a working MFC app just because the library is getting old (the facelift a few releases ago helped) but if I was starting a brand new application from File, New Project I would need a good reason to use MFC as my UI framework.

Kate

Thursday, 11 August 2011 13:29:29 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 09 August 2011

People often ask me what Visual Studio Ultimate offers that other versions do not. There's a handy chart on the Microsoft site:

The only problem is, if you don't know what "Architecture and Modeling" includes, it's easy to think there's probably nothing useful in there. So I was pleased to see a blog post by Susan Ibach from Microsoft Canada showing how easy it is to generate a sequence diagram from code, and how that can help you understand code you've inherited from a predecessor. That's one of the diagramming tools included in Visual Studio Ultimate.

Right click in some code, select Generate Sequence Diagram, set some options (does getting a property count? What about calls to methods of String or other .NET Framework classes?) and presto, you have a sequence diagram.




This sort of thing can save you a tremendous amount of time, and that means it can save your organization money. That's why some people buy Visual Studio Ultimate, after all. Having access to a tool like this is one of the ways I can "hit the ground running" when I join a project. If you need to do the same, make sure you're not ignoring a capability you already have.

Kate
Tuesday, 09 August 2011 13:14:15 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 07 August 2011

Like a lot of people, I got started on Facebook one way, but now I use it another. And like a lot of people, I haven't quite "cleaned up" from my original start. My rule these days is very clear - Facebook friends are actual friends. People I know and like. In fact, my rule is that we should have shared a meal - ideally a meal and some wine - to be friends on Facebook. If we worked together, or presented at the same conference, and we actually enjoy each other's company, chances are we went for dinner, or lunch, or a beer, at some point. It's a handy rule that makes my decision process easy. I get friend requests all the time from people I don't know, and I just ignore them.

With that audience, my Facebook posts can be pretty personal. What my kids are up to. Pictures of my family and my holidays. Details about travel plans, including whole-family trips that leave my house empty. Sure, I know that what you put on Facebook can be forwarded and shared elsewhere. But I know who I'm sharing with and I trust them to have my best interests at heart. I don't connect my Twitter statuses (which I know are public) to my Facebook ones (which are more private and less frequent) or vice versa.

What I've set up, for people who use Facebook as a news hub, is a public page. Here I post when I'm speaking somewhere, or when a video or article is published. If you "like" this page, my announcements will end up in your news feed. So if you added me on Facebook and never heard back, use the public page instead. I don't post links to all my blog entries there, because I figure you can always subscribe to this RSS. I don't post anything personal either, so if you don't actually care where I'm spending my holidays, you might want to like that page even if we're already Facebook friends.

Kate

Sunday, 07 August 2011 12:50:03 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 05 August 2011
It's worth explaining a few things about me and Twitter. First, I'm @gregcons. There is someone with @KateGregory but it's not me, and whoever it is has never tweeted. I follow several hundred people and several hundred people follow me.  I don't "follow back" when people follow me, unless I happen to recognize the name when Twitter emails me about it. I look at the tweets of people who retweet me or @ me (or who people I follow retweet, or who people I follow are in @ conversations with) and if the tweets look interesting, I follow for at least a while.

I tweet a mixture of personal ephemera (wow, what beautiful weather we're having today), personal stalker-bait (I'm at place x with person y, hey whoever sure was great seeing you today, wow my child just did thing x in place y), and actual technical stuff. The technical stuff might be my own blog entries, my own material being published (a PluralSight course, a Channel 9 interview, a TechEd talk) or a link to someone else's blog entry/interview/talk that I think is interesting. If you want only the technical stuff, my public Facebook feed (more on that in an upcoming post) is a better choice.

I unfollow people for a variety of reasons. People who post a great volume of tweets that are in a language I can't read, or are about things that don't matter to me, just clutter up the stream, so I will unfollow. It's not a value judgement and it's not about the ratio of useful to non useful, just the volume of non useful. (Non useful includes what your cat just did, what airport you just left or arrived at (a few close friends excepted), what you are eating/drinking unless it's inspirationally yummy, coded/veiled potshots at your coworkers, and updates on your car repair or the planning of your wedding.) Since there's a lot of overlap among the people who care about the same stuff as me, I find that when these people post something useful, ten of my friends retweet it anyway, so I won't miss it. People who just post the same thing over and over because they read somewhere that Twitter is ephemeral and people might miss your announcement at 8am so you should do it again and noon and again at 5pm and so on I will usually unfollow also. I don't keep track of who is unfollowing me and I'm not offended if I realize someone has - we all use these things differently and one person may unfollow for too much personal stuff and another may unfollow for not enough personal stuff or not different enough from my other feeds.

I mostly use MetroTwit. This lets me have search columns on myself, my @mentions, and whatever topic I'm interested in according to the news of the day or the event I'm attending. I have a Twitter client on my Windows Phone and A Quick Tweet by Scott Cate as well - it loads super fast because it's for sending tweets, not reading them. I also use the web page from time to time. I always check email before Twitter, so it's not a great way to get hold of me in a hurry.

I don't blog my tweets. I often tweet my blog posts. If something deserves to stick around for a while, I may quickly tweet it, then later write up a blog post about it. Other than that, there's little overlap.

Twitter has turned out to be hugely valuable to me. I find out about breaking news faster than Google News, I hear technical rumours and announcements there first, and I keep in touch with technical friends the world over, as well as my own neighbourhood and my family. I've started my day with smiles from jokes or from just seeing what people I care about are up to, and I've kicked off business conversations, too. It's part of my work rhythm now and it's pretty much the only place I put personal stuff these days. If you're not part of it, consider giving it a try for a week and see what changes for you.

Kate

Friday, 05 August 2011 10:55:18 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 03 August 2011
Here's an article in a pretty mainstream publication - the Economist - that explains why concurrency matters. I used to say "the future is concurrent" but that was then; this is now and it's the present that's concurrent. As the article says,

What was once an obscure academic problem—finding ways to make it easy to write software that can take full advantage of the power of parallel processing—is rapidly becoming a problem for the whole industry. Unless it is solved, notes David Smith of Gartner, a market-research firm, there will be a growing divide between computers’ theoretical and actual performance.

I'll have some more concurrency material over the next little while in this space. Things continue to change pretty rapidly. If you haven't been thinking about concurrency, now's a pretty good time to start.

Kate


Wednesday, 03 August 2011 12:12:50 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 01 August 2011
I consider myself a pretty skilled debugger, and reasonably familiar with the things you can do in Visual Studio (My Visual Studio course Part 1 and Part 2, for example.) Conditional breakpoints, tracepoints in C++ and in C#, breakpoints that only break every 10th time they're reached, customizing the data tip that shows when hovering over one of your own types, making data tips transparent, and plenty more have all been covered here in the blog over the years. But I still come across things I didn't know before, or didn't try before.

Take this blog post by "Daan-Nijs" about the abilities of the watch window. I knew the first one, but the rest are new to me:

  • Changing a value in the watch window
  • Changing a type in the watch window
  • Inspecting an array in the watch window
Then there's re-running or skipping code by dragging the instruction pointer - I only knew I could right click somewhere and say Set Next Instruction. Finally he includes a reminder of how to enable Edit and Continue. All this is for C++, but you're welcome to give some of the techniques a try in other languages and see what happens. Being a faster and more productive debugger will rocket you up the overall productivity leagues like nothing else.

Kate

Monday, 01 August 2011 11:57:45 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 29 July 2011

Since Tech Ed came and went during my blogging hiatus, I didn't get around to providing links to some of the sessions you might want to see. It's time to correct that omission:

There were other sessions I attended, including a great interactive session that was not recorded called "C++ Renaissance at Microsoft: How the C++ Developers Can Get Involved" with plenty of conversation between Microsoft people and native developers. You might want to do a little searching on the main Tech Ed Video site to see what interests you.

Kate

Friday, 29 July 2011 17:51:36 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 27 July 2011

Today saw the release of the first episode (naturally, Episode 0) of GoingNative on Channel 9. As the introduction says:

GoingNative is a new, monthly show on C9 dedicated to native development and native developers, with an emphasis on modern C++.

You know there's been a lot of talk about the C++ Renaissance. I'm happy to see that phrase get picked up, and I've got another one for you: Modern C++. Or as some folks like to say "not your father's C++". If you think C++ means manual memory management, strings as arrays of characters and a strange cast of global functions, and longing for a library or framework that might rival what .NET has to offer, then you haven't been keeping up with C++. The good news is that it won't take you long to catch up - shared_ptr and unique_ptr, the Standard Library, lambdas and other Modern C++ goodies are easy for both managed developers and longtime native developers to learn.

In Episode 0, Charles Torre (longtime C++ friend) and Diego Dagum (C++ Community lead, blogger, and Tweeter) lay some groundwork and, of course, show code. It's always about the code, right? Then, they ask you to get involved. Whether you're someone who wants to learn about C++, or someone who wants to make sure something about C++ gets taught to others, speak up! And yes, that includes topics on non-Microsoft platforms. Email C9GoingNative - they're using hotmail - or on twitter, follow or talk to @C9GoingNative. (There's a Facebook group, too - whatever way you like to interact is welcome.)

But wait, did that sound like a whole episode? Nope, they grab the camera and head over to see Ale Contenti - one of my favourite team members and one I've done interviews and sessions with before. His talk gets technical fast, which is one of the things I like about him! I too have a soft spot for 6502 assembler :-) and find template meta-programming a bit of a write-only technique. I, too, like "the power the language gives you to make the language bigger with libraries" and think that's part of the appeal of C++ for me. Well, that and the power and performance and control, of course. Are there downsides? Well, there's what Joni Mitchell called "the crazy you get from too much choice" - C++ gives you many ways to do everything, according to your circumstances, and having to decide how to do it, or having to connect two components that made different choices about something as simple as how to represent a string, can be frustating. As well, it's great to be in control, but that does mean that nobody is looking after you. If you're inexperienced (and sometimes, even when you're not) you can make dangerous choices and, as we like to say, shoot your foot off. Security holes and vulnerabilities are important and C++ will let you write bad code, so you need to be aware of best practices. Both Ale and Diego address these points, and you can expect to see more of that in time to come - especially if you ask for it!

Looking forward to next month's show already,

Kate

Wednesday, 27 July 2011 19:55:44 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 25 July 2011
So, how cool is this? Guy Smith-Ferrier is going to speak at the East of Toronto .NET User Group meeting in August. Why? Because he's the kind of community-oriented person who takes time out of a transatlantic family vacation to speak at a user group, that's why. And his topic sounds like science fiction, but it's real:

Mind Control Your Computer In C#

No really. This isn’t some clever session title. I’m really talking about controlling your computer with your mind. I’m not making this stuff up. This is real. Today. You put on a headset, you use a C# SDK and you control your computer with your thoughts. Yes, you are reading this right – you mind control your computer. It is a reality and it is possible today. Once you’ve gotten over your disbelief consider the applications. Applications for the physically impaired alone are a whole revolution. Not to mention the possibilities for gaming. Want to be shocked and amazed ? Come and see this session.

The meeting is set for August 24th at the Whitby main library. There's something awry with the website at the moment, and everyone who's talented enough to do anything about it is on vacation, leaving only me, but trust me, we're having a meeting and it's going to be a doozy. Guy is a great speaker - he even wrote and recorded a series of videos on how to be a great presenter. He speaks at TechEd and runs events in the UK. And it's our tremendous luck that he'll be in our neighbourhood this summer so make sure you join us to see this session!

Kate

Monday, 25 July 2011 17:38:38 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 23 July 2011
So, you're a C++ programmer? You've written a Windows app or two in your time? Let me propose a little challenge to you. Write one. Only start with File, New and don't let Visual Studio generate any code for you. Write each line of it. Then explain it. No MFC, No ATL. That's what was asked of me a while back, and the result is a six-paper series that has finally arrived on MSDN.

I have to say I really enjoyed the simplicity of the smallest Windows program possible. I also enjoyed making it better, which included making it more of a C++ program and less of a C one. I also covered a little Direct2D, a little COM, and a little "here's some other stuff you're going to want to read." If it's been ages since you wrote a Windows program in C++, or wrote one that wasn't all covered in barnacles from frameworks and libraries you might not want to rely on for simple things, I really suggest you give this series a read - it won't take long and you can use Visual C++ Express if you like - the first chapter includes links and instructions for getting all the tools you need. Better still, if you've never written a Windows in C++, why not give it a try and let me know what you think?

Kate

ps: Never blog that you're not blogging. Never blog about why you're not blogging, no-one cares. Just blog. Right?

Saturday, 23 July 2011 00:39:47 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 02 April 2011

Here's yet another C++ team member on Channel 9. Boris starts out reviewing some "old days" things including the Intellisense background I pointed to recently. He explains in more detail why it's so hard to be the C++ team, needing to build an IDE for a language they can't control and that is used by such widely different people. I love that Boris appears to have framed and hung on his office wall someone's comment on a blog post. If you ever wondered whether what you type can make a difference, there's your answer.

With the history and reminiscing out of the way, Boris warms to a topic I haven't heard on Channel 9 before (though I have been hearing it in person) and that's the importance of C++ and specifically the Microsoft toolset, Visual C++, to the games industry. He also talks about how the games industry can be important to all the other developers as well, which I find intriguing. Definitely worth watching and not a rehash of the other C++ videos you may have seen lately.

Kate

Saturday, 02 April 2011 11:07:01 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 31 March 2011
You go to Tech Ed to learn about technology - developer tools, sysadmin tools, platforms like SharePoint or Windows Phone. But there's more to your work than the nuts and bolts of how to solve a technical problem. Do you use social media effectively? What would an effective use of Twitter or Facebook look like, anyway? Are jobs shifting because of technology? How important is cross-platform development? How important are new platforms? How do you react to big changes in your technical world and direct your own career?

Well, there's a Tech Ed precon Sunday evening that covers that exact topic. And look who's involved: Stephen Rose (Windows Community Manager), Zeus Kerravala (Distinguished Research Fellow and Senior VP, Yankee Group), Richard Campbell (Co-founder of Strangeloop Networks, co-host of .NET Rocks!, host of RunAsRadio, Microsoft MVP, Microsoft Regional Director), Michael Otey (Senior Technical Director for Penton Media’s IT & developer publications, author of SQL Server Developer’s Guide series from Osborne-McGraw-Hill), Tim Huckaby (Microsoft Regional Director, Founder of InterKnowlogy), Michele Leroux Bustamante (Chief Architect with iDesign, Microsoft Regional Director, Microsoft MVP, author of Learning WCF (O’Reilly)), Jennifer Marsman (Principal Developer Evangelist for Microsoft, Central Region), Tara Walker (Microsoft Academic Developer Evangelist), Sean Deuby (Technical Director, Penton Media’s Windows IT Pro Magazine, Microsoft MVP), Paul Thurrott (Senior Industry Analyst, Penton Media’s Windows IT Pro and Supersite for Windows; author of Windows Phone Secrets), John Willis (VP of Training & Services, Opscode), Laura Hunter (Principal Technology Architect for Microsoft IT’s Identity & Access Management team), Yung Chou (Microsoft Senior IT Pro Evangelist, East Region) and Barbara Yamauchi (Microsoft IT program manager for developer tools and IT lifecycle management). Wow! And this is an interactive panel discussion, so you can help to shape the conversation.

There is a small fee ($99) and you have to arrive Sunday afternoon so you'll be able to attend. But it looks like a heck of an evening! Glad to see so many RDs and MVPs on that list.

Kate

Thursday, 31 March 2011 07:50:40 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 29 March 2011
The fourth of my Windows 7 development screencasts - Trigger Started Services - has been published. It uses the recipe (also recently published on Code Gallery) to simplify writing a service in managed code that starts only when it is notified by the operating system of a particular trigger. In my screencast I use the example of a USB device being plugged in. There are plenty of other triggers you could use. Adopting a trigger-started approach makes your service:
  • easier to write and install. No sleeping, looping, having a config file to say how long to sleep for, etc.
  • use less CPU when there's nothing to do
  • respond more quickly when there's something to do. It's not in the middle of sleeping for 10 minutes or 2 hours -- it is started the moment the trigger happens.
It's a win all around and if you have a service you should take a look at the available triggers and see if you can convert yours.

Kate

Tuesday, 29 March 2011 07:31:10 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 27 March 2011
The screencasts for restart and recovery in native and managed code went live before the associated recipe was published. Now the recipe is on Code Gallery ready for you to use. As it says there:

This recipe provides guidance and an easy way to start using these great features in your application, removing any complication of how and where to store your application data.

What’s in the box?

This Restart and Recovery recipe includes:

  • Complete source code of the recipe and its samples
  • Managed .NET assembly
  • C++ header and class files to be included in your C++ application.
  • C#, and C++ test applications
  • Documentation
Give it a try, please!

Kate

Sunday, 27 March 2011 07:21:53 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 25 March 2011
Charles was busy during MVP summit! In addition to interviewing me, he sat a number of MVPs down to talk about C++, being an MVP, and the like. They're from all over the world and they have widely different jobs, but you can see how much they love this stuff. And please notice -- they span a wide age range, too. The stereotype of C++ as the language for the grey haired developers is just a myth. If you wonder why anyone still uses C++, and why it's going to be very good for this industry that there are still C++ experts around, watching these videos will be an eyeopener.

By the way, Alon is also an RD.

Kate

Friday, 25 March 2011 07:15:03 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 23 March 2011
As you may have noticed the C++ team is really stepping up the communication lately. There have been hours of Channel 9 videos (I pointed you to some good ones) and Diego has been blogging a lot. Recently he did a long post (with references!) on Intellisense in C++/CLI - why it wasn't in Visual Studio 2010, why it didn't sneak in with SP1, and so on. Here's a level of transparency you just don't see these days:

...we simply underestimated the amount of work it would take to implement C++/CLI in this codebase, and we couldn’t change our plans by the time we realized it. ... In the end it was one of those hard cuts you have to make when dealing with the real world resource and schedule constraints. It turned out that the work was also too much work to fit into SP1. As soon as we wrapped up VS 2010, we started work on C++/CLI IntelliSense, but it wasn’t ready in time for SP1. We realize this wasn’t what you wanted to happen and an explanation doesn’t help you get your work done if you are affected by this, but we want you to know the truth.

Wow. Makes perfect sense and is actually a nicer reason than "we think you don't matter". Yet so few teams will hold their hands up and say this. It happens. It happens to every one of us pretty darn regularly. Kudos to the C++ team for not pretending it was all part of a plan from the beginning to leave it out. And do read the blog to understand just how much they were taking on.

Kate


Wednesday, 23 March 2011 07:04:54 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 21 March 2011
If you listen to .NET-related podcasts, you've probably come across the Pluralcast before. David Starr talks to a wide variety of people and the passion shows, along with the skills. Last year I appeared on the 'cast myself, talking about Visual Studio extensions. Now I'll be doing a small appearance regularly - still talking about Visual Studio and some helpful extensions or whatever else I want to share. There have been three of these so far:

  • #36 - main guest is Scott Allen
  • #37 - main guest is Craig Shoemaker
  • #38 - main guest is Liam McLennan
I hope you enjoy the whole episodes, and learn a little something from them.

Kate

Monday, 21 March 2011 15:31:08 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 19 March 2011
I'm on Channel 9 a lot right now - partly because some things are getting published that were done a long time ago, and partly because being on campus for the MVP Summit makes it convenient to be interviewed. I love talking to Charles because he really cares about the answers to the questions he asks. So we talked for half an hour about what it means to be an MVP, what C++ is useful for, what I like about C++0x, and that sort of thing. Since Charles started things off by mentioning previous conversations, let me toss in some links to those too - here's the Barcelona conversation (backstory here)and on the couch with the C++ guys (shorter backstory.) You can watch my hair change colour if you watch those oldest-to-newest. Diego was also nice enough to blog about this interview, too, as was John Bristowe of Microsoft Canada.

Thanks for the chat, Charles!

Kate

Saturday, 19 March 2011 19:51:23 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 15 March 2011

You know I blog here a lot about Windows 7 goodies including taskbar integration. One of the questions I get pretty often is how to use tasks to communicate with the running app, such as changing your status, sending a new email, that sort of thing. I mentioned in an aside on another post that this requires launching some other application that communicates with the first instance.

If you'd like to do that, it just got a little easier with the release of a "recipe" from Microsoft that packages up this concept and lets you use it with very little extra code. As it says on the Code Gallery page for the recipe:

This Taskbar Single Instance Recipe allows developers to easily develop applications that use "Messenger Like" tasks that change the state of the currently running instance, allowing it to react to incoming state-change notifications and act accordingly.

This Recipe includes:

  • Native (C++) and managed (.NET) Source code for the Single Instance library
  • Well documented native (C++) and managed (.NET) samples
  • Documentation

To compile and run the recipe and samples the following items are required:

  • Microsoft Visual Studio 2010
  • Windows 7 – Note that only the samples require Windows 7. 

Yes, this recipe is actually two recipes - one native and one managed, and comes with whitepapers explaining how it's done. I mentioned this in my Tech Ed Europe talk on Advanced Windows 7 development and it's finally released for you to use! Enjoy!

Kate

Tuesday, 15 March 2011 19:18:48 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 13 March 2011

Whenever new stuff appears in the Microsoft universe, native C++ developers can get to it first. That's because they can easily call Windows APIs or COM interfaces or however it's implemented. Managed developers need to wait until the new stuff gets added to the .NET Framework or to a particular managed technology, like WPF. Take taskbar integration, for example: adding tasks and destinations, getting a progress bar or icon overlay on your taskbar icon, and so on. From the very beginning you could interact with the taskbar from native code by making Windows API calls. The Code Pack is a popular managed wrapper from Microsoft that enables those interactions from managed code such as Windows Forms applications. In the early days of Windows 7, WPF developers also used the Code Pack - but now those capabilities are in WPF itself.

Does that mean that native developers get nothing new? On release day they gain the ability to call those APIs and that's that? Of course not. Native developers use frameworks and libraries to build their applications, and those frameworks and libraries in many cases are wrappers for Windows functionality. One of those is MFC and you should know that MFC has support for Windows 7 functionality.

If that's news to you, then watch my screencast on Channel 9 in which I cover jumplists and overlays with lots of demos. It's just one or two lines of code for each of these. Users expect their apps to behave like this. MFC makes it simple.

Kate

Sunday, 13 March 2011 18:58:23 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 11 March 2011

Writing samples and demos is tough. You want them to do more than say "Hello World" or draw a red square, but you want them to be simple enough that people can see the "new stuff" you're demoing (WPF, or Windows 7 taskbar integration) or multi-touch) in amongst the real business logic. It would be neat if they did something actually useful, because then you might keep it around on your machine and use it, but most things that are useful are too big to be demos.

Well here's a sample that lands in the sweet spot: Tasks.Show. You put in your tasks, things from your ToDo list, along with time estimates, and it keeps track of them and shows them to you. I like this view:

It uses touch to let you flick tasks into categories, and has taskbar integration to let you open a specific category, add a task, and so on. All the source code is available so you can see how it's done - it is a demo, after all. You can get more details and screen shots on the Windows Team Blog. Check it out!

Kate

Friday, 11 March 2011 10:31:40 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 05 March 2011

The pace of C++-relevant video releases on Channel 9 sure feels like it's increased. I watched a few recently (I download them and then watch them in my copious free time) and they happen to fit well with some links I've been carrying around for a while, meaning to share.

Let's start with Herb Sutter talking with Erik Meijer about C++ and whatever else they felt like talking about. The resulting Channel 9 video is a must-watch, and for once I didn't crank it to 1.5x or 2x speed as I usually do with video interviews. When they get into the part about deriving future<T> from T, you might want to pause it and go read Thomas Petchel's post on automatic type deduction. And during the lambdas-and-closures part, let me recommend a quite old post by Eric Lippert and a followup to it that discusses how these things work for C# and how it's a little different in C++.

Then another two-smart-people talk, with Mohsen Agsen and Craig Symonds. It's great to get the high-level perspective of the value of C++ to any software firm. I love that phrase, dark matter, and you may have heard it from me before. After you've watched that one, you need to go immediately to Tony Goodhew's interview where he puts some numbers out that will drop your jaw.

I know, I'm asking for like 2 hours of your life. Even if you don't develop in C++ any more, you should watch these three videos. You really should. Call it industry research if you like. And if you wish you knew a C++ developer, you do :-)

Kate

Saturday, 05 March 2011 11:49:44 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 03 March 2011
The PDC was a little different last year. It was held on the Microsoft Campus, meaning that only a thousand people could attend, when usually it's 5 times that. But it featured an amazing player that opened the whole conference up to the world. I was one of the 100,000 (yes, 100,000!) who watched online. If you are interested in some of the technical details, there's been a whitepaper released. You can read about it on the Windows Azure Team Blog. Makes sense, since Azure was a big part of the solution.

Kate

Thursday, 03 March 2011 11:41:55 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 01 March 2011
Are you doing Scrum? Do you use TFS? Then you should check out Urban Turtle. Brian Harry did (yes, that Brian Harry) and he really liked it - his blog post makes a great introduction. It gives you rich visibility onto your project and lets you work with it your own way. You can download a 30 day free trial to see if there is a good fit with the way your team fits and works.

If you like it, let me give you a tip. If you go to DevTeach in Montreal (which is so worth your while to attend on its own) you will get a 5-user license of Urban Turtle, which means you're effectively going to DevTeach for half price. And you can hear me speak on Windows 7 development, too.

Kate

Tuesday, 01 March 2011 22:55:42 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 27 February 2011
Here's an interesting blog post. Say you use MFC and are wondering whether anything was added to it in a particular release. What tool would you use for that? How about CppDepend? If you've never used it, seeing how it provides the illustrations for this post should show you the appeal of it. Either way, you're going to learn something.

Kate

Sunday, 27 February 2011 22:11:52 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 25 February 2011
Pete Brown is a WPF guy and I've learned a lot from him. Now I get to watch him learn. Recently he wanted to write an add-in for IE and he decided to do it in C++. You can see how he struggled through it and get some tips of your own in the detailed post he wrote about the experience. I agree with the commenter who said you should only run Visual Studio as admin when you know you're going to do a step (like registration) that requires elevation, and you should run non-elevated the rest of the time, and the one who tweaked the string code to take advantage of being in C++. If you have some tweaks of your own, stop by and add a comment.

Kate

Friday, 25 February 2011 18:20:58 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 23 February 2011
People talk a lot about work/life balance. There really is no such thing. They never deserve 50/50 which is what balance implies. But I read an interesting point in this summary of (and link to) a TED talk: over what period of time do you want to achieve some ratio of "work" and "life"? Every day? Most people prefer their weekends to have more "life" than "work". Over every individual week? I think we all would like to have weeks of vacation with no work at all, and most of us accept the occasional "crunch week" with more work than is comfortable. Over a 50 year period? That's not realistic at all. Think about that a bit. Then watch the video.

Kate

Wednesday, 23 February 2011 18:10:38 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 21 February 2011
If you've been to a developer event this century, or if you spend any time on Channel 9, you've probably seen Beth Massi. I read an interesting interview with her by Carla Fair-Wright where she talks about what Microsoft is like, advises young women, and plugs LightSwitch. Did you think she was the I-was-programming-in-BASIC-when-I-was-8 type? Well now you know.

Kate

PS: the whole series is worth a read.

Monday, 21 February 2011 18:03:11 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 19 February 2011

Imagine an app that you have running under Windows 7 as a desktop app. Now as much as you are enjoying the Windows 7 features it uses, you know there is some functionality there you could offer to people another way. Do you have to just start over to make it into a phone app? What if you want it in a browser? If you write the desktop part in WPF, will that be something you can use when you create the Silverlight code for the browser or phone apps? Well, check this mission statement:

Our goal was to enable seamless and easy sharing of decks among users across different computers. The idea was simple, upload the deck to the cloud, and let the user send a message to whomever the user wants to share the deck with. That message will include a link for the receiving party to click on to launch a web browser and run a Silverlight application that can “play” the shared deck. The Silverlight application dynamically downloads the shared deck and displays that single deck just as it would be displayed on the WPF application. At this point the user can launch any of the 3 games: Learning, Matching, or Memory, with the same user experience as the WPF application.

Sounds like just what you might like to do in some of your apps, doesn't it? Oh yeah, and would you like the code? And a blog post explaining the code? And a video on Channel 9?

Happy to help!

Kate

Saturday, 19 February 2011 17:53:09 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 17 February 2011
One of the marks of true expertise and skill is making something very difficult look easy and effortless. It can take a long time and a lot of work to give the impression that something is natural and everyday for you. It takes even more work and practice to make something look spontaneous and unrehearsed. This is as true of giving a technical presentation as it is of playing a sport or a musical instrument, dancing, singing, or cooking. Oddly, some people seem to think that presenters are all "just naturals" who don't practice, rehearse, or plan.

There are two problems with thinking that. The first (and the smaller one) is that it doesn't give enough credit to the hours of work that goes into producing that "off the cuff" presentation you so enjoyed. The second (and by far the bigger one) is that it leads you to think that you couldn't be a presenter. And that would be a loss. Presenting, even in the smallest of contexts, makes you better at whatever you're presenting about. If you do a presentation on Windows Phone development or Visual Studio Extensibility or the like, you will know that subject better when the presentation is over. It also generally helps your career, gives you a chance to meet people and help them, and if you're lucky will also get you a chance to travel to marvelous places and meet even more people.

One of the terrific people I've been able to meet thanks to the speaking I've done is Guy Smith-Ferrier. He's really good. He's always been generous with slides and downloads on his website, and he really knows his stuff. And now he's made a series of videos to show anyone - really, anyone! - just what it takes to be a presenter. He covers a number of things I've never seen in talks of this kind, like choosing your topic wisely. They total a little over 2 hours and are well worth your time if you're thinking of trying presenting or (more likely) you wish you could and think you can't. You can watch them on the UGSS site or download them if you prefer (search for speaker.)

Once you've watched these, you will understand what it seems the great speakers just "happen" to be doing. And you can do those things too. You can be a presenter if you want - it's no harder than learning to code. Guy's straightforward way of laying down the truths behind great presentations will take you where you want to go.

Kate


Thursday, 17 February 2011 02:14:42 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 15 February 2011
Did you watch the whole "Introduction to STL" series on Channel 9? As I said when part 10 appeared, there is no universe in which this series is really introductory. So when I tell you that Stephan has now started an advanced series, you need to take it seriously. Here's how Charles entices and warns us:

This series, Advanced STL, will cover the gory details of the STL's implementation -> you will therefore need to be versed in the basics of STL, competent in C++ (of course), and able to pay attention! Stephan is a great teacher and we are so happy to have him on Channel 9, and C9 is the only place you'll find this level of technical detail regarding the internals of the STL. There are no books. There are no websites. This is Stephan taking us into what is uncharted territory for most of us, even those with a more advanced STL skill set.

Me, I'm enticed. And I'm watching. You should be too. (But watch the first ten first, or the minute you start to feel lost.)

Kate

Tuesday, 15 February 2011 20:52:02 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 13 February 2011

I've written about "banned APIs" before - let's start with this link and if you read it, it has a link to a previous post, and go on and follow that link and it has a link to a previous post and so on and so on. To summarize, there are three ways to ensure you are not using banned APIs in your C++ app:

  • You can use the extension I blogged about. It highlights places in code you're editing or typing that calls a potentially unsafe function. That's great if you're typing fresh code,not so great if you just inherited a million lines of C++ and aren't sure if it's vulnerable to buffer overflow attacks.
  • You can compile with /W4, and deal with all the C4996 warnings (and use code analysis or code review or generally find the places that someone has suppressed that warning.)
  • You can include banned.h, which controls whether these unsafe functions are marked deprecated or not
None of that has changed. What I wanted to point out was a recent blog entry from the SDL team alerting us that banned.h has been updated, and I also spotted a video on TechNet (why a developer-focused thing is there I don't know) that shows it in action. If you write C++ code, you should be using one or more of these techniques.

Kate
Sunday, 13 February 2011 20:44:32 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 11 February 2011
If you're a Canadian and you've been thinking of playing around with the Windows Phone Developer Tools, now would be a great time to get started. Microsoft Canada is running something they call the Great Canadian Apportunity, and the grand prize is $10,000. There are plenty of other prizes, too - Xboxen, Kinects, passes to Mesh and more. Joey has some of the details on his blog, and you can check out the main site to get started!




It's on till April 30th. You must be a resident of Canada and over 18 (younger developers need parental permission), not work for Microsoft etc.

Kate
Friday, 11 February 2011 11:57:00 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 09 February 2011
At the end of January, the busy bees at All-in-One (OK, they're not bees, they're Microsoft engineers) released even more samples including Azure, setting a hotkey that Windows will route to your app even if it doesn't have focus, detecting if the machine has been locked (with Windows+L) or unlocked, downloading multiple files with ftp, and many more. As always these are in VB, C#, and almost all of them are also in native C++.

In fact, there are just so darn many samples right now that it's getting harder to find the one you want. What a great problem to have! So they've released a sample browser to help you search and browse and generally get your hands on the code that will solve your problem and move you on to the next part of your day.

What are you waiting for? Go get it!

Kate

Wednesday, 09 February 2011 11:41:05 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 07 February 2011
The architectural tools in Visual Studio Ultimate are fantastic. Often, people think they're just for for managed code, though. Not so! Here's a page on MSDN that shows how you can use Layer Validation to validate your architecture. You'll need the Modelling and Feature Pack and parts are a little fiddly, but it can be done!




No reason to assume the architecture tools are not for C++ developers, too.

Kate
Monday, 07 February 2011 11:08:49 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 05 February 2011
Adding concurrency to an existing application can be remarkably simple. I have a demo where I change a for loop to a parallel for and -poof!- the app gets faster. The hard part of that demo is knowing that a given loop is ok to parallelize, that it doesn't matter what order things are done in as long as they all get done once. And, of course, knowing that the loop in question is responsible for your execution time. Making the right decision is the hard part - typing the code is easy.

With that in mind, you need advice about choosing your structures and algorithms. Here are some handy things that may help you. On the native parallel programming blog they will help you choose your parallel sort. And on the VC++ blog, it's all about the parallel containers. If you're going to write parallel code (and let's face it, eventually you will) you need to read this sort of thing.

Kate

Saturday, 05 February 2011 10:42:30 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 03 February 2011
Here's a useful blog entry from Nish that shows how simple it can be to handle what at first seems an intractable problem - how to get an unmanaged array into a managed array. The marshaller doesn't know the size of the array, but as long as you pass the length as a parameter, you can create the array yourself and copy the contents over. Not hard at all, once you know.

Kate

Thursday, 03 February 2011 10:25:52 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 01 February 2011

Like a lot of folks, I have a Windows Phone and I enjoy it a lot. I've filled it up with (free) games and they pass the time quickly when I have to wait in line or otherwise have an empty minute or two. C++ MVP Marius Bancila had the same experience, but unlike me he responded by writing a version of the game in MFC so he could play it on his own PC as well as on a phone.

You can get the source from his blog post, and another post and its comments (mostly in Romanian - Bing Translate is your friend there) have a nice discussion of performance issues. After all, whenever two or more C++ programmers gather together, someone is going to have an opinion about performance. Take a look for yourself!

Kate

Tuesday, 01 February 2011 18:45:11 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 30 January 2011
There are some really amazing WPF applications out there, and many of them are extraordinarily beautiful. I am not very good at making beautiful applications, though the WPF themes help avoid the "grey boxes on a grey background" look I usually achieve. Now if you want to develop an application that presents a whole new paradigm, there should be someone on your team who really "gets" user experience and how colours work together and so on. But what if you just want to make the same sort of apps you've always made, using the latest technology instead of something a little older? You want to think the way you thought when you were doing Windows Forms, for example, and use the same tools, but end up with a WPF application or a Silverlight application.

Well, Pete Brown has an interesting blog post speaking directly to this kind of developer. He makes the case that for these kinds of applications, you don't need to add a designer to the team. Plenty of screenshots to support his theory - see what you think. I think I agree, myself. Because the post was last year, there's lots of interesting conversation happening in the comments, too, so be sure to read those while you're there.

Kate

Sunday, 30 January 2011 18:48:22 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 28 January 2011

Despite this rather famous xkcd comic, most developers would rather spend as little time compiling as possible:

But most of us how no clue why a build takes as long as it does, or how to make a project build faster. I mean sure a Clean and then a Rebuild will take longer than an incremental build. But beyond that, which is quicker - a debug build or a release build? Debug puts more information in, but it doesn't optimize - which wins? Does it make a difference if you keep Visual Studio up all day or if you close and re-open it from time to time? Are there options you can set that make your builds faster? All this and more is covered in remarkable detail in a new blog post from the Visual C++ team. You need to read it.

Kate

Friday, 28 January 2011 18:36:46 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 26 January 2011
Not everyone knows that the Windows SDK includes a C++ compiler and linker that you can use if you don't have Visual Studio installed. Of course, Visual Studio Express is free, and you could use that to compile and link C++ apps. The advantage of using the tools that come with the SDK is that you don't have to install and configure a lot of stuff to get started. On a new machine that may appeal to you.

Gus Class has posted a super-quick 3 minute video that shows how to compile one of the SDK samples using only the tools that come with it. I just wanted to elaborate on one thing. The SDK installs, by default, under Program Files. As you probably know UAC prevents applications from writing to any folder under Program Files unless the application is elevated. That's why Gus launches an elevated command prompt in this video. If you don't want to elevate your command prompt, you'll need to move the sample folders and adjust your path accordingly.

Three minutes. Worth a watch. It's always good to have some tricks up your sleeve on a new machine.

Kate

Wednesday, 26 January 2011 18:25:57 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 24 January 2011

Recently the East of Toronto .NET User Group had a Windows Phone 7 presentation (by Atley Hunter) that was very well done, and well attended. (He's blogged about it and included some helpful links, so you should be sure to read his post too.) You would never have known it was his first presentation - he was calm and confident and knew what he was talking about.

At the meeting I met Ashish Kaila, who is working on a toolkit for WPF developers and a Windows Phone 7 library. He showed me the docking panes and some other fun functionality.

To me this is a huge benefit of user group meetings: in addition to the presentations, usually as good as any you would see at a paying conference, you also can meet fellow attendees. I hadn't heard of these tools before, and they could save you a lot of time and effort. The next best thing to coming to meetings, I suppose, is reading blog posts about meetings. Here's where you can learn more about Ashish and his products:

If you're not going to your local user group meetings, why on earth not? We don't bite, honestly, and you have so much to learn and gain from being there. See you next time!

Kate

Monday, 24 January 2011 18:17:48 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 22 January 2011
The revisions to the C++ standard, headed to producing a new C++ standard which is still nicknamed C++0x, are proceeding at their stately pace, and will for months yet. But since a number of compilers are supporting more and more of the functionality and syntax, which are pretty much locked down now, we can adopt much of it today. (I don't know why some people are running around claiming that because the standard isn't released yet, no-one should be using any of it, but when you bump into such people, you can send them to me.)

I came across an interview with Bjarne Stroustrup, the father of C++, at CodeGuru. If you're wondering why the standard is so far behind schedule, what the very first C++ developer thinks about the very newest C++ developers (undergrad students), and how risk feels to a standards committee, then you will enjoy reading this, as I did. The lambda syntax on the first page isn't quite right, but you can fix that up if you need to. There are plenty of lambda examples here in my blog.

Give it a read!

Kate

Saturday, 22 January 2011 10:52:40 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 20 January 2011
One of the things C++ developers have had for ages is a way to see a function's return value in the debugger, even if it isn't kept in a local variable. For example, see tip 29 in this list of Visual C++ tips for VC++ 6.0 - a product released 12 or 13 years ago! Managed developers would like this ability, too. Jared Parsons, from Technical Strategy Incubation, points to a set of requests, and explains why it appears that VB has it already. (And you thought VB6 legacy support wasn't going to help you!)

Take a look and see what you think. Would it be worth the possible performance hit?

Kate

Thursday, 20 January 2011 10:28:24 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 18 January 2011
I don't think I ever linked to this Tech Ed Europe talk. Ale Contenti talked about Application Lifecycle Management (ALM) features for C++ developers. Now it's featured on the Visual C++ Blog. There are useful links in the comments, also.



I saw the talk live and I liked how personal Ale made it. If you wonder whether any large C++ projects rely on Team Foundation Server, you could hardly have a nicer example than this one!

Kate
Tuesday, 18 January 2011 10:10:32 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 16 January 2011
The SQL Server MCM certification is pretty darn serious. In order to be a Microsoft Certified Master, you really need to know your stuff. As Microsoft describes it:

Individuals interested in pursuing a Microsoft Certified Master on SQL Server 2008 certification typically have five or more years of hands-on SQL Server experience in mission-critical environments, with competencies that include:

  • Designing and implementing high-performance, scalable, and secure enterprise environments

  • Troubleshooting the most challenging SQL Server issues

  • Managing multiple instances of SQL Server, including the use of a variety of features and tasks, with a thorough understanding of SQL Server design and architecture.

  • A thorough understanding of SQL Server core engine components and dependencies, such as online transaction processing (OLTP), high availability, disaster recovery, performance tuning and optimization, the SQL Server operating system (SQLOS), the storage engine, the relational engine, security, manageability, and data distribution.

It's the highest level of certification and perhaps 1% of IT Pros can achieve it. Even if you don't want to go for the certification and sit the exams, you might like to improve your knowledge. So 40 hours of free training videos are bound to help, aren't they? The clever folks at SQLskills have put some together, and provided a handy page of links. See how much you can improve your SQL abilities and understanding.

Kate

Sunday, 16 January 2011 09:56:24 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 14 January 2011
It's a trope of horror movies that bad things happen in the basement. You don't go down there to see why the other people who went down there aren't back yet, and you don't go down there alone. Jan Miksovsky extends the software-as-building metaphor to talk about the scary-basement part of most apps. What I like about the post is that he's not just complaining, "some parts of the app are a real pain to change" but he's also aware of the good part of it, the foundation aspects. Well worth a read!

Kate

Friday, 14 January 2011 09:41:34 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 12 January 2011
Since midsummer I've been watching the "STL on STL" series accumulate on Channel 9. The lectures appeared as "part 1 of n", "part 2 of n" and so on until, in the bleak midwinter, part 10 of 10 appeared, so they must be done. Here are some links to them all:

There really isn't any universe in which the material this series covers can be called Introductory. When Stephan has finished introducing you to the STL, you will know an awful lot. And in this century, knowing the STL is a vital part of being a C++ developer. Many developers are scared of it: they think it's difficult and complicated. And to be honest, it can be. There's an awful lot going on and there is a lot to learn. Watching these videos, you can see how much Stephan LIKES this material, likes this library, and he's clearly not scared of it or trying to impress you with how difficult it is. He wants you to know all this. And if you follow along (and even do the homework!) you will catapult yourself forward in your STL knowledge and abilities. Take the time to do it, you won't regret it.

Kate

Wednesday, 12 January 2011 09:33:08 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 10 January 2011

The Visual C++ team, in addition to tweeting and blogging regularly, is now accumulating a week's worth of links and stories at a time and publishing them at paper.li. If you don't compulsively check in to the C++ world every day, it can be a great way to stay in touch. Even if you do, you might discover a source you're weren't checking before. It's a little less obtrusive than other ways of sharing links, I think. Check out the C++ Weekly and the team blog post introducing it.

Kate

Monday, 10 January 2011 08:44:04 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 08 January 2011
The voting is open at the Tech Ed site for you to express your preferences on possible sessions. My experience indicates that submissions not shown here can still end up being sessions, and certainly not all submissions shown here will be accepted, but obviously a strong interest from the public in a session will increase its chances of acceptance. With that in mind I thought I'd show you the results of a few searches.

First, C++:

These have orange plusses on them because I've added them to my preferences. You'll see a grey square you can click to add them to yours.

Next, Windows 7 development. Let's try Code Pack:

And finally the intersection of WPF and Windows 7 searches (I had to crop the shot by hand, there's no handy search that returns just these):


If you want to be sure that Tech Ed USA offers sessions you'd like to attend, the power is in your hands. (Disclaimer: some - but not all - of the submissions I am showing you here are my own.) Make your feelings known. And see you in Atlanta (I hope) in May!

Kate
Saturday, 08 January 2011 10:14:11 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 06 January 2011
Here's a super neat tip from Mike Ormond - he shows how to track reviews for a Windows Phone 7 app. My guess is you would mostly want to track your own apps, or possibly the competition. You use a free app that tracks reviews, of course. Written by Sergei Golubev, a former Microsoft employee, it fills an important niche and if you wrote an app and put it in the marketplace, you want this app. And it will apparently only be free for a limited time, so don't dawdle!

Kate

Thursday, 06 January 2011 20:52:58 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 04 January 2011
Ok, perhaps it's not news that a keynote is fundamentally different from a breakout. But many keynotes look just like breakouts - the way the slides are written, for example - and many keynotes leave a lot of attendees unsatisfied. A meme began to rise among presenters that "bullets are bad" and "bullets can kill you". I agree completely for keynotes. I don't agree for breakouts, and I've been to breakouts with the pictures of kittens and the single emotionally loaded word and then a picture of a tree and just hated them. But the a-ha! for me is the simple statement: a keynote is not a breakout.

It just makes the whole anti-bullet / pro-bullet thing click for me. The keynote can be full of pictures and super simple words, because it's a keynote. The breakout can still have slides with bullets, tables, charts etc because it's a breakout. Of course the deck for a keynote is not of value without the presenter. It's a keynote. This works for me. Major credit to me "getting" this goes to (of course) Garr Reynolds of Presentation Zen. His post on how dramatically Bill Gates has changed his keynote style - slides, posture, tone, and more -- really lit a light bulb in my head about keynotes and breakouts, whether that was the intention or not. The post itself is highly informative and if you ever speak in from of an audience, you should read it and look at the pictures. These two are from 2005 and 2010 and I think they show you quite a difference:



So, a keynote is a not a breakout (something Bill clearly gets now) and a breakout is a not a keynote. Meaning the kitten content of my talks isn't likely to increase until someone invites me to keynote for them :-).

Kate
Tuesday, 04 January 2011 20:36:55 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 31 December 2010
I was lucky enough to be part of a spirited email discussion recently on the topic of exceptions. And luckier still that Diego Dagum, the new C++ Community PM, has summarized it on the VC team blog. You should enjoy reading the "best practices" we worked our way around to, like:
Most MVPs agreed that, despite not being illegal in C++, throwing primitive types like int, long, etc., or similarly Windows-based ones like HRESULT, etc. is a coding horror as inabilities to catch those in the proper place will make the application crash with a hard post-investigation to determine where they are being originated.

Of course, we ended up talking about checked exceptions, one of the things I really hated about Java personally, and RAII which is a critical way of thinking if there are exceptions flying around your app. STL joins in with a comment that could be worth gold to someone dealing with SEH:

I strongly recommend AGAINST using the /EHa compiler option. Either /EHs or /EHsc should ALWAYS be used, with /EHsc being preferable (it's faster because it assumes that extern "C" functions won't emit exceptions - while technically permitted by the Standard, sane code should never attempt to do such a thing, so giving up that ability is worth the performance gain).

And I am sure the comments will continue to grow and the conversation continue. This is how we all get better, by discussing and sharing and occasionally defending our practices. It's a must-read.

Kate

Friday, 31 December 2010 20:01:25 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 29 December 2010
Visual Studio 2010 comes with a whole pile of project templates (C# WPF project, that sort of thing) and snippets. They get you started on new projects and save you a lot of time. But if you're a StyleCop user, they can frustrate you, because the code they generate for you can generate plenty of warnings.

The solution: new versions of these snippets and templates that are StyleCop-compliant. Plenty of XML comments, nothing left to default, generally nice code. Doug Holland has a blog post on this with plenty of examples and links. Take a look!

Kate

Wednesday, 29 December 2010 19:54:05 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 27 December 2010

I'm a big fan of Visual Studio 2010 extensibility; I've given talks at various places about extending Visual Studio yourself and using the gallery to find great extensions. I recommend specific extensions as part of other talks and there are many I can't live without. I came across a fun list by Terje Sandstrom of the extensions they like to use at Inmeta. I completely agree about Pro Power Tools, but I would also add Presentation Zoom and Code Snippet Designer. By the way, the All in One Code Framework is also listed on the gallery. It's just a link over to the CodePlex site, but it's a way to find it if you missed one of the zillion links from my blog.

If you're using Visual Studio 2010 and you're not taking a little time to explore the gallery and tweak the way your copy works, you're missing a chance to be more productive and to enjoy Visual Studio more. Take a look!

Kate

Monday, 27 December 2010 19:49:10 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 25 December 2010

A while back, I blogged about an empty jumplist for Windows Explorer and how I fixed it. I've come across another no-jumplist issue, this time in a blog post by Rick Strahl. This app never gets a jumplist, and can't be pinned to the taskbar or start menu either. Believe it or not, the reason is the executable name. I've seen all sorts of people running into issues with UAC elevation being triggered by certain executable names, but this is the first I've heard of the jumplist being taken away because of it.

Rick looked into it, found the documentation, even found the Registry key and the list of "magic" words in your executable name (Documentation;Help;Install;More Info;Readme;Read me;Read First;Setup;Support;What's New;Remove) that cause the problem. Nice work! Your options, if you find yourself here, are to rename your exe, or (if, like Rick, you have a lot of stuff depending on that name thanks to COM etc) to change the Registry key so that whatever string you're using isn't the problem.

Kate

Saturday, 25 December 2010 19:40:06 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 23 December 2010
It's the time of year where people set themselves goals - for the whole of 2011, for the next few months, or just in general. And you can read a lot about SMART goals and how great they are. Opinions vary on exactly what the letters stand for but I'll go with Specific, Measurable, Attainable, Relevant, and Timely. So if I'm giving you a performance review and I say "you should be more helpful", that is not a SMART goal because we can't measure your helpiness and it's also not terribly specific and I haven't given you any kind of time frame for improvement. If you're not helpier tomorrow, have you failed your goal? What about next week? Next month? How long do you have to get more helpful? If I say "you should fill out your timesheet more often" it's still not a SMART goal because it's vague and doesn't have a time element and so on. I can make it a SMART goal by saying something like this: "over the next 6 weeks, at least 5 weeks' timesheets will be completed by 10am of the next Monday morning." The relevance will have to come into play when I explain to you that late timesheets delay our billing of clients and mess up our cash flow. (Or whatever; we actually don't use timesheets here, but that's not the point.)

So OK, we have this concept. And it seems like a pretty good one. After all, if you write it like that, we can come back after 6 weeks (or whatever) and say "pass" or "fail". But let's look at the timesheet-laggard above. Let's say that person misses week 1 and week 2, then goes flawless after that. Still fail? If you feel that way, then as soon as the laggard misses week 2, why keep trying? You've blown the goal, right?

Then there's the matter of the consequences of blowing the goal. Am I going to fire you for messing up my invoicing and causing cash flow headaches and just generally not caring about the business? (I might.) But if you have a goal to pass a particular cert, and you fail it, is anyone going to fire you? Or you have a personal goal to run some distance under some time and you don't get to that time, will you give up running?

Here's I. M. Wright on why having a dozen year-long SMART goals is just wrong - they take so long to write, if people meet 11 out of 12 they can still have a fail of a year, they're all about you when you're actually part of a team, and so on. Since they're unavoidable at some companies, he has some suggestions how to have 4 or 5 really good ones. He also doesn't like SMART for stretch goals, and I agree. Christophe is more about how things change over an entire year, so the goal is probably not relevant by the time limit. The top answer to this StackOverflow question says they're not good for developers, period.

In answering this StackOverflow question I realized something. SMART goals are good for "shape up or else" goals, put on a person by someone else, that allow just a few weeks to achieve something really, well, specific, measurable, and relevant. Do your timesheets. Come to work on time. Include a decent comment when you check in your work. They're really not good for "be a better person", "lose weight", "make more money", or even "get a paid acting job". You just need a different way to express and measure progress on those kind of goals. If you're setting a goal for yourself, unless you think you're correcting a deficiency and have consequences lined up for failure, don't make it a SMART goal.

Kate

Thursday, 23 December 2010 16:48:30 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 21 December 2010
According to Darryl Taft, the top languages for next year (and this may surprise you) are going to be Java, C, and C++. You're probably all ready to disagree, but understand the criteria:

... the workhorse languages such as C and C++ continue to remain at the top end of the software development landscape in terms of language use and job potential (despite growing more slowly and even decreasing, according to some sources). Moreover, this list is not intended to highlight the hot, hip new languages on the horizon, but to focus on where programmers can go to look for work.

There's a large body of work being done in languages that are not new, or hot, or trendy, but that have been around for long enough to develop a body of developers and libraries that enable getting things done. The volume of code that will not be ported to new and exciting languages, and will be maintained in its current language for years and decades, will always outweigh the volume of code that is being written from scratch right now or being ported. If you want a job, knowing an "old workhorse" language is a good thing.

Darryl profiles 18 languages in all: Java, C, C++, C#, JavaScript, Perl, PHP, VB, Python, Ruby, Objective-C, ActionScript, Groovy, Go, Scala, Erlang, Clojure, and F#. That is an awful lot of curly brackets, a very high placement for Objective-C given that it really does only one thing, and a fair dose of hot/new/trendy once you get past the top ten. Worth a read!

Kate


Tuesday, 21 December 2010 13:50:01 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 19 December 2010
Many people really don't understand where P/Invoke signatures come from, or what they mean. They head over to pinvoke.net, which - don't get me wrong - is a hugely important resource, and then blindly paste in whatever they find and try compiling and running their code. Or they use the superbly helpful P/Invoke Interop Assistant. Again, paste, build, run, works on my machine.

This is a great way to start. The problem is assuming that once one run worked, you're done. You need to read and understand the P/Invoke signature you are using. Especially when you are passing in a pointer, or getting a pointer back, you must know who owns that memory and who will clean it up. Are you handing it over to the native code to manage? Is there a risk your managed code will clean it up before the native code is done with it? Is there a risk the native code will clean it up, and then later the managed code will also try to clean it up? Don't think these things don't happen, they most certainly do.

Here's an example: a long running intermittent bug that was caused by a P/Invoke declaration that said the managed side would clean up, but that should have said the native side would (since the native side did.) And here's a nice summary of ways to make sure that native resources (like handles) aren't cleaned up too soon by the managed side. Sorry, but you need to understand this stuff in order to interop successfully. That's where the phrase "head spinning interop" came from, after all.

Don't like it? Don't want to learn it? Then use an interop library like the Code Pack that takes care of those sorts of things for you and exposes an entirely managed interface. Have to learn it whether you want to or not? Consider using the Code Pack as a reference for how to do interop properly. The full source code is available, and nicely commented too.

Kate

Sunday, 19 December 2010 12:10:28 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 17 December 2010
It's over 200 pages long, and over four years old, but I just heard about it recently. A long, dense discussion of whether certain C++ features (templates, namespaces, RTTI, etc) have a performance cost, and how to write code that incurs as little performance cost as possible. Its official name: ISO/IEC TR 18015:2006(E)  Technical Report on C++ Performance. In addition to runtime performance, it also touches on compile slowness, the "brittle base class" problem, and the different performance characteristics of various STL collections and algorithms. If you care about the speed of your C++ code, you should read this, even if some of it is already familiar to you.

I'd like to give some kind of "Restrained Understatement" award to this sentence:

Template meta-programming  and  expression  templates  are  not  techniques  for novice programmers, but an advanced practitioner can use them to good effect.
To be clear about where these authors are placing the "advanced" bar, I don't use meta-programming, I consider it too advanced for me. And I have 20+ years of C++!

The whole report is platform independent (though embedded systems are discussed separately) and compiler independent, too. I wish it were updated for C++0x, but I guess that will have to wait until C++0x is settled :-). There's a 14 page bibliography, and you would do well to read many of them, though my source for the link winkily pointed out another possible paper. That one is old enough to get a driver's license, but I think you might enjoy reading it anyway. As the introduction begins:

It is important to understand how your programming language is implemented. Such knowledge dispels the fear and wonder of “What on earth is the compiler doing here?”; imparts confidence to use the new features; and provides insight when debugging and learning other language features. It also gives a feel for the relative costs of different coding choices that is necessary to write the most efficient code day to day.
It's only 23 pages long, and concludes:
... we have considered many of the significant C++ run-time implementation issues. We see that some wonderful language features are almost free, and others can incur significant overhead. These implementation mechanisms are applied quietly for you, behind the curtains, so to speak, and it is often hard to tell what a piece of code costs when looking at it in isolation. The frugal coder is well advised to study the generated native code from time to time and question whether use of this or that particularly cool language feature is worth its overhead.
Good advice, in 1994 or 2010.

Kate

Friday, 17 December 2010 11:34:31 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 15 December 2010
Those hardworking elves at the All in One Code Framework keep releasing more samples. They've added some ASP.NET samples (including a very interesting "get location from IP address" one) and some Windows 7 shell extensions, specifically a preview handler. Ah, the good old .recipe file type - an old friend of mine. But as always the samples are going to save you hours and hours of time.

Here's an index to all the samples for you to explore. You might be a little astonished if you haven't checked it out before, they have:
Slowly but surely the samples are accumulating to live up to the name. This should be the first place you look when you want to take on a new task. Generally speaking, everything is available in native C++, C#, and VB (the exceptions are things you can't do in native C++, like ASP.NET) with the language included in the sample name (look at CppWin7TriggerStartService, CSWin7TriggerStartService, and VBWin7TriggerStartService for example.) And remember, if you don't see what you want - you can ask for it!

Kate

Wednesday, 15 December 2010 10:57:52 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 13 December 2010
At the moment these are announced in the USA only. A full day of client development training for Windows 7, including IE9 and SL OOB. They say:

We will look at application compatibility and transitioning your applications to Windows 7, integrating with the Windows taskbar, developing for IE9, utilizing the cool functionality in the Sensors and Location Platform so that your application better responds to its current environment, leveraging the multitouch capabilities (especially in kiosk scenarios), and creating Silverlight 4 out of browser applications. This event is a unique opportunity, partnering classroom learning with hands-on-labs and leveraging experts to advise you so we can help you “win” with Windows 7.

You bring your own laptop with VS 2010, the Code Pack, the Windows 7 Training Kit, IE9, and Silverlight 4 installed (there are links on the bootcamp page) and do the labs as you go. The training is all free and you'll get hands on experience right while you're there. (It doesn't say so, but my guess is this is all managed code and that the labs are in both C# and VB.)

And if there isn't one near you, you can help arrange one! It's all packaged as an event-in-a-box so all you need is a trainer who'll agree to deliver it and a room to hold it in. But check the dates and locations first -- there are over a dozen sessions scheduled already, so perhaps there's one near you.

Kate

Monday, 13 December 2010 10:40:52 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 09 December 2010

Herb Sutter has blogged a "trip report" (except he didn't travel, but anyway) about the November meeting of the C++ Standards Committee. In it, he tells us:

Things are going well and we are on track to complete the Final Draft International Standard (FDIS) for the C++0x standard after the Madrid meeting in March. If that happens and that ballot succeeds, the C++0x standard will be published in 2011.

There are still decisions being made, and I have to say I like the way they're going. I think contextual keywords are wicked smart, and that if compilers can understand them, developers sure can. Compare Herb's two examples:


class [[base_check]] Derived : public Base {
public:
virtual void f [[override]] ();
virtual double g [[final]] ( int );
virtual void h [[hiding]] ();
};
class Derived explicit : public Base {
public:
virtual void f () override;
virtual double g( int ) final;
virtual void h() new;
};

Contextual keywords make the second option possible, and I think it's much better. You can also read about noexcept and the whole exception-checking backstory, as well as rules for generating move constructors and move assignment operators. It's all good.

Kate

Thursday, 09 December 2010 13:24:29 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 07 December 2010
Windows 7 developers have tons of cool stuff at their (our) fingertips. There's taskbar integration, the new sensors and location platform, access to devices, and more. Silverlight developers, on the other hand, have so far not been able to get to all of that. Well, now you can! The Native Extensions for Microsoft Silverlight leverages the ability of Silverlight to do COM integration, and puts COM Automation around a collection of Windows 7 functionality so that Silverlight developers can use it. How cool is that?

Because it's on the Code Gallery, you know it's from Microsoft. The first release, Dec 2nd, covers:
  • Windows Sensor API - Integrate sensors:  Accelerometers, Light sensors, compasses, gyroscopes etc. 
  • Microsoft Speech API - Text to Speech (Speech Synthesis) and Speech to Text (Speech Recognition) 
  • Windows Portable Devices API - Enumerate and access content from connected portable devices (cameras, phones, music players, scanners etc.) 
  • Windows 7 Taskbar Integration - Jump lists, overlay icons, overlay progress display, Thumbnail toolbars etc. 
  • Webcam Local Encoding and Window Capture - Encode webcam capture into mp4 (H.264/AAC-LC) media - Capture user interface interaction as video 
  • Window Message Interception - Intercept and act on Window messages sent to the Silverlight OOB host window

This certainly gives Silverlight developers some interesting options! There are some samples that come with the library to show you what you can do, too. You might also be interested in Maor David's blog entry about the library.

Tuesday, 07 December 2010 12:33:24 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 05 December 2010
I finally caught up some of my PDC-watching and really enjoyed this Herb Sutter talk on C++0x lambdas. I'm well known to be a huge lambda fan. Herb made this talk enjoyable for me by bringing his personality to the table. He showed aspects of C++ that are not exactly elegant, and how using lambdas can make some much neater code possible. Sure, lambdas are "just" syntactic sugar, but they add up to a new way of thinking about writing applications in C++. Well worth watching.

One warning though - I generally download videos and watch them at 1.5 or double speed. I highly doubt you want to do that with this talk - it's dense!

Kate

Sunday, 05 December 2010 11:59:12 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 03 December 2010
Kenny Kerr is back in Canada and back writing about C++. Like a lot of us these days, he's looking at a stripped-down, more modern way to write Windows applications in C++ - no MFC, no ATL, no WTL. Plenty of STL and new C++0x features. I like it! Here's the first installment - stay tuned for the rest of them!

Kate

Friday, 03 December 2010 11:53:59 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 01 December 2010
Lately there's been quite a lot of interest on programmers.se about interview questions, and specifically the "coding at the whiteboard" part of the interview. It came up in a discussion of FizzBuzz, in one about "testing" your whiteboard code, and in one about question 11 of the Joel test.

I ask candidates to code at the whiteboard. I ask an intensely simple question, because I am mostly testing for things other than the actual code the person writes. I know, however, that there are places that actually want you to tackle reasonably challenging problems. I came across this blog entry by Diego Dagum (who edits The Architecture Journal, writes architecture columns, and is committed to native C++big time) that walks you through a C++ whiteboard problem that is decidedly non-trivial. What I found interesting is that he starts his "thinking aloud" the same way I would, but then when I would start writing something that worked for valid input, he first started to set out examples of invalid input. And when he wrote the code, it starts by rejecting various categories of invalid input before processing anything. It's cool to see someone thinking differently from me.

One thing really struck me. He spends over a page on the signature of his method - why he called it rtoi, why it returns an unsigned int, why its argument is const, whether it should take a  unicode string or not, why an STL string and not a char*. See how much these problems reveal about a person? That kind of care and precision is not something you can discover by asking a person "how important is it to you that a method signature is chosen with care? Can you give me some examples of naming methods you have done?" Coding in a job interview is about so much more than syntax. Are you prepared for the whiteboard?

Kate

Wednesday, 01 December 2010 21:59:11 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 29 November 2010
People love Apple hardware. They pay dearly for it because they love it so much. And apparently, the paying continues after the hardware is bought. This report says that Windows Phone 7 Apps cost, on average, half what iPhone apps do. You could argue that the higher price means that the platform is more popular, or the apps are better - but old-school Windows Mobile was higher than iPhone, so any explanation needs to be a little more complex than a quick fanboi reaction would be.

So far I haven't installed any paid apps on my Windows Phone. I've got a motley collection of free games, Twitter, a not-very-good Messenger client that I can get by with, and of course a flashlight and a level :-). I love the way it syncs with my Outlook mail and calendar, and I'm getting used to the Zune software for syncing videos and pictures. I've had a number of pleasant surprises and no unpleasant ones, which is itself a surprise, because I am real a control freak when it comes to syncing. Getting on Wi-Fi is dreamily easy - I actually have no SIM in this phone, and use it on Wi-Fi only, and that's turning out to be quite workable, believe it or not.

Kate

Monday, 29 November 2010 14:28:38 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 27 November 2010
People say you can't get unit test support from Visual Studio for native code. That's not strictly true. Your tests will need to be managed code, but that doesn't mean the code you're testing needs to be.

As I hope you know, it's super easy to call native C++ code from C++/CLI - include the header, link to the lib. So here's the deal. Make yourself a lib that holds all the code you want to test. This can be completely native code, no problem. Build your UI (or your web services layer or your service or server or whatnot, I don't mean by UI an actual interface that a user clicks and types to, I just mean the part of your app that consumes your business logic) in native code if you like. Or in managed code, that's cool too. Then create a C++/CLI test project that includes the header for the logic, and links to the lib. There you go.

For the gory details including precisely what menu items to select and how to set up the project, John Socha-Leialoha has you covered. I love his conclusion:

After so many years writing in C#, I never thought I would enjoy C++ programming again. I was wrong. Using TDD to write C++ code is almost as nice as writing C# code, and I’m really enjoying the experience.

Kate

Saturday, 27 November 2010 14:20:05 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 25 November 2010
You know I just love jumplists. Probably my favourite app to have a jumplist is Windows Explorer. After all for Word, PowerPoint, Visual Studio and so on, there is a MRU list on the file menu or the like. But getting to folders I've used recently is super important to me.

That's why I kind of freaked out when the jumplist for my Windows Explorer disappeared.



I tried rebooting my laptop (something I do less than once a week.) No help. I caught up on updates. No help. So I started searching. And I found two articles, one about a jumplist that is slow to load itself, and other other about an "orphaned" item that couldn't be removed from a jumplist. That one helped me realize the likely cause of my problem - although I hadn't pinned a mapped folder, I had mapped a drive at a client site, and now that drive wasn't accessible any more, which is perhaps why the jumplist wasn't loading.

But anyway, what to do? Based on what I read in those two articles, I navigated to %APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations (that's exactly what I typed into the Run box, it figures out %APPDATA% for you.) There I saw a whole pile of apps with a strange extension, a little reminiscent of the files that hold the details for libraries:



If you open any of these files in Notepad, you'll see that amongst all kinds of unintelligible strings are paths to files you've dealt with recently. What's more, you can kind of guess which app each file is for by looking at those paths - one file will have a bunch of .pptx files mentioned in it, while another will have a bunch of .xlsx files.  Now, which one is Windows Explorer?

Well, both articles said the same name: 1b4dd67f29cb1962.automaticDestinations-ms.I had a file called that, and when I browsed in Windows Explorer to another folder, the timestamp on that file changed. It seemed quite sure that it was for Windows Explorer on my machine too. So, I deleted it, as the articles suggested. Now I still had no jumplist, but when I then browsed to another folder, I had a jumplist with one item in it. From then on life was back to normal.

Something to know if you get a stuck jumplist someday.

Kate
Thursday, 25 November 2010 13:42:06 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 21 November 2010

Opinions seem to vary a little on the birthday of Windows. Charles Petzold says the files are dated November 15th, 1985. Ray Ozzie says it's the 20th. ComputerWorld says the 20th also.

Whatever you think the date should be, you really need to read the article by Charles. He did a keynote "selling" Windows 1.0 (a product almost none of us used) as a solution to the problems of the day:

Will it spoil the gentle humour throughout the piece, written 5 years ago, if I show you the output of his demo? I think not:



He concludes:

And that is Windows, and I don’t know about you, but after this event is over, I’m going home and writing me some Windows apps.

I'm with you, man.

Kate
Sunday, 21 November 2010 16:57:18 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 19 November 2010
One of my track chairs at Tech Ed Europe was Christian Binder. Christian always makes sure there is C++ content at Tech Ed Europe and this year he sat down with Ale Contenti to talk about Microsoft's commitment to C++, which is stronger than ever right now. You might be a little surprised to hear C++ called "the innovation language" but c'mon - if a new API is added to Windows, you can just use it right away from C++, but from some other languages you might have to wait for something to be released that will help you, right?

Christian blogged about the interview in German, but the interview itself is in English. Worth a listen!

Kate

Friday, 19 November 2010 16:48:05 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 17 November 2010
I like to say "If you have a Windows application, it should be a Windows 7 application." By that I mean that you should take advantage of some of the features Windows 7 offers to your apps, and you should give the user the experiences they are coming to expect on Windows 7. You should have a sensible and usable jumplist. If you have a progress bar, you should add ONE WHOLE LINE OF CODE to your app so that progress bar is also overlayed on the taskbar. You should toss your intrusive message boxes and toasts and system tray balloons and use taskbar icon overlays on Windows 7, because that's how users expect to be notified about non emergencies. You should take advantage of restart and recovery, and of being notified about events like going on battery or AC power, or coming online or offline, instead of expensively polling for them. I've written a lot of blog posts and given a lot of presentations on how to do some of those things.

Now, someone is offering you a reward for putting those capabilities into your Windows applications. You can be featured on CNET Downloads if you just submit an application that uses at least one of the 13 features they identify. If your app is ready to go, submit it today! If not, why not?

Kate

Wednesday, 17 November 2010 16:43:15 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 15 November 2010

Wondering what's next in Silverlight? Want to become a Silverlight developer? Want to become a better Silverlight developer? Then you should watch the Silverlight Firestarter on Dec 2nd.

Now there are three ways you can watch this event:

  • In person, in Redmond. Register.
  • Online, wherever you like. Register.
  • Online, with the company of fellow programmers to discuss what you're seeing. I think this is better than online by yourself, so I'm excited that the East of Toronto .NET Users Group is hosting a local Firestarter. Register.

What are they covering? Just about everything:

  • The future of Silverlight
  • Data Binding Strategies with Silverlight and WP7
  • Building Compelling Apps with WCF using REST and LINQ
  • Building Feature Rich Business Apps Today with RIA Services
  • MVVM: Why and How? Tips and Patterns using MVVM and Service Patterns with Silverlight and WP7
  • Tips and Tricks for a Great Installation Experience
  • Tune Your Application: Profiling and Performance Tips 
  • Performance Tips for Silverlight Windows Phone 7

It's running 11:30am - 7:30 pm in Ajax on Thursday Dec 2nd, so you'll need to arrange time off work. Considering all you'll learn about Silverlight, it's well worth the time. Be there!

Kate

Monday, 15 November 2010 12:11:28 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 13 November 2010

Wow, these things get up there fast! My sessions were very well received and I had such a great time doing them! In the order I delivered them, they are:

  • Women In Technology Panel - Claudia Woods, Freena Eijffinger, Paula Januszkiewicz, and Rhonda Layfield joined me to take questions from the audience and talk about what was on everyone's mind. There's really no video - just the title slide for the whole hour. Please listen!
  • The Windows API Code Pack: Add Windows 7 Features to Your Application - This one includes screen capture so you can follow along in the demos. You can also download the powerpoints from this page, and as I mention in the talk, the demo code is the samples that come with the Code Pack.
  • Modern Programming with C++0x in Microsoft Visual C++ 2010 - I had a great time delivering this talk even though it was the first time I delivered this version of it. The attendees responded by putting the talk in the top ten for the whole conference - thankyou! It, too captures the screen and slides, and you can download the powerpoints.
  • Advanced Programming Patterns for Windows 7 - Another talk I was doing for the first time and I enjoyed it too. If you'd like the sample code, stay tuned - I will blog when the recipes are released. The slides are with the video of the screen and slides.

If you came in person, thank you! If you couldn't be there, please watch the videos and leave me a comment. Speaking on technical topics really is the most fun you can have standing up, and I can't do it without audiences.

Kate

Saturday, 13 November 2010 08:41:15 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 11 November 2010
Pluralsight has some great offers for user group leaders that you should really know about. Even if you don't lead a group, make sure your leader knows, because some of these offers are for members. They're offering to send swag, subscriptions, and speakers (oh yes, that could include me, it sure couldn't hurt to ask, right?) to groups. What's more, unemployed user group members can have a free one-month subscription to the Pluralsight On-Demand! library - a fantastic all-you-can-eat way to get your skills modernized and get you back working again.

I wrote Windows 7 and Visual Studio Extensions courses for the library, and am working on plans for my next one. These are great people who really want everyone to learn as much as humanly possible, and work hard to make that happen. Take them up on this offer and you won't regret it!

Kate

Thursday, 11 November 2010 08:20:15 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 09 November 2010
BizSpark is an amazing program. Startups (companies under 3 years old with revenue under a million dollars a year) that are making software can have full access to Microsoft developer tools (yes, MSDN Ultimate for every developer in the company) for FREE. There is a $100 exit fee, but it costs you nothing to get started. We are a Network Partner and have sponsored a number of our mentoring clients into the program.



Well now some firms are seeing the end of that three-year membership ahead of them and wondering, what's next? Soma has announced a truly generous offer. Graduates from the program can have that exit fee (nominal as it was) waived, and can keep and continue to use all the software they acquired while in the program. For some, this will be all they need to keep on making great software with those tools. But some will want newer versions as they are released, or will want the Windows Azure subscriptions that come with an MSDN subscription. So for the (very low) price of about $1000 per developer, they can continue their subscriptions for another two years. That will take care of developer tools like Visual Studio. As well, they can buy Microsoft Software Assurance at half price, if they need production licenses of Windows or SQL Server.

If your startup has been in business three years, and you've been paying people and renting an office all that time, I'm sure these prices look delightfully affordable to you. If you've been hesitating about joining BizSpark because you weren't sure what would happen after the three years, well now you know, so don't hold back! For those who are eligible it really is the best deal in town.

Kate
Tuesday, 09 November 2010 08:13:33 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 07 November 2010
Let's say you've written a great client (that is, not web) application. Perhaps you've added some specific features to make it great on Windows 7. Certainly you've made sure it runs on Windows 7. Or perhaps on Windows Server 2008 R2. Or maybe your app runs on Windows Azure, or Windows Phone 7. Good work! You put time and effort into confirming that your app fits your chosen platform. Now, would you like to be able to prove it with a suite of automated tests and a logo that shows you passed them? Of course you would.

So head on over to Microsoft Platform Ready and take a look around. You'll find training resources to help you build applications that target Windows 7, Windows Server 2008 R2, and Windows Azure. You can test your app and get logos like Powered by Windows Azure and Works with Windows Server 2008 R2.You can even showcase your application in a marketplace, and take advantage of special offers like extended trials of developer tools from various partners.

This is an obvious step for anyone building a client application, on any part of the Microsoft platform. Investigate, join, reap the rewards :-).

Kate

Sunday, 07 November 2010 07:57:05 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 01 November 2010

Here's something that happens to me a lot. I'm working on a project that is mostly Technology A, but I need a little Technology B. I want a sample or two to show me what it can do. I search the web, but often find mostly things written by people who don't know what they're doing and are posting their (possibly flawed) code into question-and-answer forums. I search MSDN, but often the newest technologies don't have their samples yet. I also remember to check if the All-in-One Framework people (I blogged about their coding standards document earlier) have anything. And if I still get nowhere I start asking people I know if they have one.

Well, now those helpful folks at All-in-One are kicking it up a notch. And remember, they cover all technologies and languages related to Microsoft tools. (Want to know more about them? Here's a fun video.)

And this goes back to one of my earliest blog posts - what you want may be what I need to give. Imagine it's your job to decide what samples to write. How are you ever going to find out what developers out in the big wide world want samples of? You could come up with a great idea and then find out people already had all the samples they needed for that. So that person wants ideas for samples. And here you are needing a sample. See how that works?

Just visit the wiki page and follow their instructions. It's a tad more complex than "shoot me an email and tell me what you need" and for good reason. Give it a whirl if there's something you need!

Kate

Monday, 01 November 2010 10:40:23 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 30 October 2010
Think you can write a TFS client for Windows Phone 7? Think you can do it by the end of November? Would you like a free MSDN subscription with Visual Studio Ultimate worth about $15,000 Canadian? Then you need to read Barry Gervin's post where he offers you not just that, but several (probably more valuable) introductions and blog mentions.

Now, you don't need to write all of Team Explorer. Barry suggests build status, dashboards, work item editing, and of course connecting to what the phone knows about People on the team. And he wants to hear from those who are trying, so he can help make it happen.

Interested? Plan your code, email Barry, write your code, and in the end email him the code and maybe a video demo by November 30th. Easy, right?

Kate

Saturday, 30 October 2010 11:13:14 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 28 October 2010
Thanks to the Markham .NET Users Group for passing along this job opportunity. The full description is in a Word document on the user group website. Here are some things that jumped out at me:
  • The company is big enough to have an IT department who will support you
  • They use a variety of Microsoft technologies including some reasonably new stuff like Workflow
  • You should have experience doing web and database development with Microsoft tools
  • They have Windows applications too, and need you to know about concurrency and threading
  • They want you to gather requirements and to train end users as well as write code, so you need to be well rounded and enjoy a variety of types of work
My guess is they are not a software development house but a manufacturing company. These jobs can be very rewarding because you get more responsibility more quickly, but on the other hand there may not be a career track to senior dev, architect, manager of devs etc because there aren't that many developers in the building.

It's nice to see they want to hire two developers. You know you won't be a team of one, anyway! If you're interested, please follow the instructions on the user group web site, which is to send an email to a specific email address with specific information in the subject line. Emailing me or commenting on this post won't help, sorry.

Kate


Thursday, 28 October 2010 11:06:15 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 26 October 2010

If you search for my name in the Tech Ed Europe session list, you'll see four sessions. But I've only blogged about three: Modern C++, Windows 7 Development with Code Pack, and Advanced Windows 7 Development. Now it's time to talk about the fourth, the Women in Technology Panel. I've been asked to run it this year, which is a big honour for me and one I'm pleased to take on. I have found four great panelists who are not all the same age, don't all live in the same place, and don't all do the same kinds of work. I hope that makes the conversation useful to a wide variety of attendees.

Here's the abstract:

If you're a woman in technology, or if you care about the topic (fathers of daughters, this is your cue) then come to the Women in Technology gathering at end-of-day Tuesday. Our panelists Claudia Woods, Freena Eijffinger, Kate Gregory, Paula Januszkiewicz, and Rhonda Layfield span a variety of ages, geographies, and technical interests, and we want to hear from you. What are the issues in your working life? How can companies attract and retain a diversity of technical staff, including women of all ages? Is work/life balance a myth? How can you find your strengths and your friends in this field? Bring your business cards and get ready to meet some of the other women who have come to Tech Ed, as attendees, speakers, or staff. Let's share experiences and advice, support each other, and learn from each other.

Does that sound good? It does to me. And here's a special invitation. It starts at 6, as you can see online. But the panelists will all be there at 5:30 along with some refreshments. So please, come a little early and mingle, then we'll do the full-on panel thing at 6, but we'll have started to get to know each other already by then. See you there!

Kate

ps: I really do mean it when I say men welcome.

Tuesday, 26 October 2010 16:00:12 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 24 October 2010
Hilo, the reference application project from the C++ team that doesn't use MFC or the .NET Framework, is back with another sample. You've seen nice graphics in the way photos are treated, a ribbon UI, and now you can see social media integration with Flickr uploads, touch support, and Windows 7 jumplist support. And remember, all the code is available for you to explore and learn from.



Take a look and see what you think. If you want to know how to build a modern UI and a modern set of functionalities (like web services) then this is the reference application for you.

Kate
Sunday, 24 October 2010 14:23:59 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 22 October 2010
The wheels of the standards committee, I have said more than once, do grind slowly, but exceedingly fine. Apologies to probably Longfellow, though I might be mistaken. Anyway, progress continues on the next version of the standard and there are some details still to settle. Anthony Williams has written a nice summary of the October Mailing (in preparation for a November Meeting) along with some helpful links. He points out that generating move constructors (as compilers do today for copy constructors), as required by the Final Committee Draft (FCD) could break some existing code, so discussions are planned on restricting (or dropping) this implicit generation. I  like knowing that people are putting this level of thought into language changes instead of just issuing a Breaking Changes list and expecting me to go edit my code accordingly.

He also highlights situations where people are deliberately throwing exceptions from a destructor (gasp! I know!) and their working code will break unless they change it say they intend to throw exceptions from their destructor. You would think that this was a tiny population of people, and that marking their code in this way is no big deal, but C++ philosophy is that working code with defined behaviour should continue to be working code with defined behaviour in the latest version of the language. As you can see, that can really be a challenge sometimes.

If you're a C++ person, I challenge you to read the papers Anthony links to. If you can't understand a word of them, you're missing a lot of what C++ is these days. While talk of "implicit invariants", rvalues, and a "throwing move" may take some effort to decipher, I think it's worthwhile. C++ is a language in which performance and correctness are both paramount. That's why the developers are expected to manage lifetimes themselves, explicitly state whether they want shallow or deep copies, and so on. Template libraries simplify much of this (shared_ptr and unique_ptr are the death knell for the characters d-e-l-e-t-e in my code) but understanding those lifetime issues, understanding rvalues and lvalues, understanding when temporaries are created and deleted are all fundamental to being a C++ developer. Understanding those things lets you write better C++ code than you otherwise would. I know there are other languages in which your understanding doesn't matter because it is always done the same way. I also know that the control offered by C++ enables performance gains in specific situations where the developer knows better. These things can both be true at once, and can make other languages a better fit for certain developers or for certain business problems. They are also what makes C++ a better fit for some developers and some business problems. But if you don't have those understandings, if you don't want to control your application at that level, then why are you using C++? Use something simpler that can't be controlled the way C++ can.

For those who are using C++ "on purpose", who are "unrepentant" as I say in other of my talks, knowing the language at this level is key to being good at it. Would you say that "Implicit Move Must Go" or not?

Kate


Friday, 22 October 2010 13:52:41 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 20 October 2010

I've been pretty active lately on StackOverflow, a question-and-answer site where people ask "what does this error message mean and I how can I make it go away?" for a variety of languages, platforms, and business purposes. There are a number of brilliant features on StackOverflow including voting on both questions and answers, and closing questions that are off topic for the site. This means less junk to wade through and a bit more confidence that any particular answer is actually going to be helpful.

One of the reasons questions get closed on StackOverflow is because they don't have an answer. There's a category of nasty questions of the form "Have you stopped [bad thing] yet?" that have no answer. If you never [bad thing]'ed in your life, then you obviously haven't stopped. Yet answering "no" implies you continue to [bad thing]. Answering "yes" implies you [bad thing]'ed for some time, but have no stopped. Either way, it's bad. So I knew the question "Should LINQ be avoided because it's slow?" was going to be closed. And sure enough, it was. But not before some really excellent answers and comments accrued to it. Like these:

  • I would not avoid code because it only executes 250 million cycles a second instead of around 750 million, unless that kind of throughput is an actual business case. Also, chances are that the data comes from something that is a lot slower than this code anyway (a database, disk, ...). Go for what seems most convenient and optimize where it matters.
  • Slow is irrelevant to your customers, your management and your stakeholders. Not fast enough is extremely relevant. Never measure how fast something is; that tells you nothing that you can use to base a business decision on. Measure how close to being acceptable to the customer it is. If it is acceptable then stop spending money on making it faster; it's already good enough.

  • So what you're saying is that the devil you know is better than the devil you don't. Which is fine, if you like making business decisions on the basis of old sayings. I think it is generally a better idea to make business decisions based on informed opinions derived from empirical measurements.
Those last two are by Eric Lippert. Yes, that Eric Lippert. He's answered almost a thousand StackOverflow questions, and he's by no means the only product team member who's answering questions there. In addition, other answers fix a different perf bug in the asker's code (an unnecessary and expensive cast) and provide a wide range of opinions about performance decisions, architecture, choosing technologies and so on.

I love StackOverflow for fixing immediate blocking problems, but don't neglect the possibility of gaining philosophical wisdom from reading an offtopic question or two.

Kate
Wednesday, 20 October 2010 12:55:03 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 18 October 2010

Jeff Blankenburg has produced a great quantity of blog posts about developing for Windows Phone 7. Now he's supplementing that with an all-in-one resource page that links out to a ton of great material in addition to his own. Oh I know, you might not need to see the TV ads to learn how to develop for the thing, but I appreciate the link anyway. If you're doing phone work, or thinking about it, this list is for you.

Kate

Monday, 18 October 2010 15:58:45 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 16 October 2010
Jennifer Marsman has built a very nice list of Windows 7 developer resources. Of course, she had me at Code Pack (the very first item she lists as a matter of fact), but she carries on, drilling into both native and managed scenarios, covering libraries, SDKs, training materials, UX guidelines, samples, blogs - even Twitter handles!

There is a LOT of material out there and it's a little bit fragmented. This is a great post to help you find your way around. Remember, if you have a Windows app, it should be a Windows 7 app!

Kate

Saturday, 16 October 2010 13:07:42 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 14 October 2010
According to Wired, C++ was born October 14th, 1985, with the publication of the first official reference guide by Bjarne Stroustrup. That's 25 years ago! I've still been "working in C++ since before Microsoft had a C++ compiler", as I like to say at the start of any C++ sessions I deliver. While that is a long time, it's not the full 25 years the language has existed - not quite, anyway.

Wired marks the anniversary with an interview with Bjarne. If you're curious about what kind of computer he uses day to day (a small Windows laptop) or what music he likes to listen to, now you can find out. Or this advice for young programmers:

Know your fundamentals (algorithms, data structures, machine architecture, systems) and know several programming languages to the point where you can use them idiomatically.

I'd call that "simple but not easy", as much advice is. C++, of course, is neither simple nor easy, but it is incredibly rewarding to those who take the time to learn it and use it well, and I hope it will continue to do so for at least another 25 years.

Kate

Thursday, 14 October 2010 11:10:13 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 12 October 2010

I'm teaching OO design and UML again this term, and one of the things I emphasize to the class is the dangers of coupling. (Get your mind out of the gutter, I mean classes with dependencies on each other.) It's not about calling methods of each other necessarily; it's more about if-I-change-this-one, I'll-have-to-change-this-one-too. Changes that ripple through a system are expensive and dangerous.

When I am helping clients with interop, they are often surprised to learn how entire applications and libraries can depend on each other without ever calling each other's code. For example, App A writes a record to a database table. Service B checks the table regularly for new records (or records with a 0 in the Handled column, or whatever) and calls a web service (or whatever.) Those applications are now coupled - if a change in one necessitates a change in the format of that table (or its name, etc) then the other must be changed too. Thinking ahead and doing all you can to reduce this kind of coupling is part of the challenge of doing good application integration, even if there are no interop calls in the solution.

And then there's performance. So often left until last, it provides another consideration that you should ideally have in mind all the way along. And as Rico Mariani points out, it also couples applications and libraries you may have thought were independent:

Two subsystems that both (loosely) use 2/3 of the L2 cache are going to use 4/3 of a cache... that’s not good. There may be no lines between them in the architecture diagram but they are going to destroy each others ability to work.

Sound advice as always. Please read the post, and keep one more "don't forget" floating around as you design and architect your systems and solutions.

Kate

Tuesday, 12 October 2010 10:58:52 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 10 October 2010
This is really fitting, isn't it? You have a product code named Dev10 and released as Visual Studio 2010 (with the tens not related to each other - see my history of Visual Studio and Visual C++ version numbers and release names). And today is 10/10/10 no matter what date format you prefer. So today is a great day to take a quick survey about Visual Studio 2010. Seven questions. I recommend you read them all before you start answering because they are asking about different aspects of the product and you wouldn't want to answer a question about speed with your thoughts about ui features. But it will take almost no time so go and do it.

Kate

Sunday, 10 October 2010 10:34:04 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 08 October 2010
I've gained a lot of Twitter followers in the last few days, and I'm pretty sure I know why. John Bristowe included me on a list of Canadian Developers that includes a full list of luminaries. I counted 112, and he's included blog links as well as Twitter handles. Most, but not all, are .NET developers. John follows all of them (us), which shows remarkable dedication. Why not take a look and see if there's someone there you'd like to follow too?

Kate

Friday, 08 October 2010 17:43:25 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 06 October 2010

The Tech Ed Europe Session Catalog has been updated with my third talk. In the order they're happening, I have:

WCL322 - The Windows API Code Pack: Add Windows 7 Features to Your Application

DEV311 - Modern Programming with C++0x in Microsoft Visual C++ 2010

WCL329 - Advanced Programming Patterns for Windows 7

The first two I blogged earlier, but the third is new. Here's the abstract:

Windows 7 development in managed code can be very simple, especially for those using the Windows API Code Pack. But your integration with Windows 7 doesn't have to be limited to simple interactions with the new API. This session goes beyond the simple into aspects of Windows 7 development that have, in the past, been left for you to explore on your own. See how to create a jump list with a task that delivers a command to your application, as Messenger and Outlook do. Explore a simple and powerful recipe for connecting to Restart and Recovery, with minimal effort. Discover how Trigger Started Services can reduce your power footprint, while giving your users better responsiveness. Explore all that Libraries has to offer beyond "File Open", and learn why using a library is a better approach than having a user setting for "save directory."

It's going to be a great week!

Kate

PS: About the fourth item you might see under my name ... stay tuned! :-)

Wednesday, 06 October 2010 17:38:21 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 04 October 2010

I started paying attention to "app compat" around the time Vista was in beta. It stands for Application Compatibility and refers to all the various techniques for ensuring that an application continues to work when it's moved to a new environment, such as from XP to Vista or to Windows 7. Some of these techniques involve changing the source code of the application and rebuilding it, but others don't. And paradoxically, in order to be good at those no-writing-code techniques it helps if you're really a good developer. It really helps if you have strong skills in areas that the .NET Framework generally hides away or abstracts from you.

There are folks whose job it is to solve app compat problems. It's the kind of job that really appeals to me, where you aren't exactly sure how things are going to go each day when you get up, and you think on your feet and react to what you find. And now there's an opening to be such a person if that interests you. Aaron Margosis writes:

The job is basically to figure out why applications that are important to the customer and that work on earlier versions of Windows (typically running as admin) no longer work on Windows 7, and then to get the apps to work correctly without reducing security posture and (typically) without seeing or touching source code. Don’t worry – we will teach you the tricks.If you enjoy problem solving on the Windows platform, you will love this job.

Interested? Have some experience writing Windows apps in native C++ or C? Know a little about how Windows works? Think that being handed unknown problems and asked to fix them is more fun than a regular job? Then read the blog post and apply!

Kate

Monday, 04 October 2010 17:29:10 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 02 October 2010
As a Canadian RD, MVP, speaker, and general involved-in-the-developer-community-person, I interact a lot with the nice folks at Microsoft Canada. It's not unusual for Canadians to be transferred to Redmond to work at "the mother ship" and I tend to keep an eye on them in their new roles and watch what they're up to. That's even more likely when they go to an area that interests me, as Mark Relph did in the summer of 2009.

He appeared recently on Dot Net Rocks to talk about developing for Windows and I really enjoyed listening to the episode. I'm not the only one keeping an eye out, obviously, since John Bristowe blogged a nice summary of the episode with helpful links. Be sure to read that, then listen to the episode, then come on back for the links.

Kate

Saturday, 02 October 2010 17:20:01 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 30 September 2010
By now I'm quite addicted to jumplists. When I want to open a PowerPoint deck or a Word document, and I have another one of those open, I just right-click that instance, spot my document among the recent documents, and click it to open what I want. It frees me from remembering exactly where documents are, or opening folders just to open documents they contain, and I like it a lot. I also like the tasks lists that more and more applications are adding, like these:

But older apps have so much less to offer:

What if you could add tasks to the jumplist of any application, without needing access to the source code? That's what Jumplist Extender does. There's a nice review on How To Geek that demonstrates adding tasks to the calculator that comes with Windows.

Neat, isn't it? Get your own copy and have some fun.

Kate

Thursday, 30 September 2010 16:13:56 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 28 September 2010

I love this image:

I know this is true because in my role as friends-and-family help desk, I get people to read the error messages and then I repeat whatever they just told me and then they are like "oh, I get it! Thanks! I'm glad I know someone who understands these darn computers!" This works over the phone when I can't even see the message.

Now why am I mentioning this, besides the fact I love this dialog? Because it comes from a lovely blog entry by Chris Jackson on why app compat problems can't be fixed by talking to the user about them. You slave over a lovely dialog with a button which might as well say CLICK HERE TO GET A VERSION THAT DOESN'T HAVE THIS PROBLEM or a checkbox that might as well say CHECK THIS IF YOU DON'T THINK ITS A PROBLEM AND ARE SICK OF BEING REMINDED but instead the user clicks JUST THIS ONCE I WANT TO USE THE OLD ONE BUT BE SURE TO TELL ME ALL THIS AGAIN NEXT TIME. 

Is there a solution? I don't know. But you need to know people are like this.

Kate

Tuesday, 28 September 2010 14:36:19 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 26 September 2010
The high levels of the Pluralsight On-Demand! subscriptions let you download the courses to your mobile device - perfect for learning while you're on a commuter train or bus, or other places away from your laptop. Check this video of a prototype of the experience on a Windows 7 phone. Looks great!

Kate

Sunday, 26 September 2010 16:32:01 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 24 September 2010
I've mentioned the Pluralsight library many a time. I have three courses in it: Windows 7 development, Extending Visual Studio 2010 without writing code, and Extending Visual Studio 2010 with code. There are a variety of subscription plans available, each with their own benefits. But of all the possible prices you could pay, I'm betting that "free" is the one you would be happiest paying. Am I right?

Well, if you have an MSDN subscription, you can have a month of the Pluralsight library for free. That should give you a great idea of what the courses are like and what you can learn from them. Try it out!

KAte

Friday, 24 September 2010 16:29:08 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 22 September 2010
I came across this blog post of a farewell email from Philip Su, written as he was leaving Microsoft after twelve years. You might expect that someone leaving a company would have some negative things to say about it, but not Philip. He sounds like a very nice person and one who's done pretty well by being nice. I thoroughly approve. It is full of specific and actionable advice as well as philosophy. I liked "Smart people understand why smart people disagree." and his thoughts on how people rank themselves, and what influences their ranking of others.

Well worth a read.

Kate

Wednesday, 22 September 2010 16:16:33 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 20 September 2010
This release actually slipped out at the end of August with little fanfare. But you really should check in to it. First, if you're already a Code Pack user, you'll want the update for the bugfixes and related tweaks. If you're one of the people who looks at the source code to this useful library, for example for an interop reference, you're going to find it much improved. One really obvious thing is that all the samples are now happy to convert to VS 2010 which had been an issue for me with 1.0.1.

As well there are three new capabilities: Shell Object Watcher, Preview Handlers, and Thumbnail Handlers. Shell extensions used to be offlimits from managed code because they run in process with either the shell or whatever process launched them (which could be anybody's app that uses the Common File Dialogs) and you were forbidden (but not prevented) from using managed code in that situation. The issue was that if the launching process was already managed code and it had a different CLR loaded, then weird things would happen when your managed code wanted your own CLR. But now that restriction is lifted, so you can write preview handlers (which are out of process, so you were allowed to write them before) and thumbnail handlers (which are in process and therefore were native code only before) for your own file types. The Code Pack makes that pretty simple, all things considered.

Download it, install it, and if you have issues someone is reading and responding on the discussions tab, so please join the conversation.

Kate

Monday, 20 September 2010 13:59:31 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 18 September 2010
A first glance, a book about social media might seem to be "dancing about architecture." But of course the target audience for the book is people who are not yet fully fluent in social media and it makes perfect sense to talk to such people using a medium in which they are fully fluent. That means book form makes sense.

I was lucky enough to get a preview copy of Working the Crowd: Social Media Marketing for Business from Eileen Brown. She and I have been working together and bumping into each other for years, which is why I agreed to read it. But I'm recommending it simply because it's good. It's full of no-nonsense advice and useful anecdotes. Just a few pages in, for example, she says:

If you want to progress in business, don’t wait to be discovered.  Make sure you have a great online profile and a positive brand.  

I'm not saying that no-one has thought of that before. I am saying that clearly stated and useful advice is a good thing, and this book is full of such advice. She clearly tackles this "this is just a fad" crowd, explains about "influencers" (like me) and lays out specific actions steps you can follow to have a good social media experience. This includes how to measure what is happening, which most companies desparately need. She even covers specific sites and tools, guidelines for blogging and Twitter, and how to protect yourself from reputation damage or legal consequences.

It's a good book. If you don't have a social media strategy yet, then reading this one will take you a long way forward. I recommend it to any business wondering about "the twitter". You can pre-order on Amazon now and I suggest you do, though you may want to adjust this link to point to the Amazon nearest you.

Kate

Saturday, 18 September 2010 13:36:43 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 14 September 2010

I love speaking at DevTeach. It's a must-do conference for a lot of A-list speakers and it's always fun and informative. I've blogged about it a lot already. Now Jean Rene has released the session videos online. So if you didn't get out to see us, you can still watch - how cool is that?

Scroll down the page till you see this:

Click on the title to watch the video, and on the Material link to get the powerpoints. (I recommend you watch these in the reverse order than they are shown - first Lighting Up, then Code Pack. Enjoy!

Kate

Tuesday, 14 September 2010 07:25:50 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 10 September 2010

Intel and Microsoft are offering free training:

Learn directly from Intel and Microsoft when you attend this free one-day course on parallelism and threading. This is a great opportunity learn about threading your applications for multi-core platforms. This course is targeted for Windows* C++ developers using Microsoft Visual Studio*.

The performance benefits of application parallelism on modern computing platforms will come from threading software. Learn how to develop software that utilizes many cores! Familiarity with threads is helpful, but not required (target is beginning- to intermediate-experience with threads, experts would not benefit as much from this course). 

They are going to cover concepts of parallelism plus instructor-led demos of Intel Parallel Advisor, Microsoft PPL, and Visual Studio 2010.

Sound good? The dates are coming up soon:

  • 20-Sept-2010 Montreal
  • 22-Sept-2010 Chicago
  • 28-Sept-2010 San Francisco
  • 29-Sept-2010 Seattle / Bellevue
Register as soon as you can!

Kate
Friday, 10 September 2010 09:29:16 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 04 September 2010

Back in July, I mentioned that my Extending Visual Studio course for Pluralsight was live. As I completed the course, it just kept growing and growing, so in the end it became two courses.

Customizing and Extending Visual Studio 2010 Without Code covers macros, snippets, templates, and so on - ways that you type stuff into a file, and thus make Visual Studio behave differently, but don't actually write C# or VB or C++ to make that happen. The modules are:

  • Overview of Visual Studio 2010 Extensibility  
  • Why write extensions for Visual Studio? 
  • Visual Studio Macros 
  • Visual Studio Snippets
  • Getting and installing extensions for Visual Studio  
  • The Visual Studio 2010 SDK
  • Visual Studio Start Page
  • The VSIX Format 
  • Templates
  • Deploying Templates

Customizing and Extending Visual Studio 2010 by Writing Code covers the rest of the story - cases where you actually write and compile code (in this course, the demos are all in C#) and thus make Visual Studio behave differently. The modules are:

  • MEF, The Managed Extensibility Framework  
  • Writing Editor Extensions
  • Testing and deploying editor extensions 
  • Visual Studio Add-Ins  
  • Visual Studio Packages
  • Extending Modeling and Diagramming tools
Together, these courses total 9 hours. Please let me know if they help you!

Kate


Saturday, 04 September 2010 08:23:51 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 31 August 2010
Let's say you read the entry about data structure visualizers and in addition to all the STL humour you got excited about being able to control the way the debugger shows your objects as you work at understanding your application at runtime. And then you were sad because you don't do native C++ work and you don't know how you could get the same behaviour in a managed application. Well, have I got a keyword for you - DebuggerDisplay. Don't like that MSDN page about it? Here's another. Quick and easy, at least for simple types with only a few member variables. Give it a whirl. There's a nice example with screen shots at Dev102.

Kate

Tuesday, 31 August 2010 19:19:29 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 29 August 2010
I somehow missed this John Robbins blog post from back in May. He calls out an excellent presentation on writing data structure visualizers presented at BoostCon 2010. Here's the title slide:



Oh yes, this is a fun talk. I wish I had a recording, but the slides alone are entertaining and useful. I am already planning to put some of this code into practice, and I must find time to check the other talks, too. The links are in John's blog post.

Kate
Sunday, 29 August 2010 17:43:29 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 27 August 2010
As a new school year starts to roll around I naturally pay a little more attention to articles about undergraduate education. I'm once again teaching a one-term course on Object Oriented Design and UML at Trent University in Peterborough. This is of course just one piece of the curriculum. Trent is an interdisciplinary place and its graduates are expected to understand the concepts that underpin what they're learning. In fact this is what I see as the main difference between those with a university education and those without (though there are exceptions on both sides.) It's one thing to learn, perhaps by rote, the steps required to make a certain kind of application, and it's another to understand what you are doing and why. The latter kind of person generally finds it easier and easier to learn new things, connecting them to things already known, while the former finds it harder and harder as a mass of seemingly-unconnected facts moil around in an overly-crammed head that feels ready to explode.

I approve of valuing concepts over specific how-to's. It's hard work keeping up with the very latest technology when all you're doing is using it. It's even harder when you're also working on concepts and trying to teach. I don't expect a university to teach students how to use a specific user interface framework (MFC, Winforms, WPF, whatever) -- I expect it to teach them user interface concepts, illustrated with some framework the prof happens to know that's generally available. The students can then learn a variety of UI frameworks over their careers. But that doesn't mean I approve of all the ways in which programming as part of undergraduate education varies from programming in real life. Two specific variations I have a problem with are team size and problem size.

In real life, it's rare to work all alone, all the more so when you've only just graduated. Most university computer science grads will join a team of 2-10 developers reporting to a lead of some sort, with various people from QA, user reps, the business people and so on having various positions of semi-authority, semi-teammate in relation to them. Yet undergrads are generally expected to work alone on all projects and never discuss them with anyone until handing them in.

In real life, problems are not well specified, certainly not as tightly as undergrad assignments are. Most importantly, in real life user input is bizarrely ill formed. Users type letters where numbers belong, leave mandatory fields blank, even deliberately construct complicated bad input as part of hacking attempts. Yet most undergrad assignments do little or no input validation or error handling unless those are the point of the assignment. And of course, most undergrad assignments can be completed by an inexperienced programmer working alone a few hours a week (10 at most) in a week or two while most real problems take weeks and months of work by one or more dedicated resources to produce even a preliminary solution.

Trent (and I presume most other universities) addresses these issues with a fourth year course in which a team of students works on a real problem for an outside entity - usually a local firm or charity. They must gather requirements, code, test and implement a solution, and present to their peers and professors a summary of the project. Some students benefit immensely from this, though most take on far too big a challenge and struggle to complete it.

My contribution is to point out to my students where things are being simplified for them, where things would be vastly different in real life. Undergraduate courses simply cannot be the same as on the job training, and I don't want them to be. I want my students to be learning concepts and underpinnings as much as language syntax and how to work particular tools. But I want them to understand that when they start to put all this to use, things will feel very different than they did during class time. An assignment from your boss and an assignment from me are very different. (I've blogged before that in real life, you don't get 7/10, you have to keep doing it until it is right.)

I don't have all the answers. Lots of people muse about this stuff. Here's the inventor of C++ on the same issues. Easy to complain, hard to do anything about it, but we can all do our bit.

Kate

Friday, 27 August 2010 16:45:29 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 25 August 2010

I mentioned Hilo when it was first released. This is a cool project doing Windows 7 development in native C++ with no frameworks - not MFC, for example - so you can really see just how it is done. It's not just code, it's also a walkthrough of their design thoughts, and explanation of that code.

The next application, Hilo Annotator, is ready. It features a ribbon, it uses the Windows Imaging Component, Direct2D, and so on. While you probably don't need an image annotator, you may find the code useful in your own applications. And remember, this is all native C++ code.

Your best place to start is the Visual C++ Team Blog entry about it. It's rich in links and has a nice screenshot too.

Kate

Wednesday, 25 August 2010 15:38:57 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 23 August 2010

Have you ever heard of the All-in-One Framework? Well I hadn't. They've been around for about 18 months. Back in February, on their first anniversary, they described themselves like this:

...this initiative [has been] developed by the CodeFx Project Group to an "all-in-one code framework" that includes more than 300 code samples, covers almost all Microsoft development technologies, ranks 18th among 13000 open source projects on CodePlex, received numerous kudos from customers, proved its values in real support incidents, and created a lot of win-win opportunities within the corporation.

It looks like the participants are all Microsoft employees and they're collecting pieces of code for any language and platform that can be used to solve real world problems. On the CodePlex site, they elaborate:

Microsoft All-In-One Code Framework delineates the framework and skeleton of Microsoft development techniques through typical sample codes in three popular programming languages (Visual C#, VB.NET, Visual C++). Each sample is elaborately selected, composed, and documented to demonstrate one frequently-asked, tested or used coding scenario based on our support experience in MSDN newsgroups and forums. If you are a software developer, you can fill the skeleton with blood, muscle and soul. If you are a software tester or a support engineer like us, you may extend the sample codes a little to fit your specific test scenario or refer your customer to this project if the customer's question coincides with what we collected.

For example, they've written a summary of the ways to call native C++ code from managed code. You can find the pieces elsewhere, but having them all together makes it easier for you to compare and contrast. They often blog additions as they are completed.

Now as you can imagine, a big team creating hundreds of samples needs some sort of vision and structure to keep things consistent. That's where the style guide comes in. And now you can download it from CodePlex. It's an 87 page Word document that covers everything you might wonder about, for both native and managed code, including tabs-vs-spaces (no tabs, please), how much to comment (as I blogged recently and not so recently), Hungarian Notation (use it in native code if you must, but it's a relic; do not use it in managed code), smart pointers (yes, but don't bring in all of ATL for them - I look forward to this section being updated for C++0x), the right way to implement IDisposable, and an especially nice section on Interop at the end.

I don't care what language you work in - this is a document you should at least skim. It could settle some arguments at the office, improve your code, and spare you from some horrible bugs. Download it, won't you?

Kate

Monday, 23 August 2010 15:26:16 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 19 August 2010

Telerik is having an Eastern Canada User Group Tour this fall. Evan Hutnick will visit 6 user groups to speak on Silverlight topics. Here are the details for the East of Toronto event:

Monday, September 13, 2010

Silverlight Development Best Practices

Speaker: Evan Hutnick

Location: Whitby Public Library - Room 1B
405 Dundas Street West, Whitby, ON, L1N 6A1

In this session, we will explore best practices of development with Silverlight. This will include a look at the current toolset (VS2010/Blend) as well as the different options for architecture and data access (to MVVM or not to MVVM, WCF RIA Services or not, etc.), as well as how you can structure your application for intelligent reuse of styles and resources, making it easier to design a large-scale application with a unified look and feel.

Agenda

Time Title
6:30 - 7:00 Socialize and refreshments
7:00 - 9:00 Presentation

See you there!

Kate

Thursday, 19 August 2010 11:06:59 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 17 August 2010
This is a story you might find hard to believe. A guy's project is cancelled and he's laid off, but he just shows up to his building (without being paid) and keeps working on it. He gets other people to help him and the product actually ships! One of my favourite quotes:

"The secret to programming is not intelligence, though of course that helps. It is not hard work or experience, though they help, too. The secret to programming is having smart friends."

Could this happen today? Almost certainly not. It probably couldn't even happen in another company. Remember the start of all this wasn't the support from former coworkers - that only happened once the product was almost done and the glamour of working unpaid on a feature caught on. The start of this was that a laid-off guy's badge still worked, and then when it finally stopped working he was able to tailgate through the doors every morning. Which leads to my second favourite quote:

"We wanted to release a Windows version as part of Windows 98, but sadly, Microsoft has effective building security."

A fun read and a reminder of how some people felt (and still feel) about creating software.

Kate

Tuesday, 17 August 2010 10:46:52 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 15 August 2010
I'm collecting link on Windows Phone 7 topics and now is as good a time as any to blog some of them:
Plenty of material no matter how you prefer to learn. Why not get started?

Kate

Sunday, 15 August 2010 10:01:48 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 13 August 2010
I'm curious about Windows Phone 7, and I've been playing around a bit with the development tools. So when I read that Joey deVilla was holding another of his semi-regular Coffee and Code sessions in downtown Toronto, and bringing his phone, I made the last minute decision to pop down there and join them. I'm really glad I did.

A steady stream of people stopped by, mostly just to look at the phone, but a few to deploy their code onto it and see it in live action. There were technical conversations, and some less technical, and a general good time. Joey's blogged about it (with pictures) and is looking for folks who think these would be fun where they live. Let him know if you would participate.

Kate

Friday, 13 August 2010 09:45:11 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 11 August 2010

On August 10th, Udi Dahan came from Haifa, Israel, to Whitby, Ontario, to speak at the East of Toronto .NET Users Group meeting. (Well, OK, he was in Toronto to teach a course.) He was talking about high availability and some architectures that let you keep a system up, for example, even while you're upgrading it. I took a few pictures:

Udi did a great job demonstrating that design up front and thinking about architecture doesn't mean you're not agile. Taking the time to architect something so that it's highly available gives you the freedom to be agile.

Watch for the fall schedule of the East of Toronto group in the next few weeks. And if you're visiting the area and would like to speak, let me know!

Kate

Wednesday, 11 August 2010 11:58:19 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 09 August 2010

Visual Studio 2010 has pretty cool Windows 7 integration. It gets jumplists right, for example:

But it could do more, and this little add-in adds some fun extras.

Here's a taskbar progress bar overlay during a build:

(If your build results in errors or warnings, you'll also get a taskbar icon overlay when it's done letting  you know about them.)

And here we have handy thumbnail buttons - for build, debug, and start without debugging:

Give it a whirl! You can download it from the gallery, or use Tools, Extension Manager, Online Gallery right in Visual Studio and search for Taskbar.

Kate

Monday, 09 August 2010 09:43:37 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 03 August 2010
Recently I had a nice chat with David Starr on the Pluralcast about Visual Studio Extensions. This topic is just so much fun. Visual Studio is where most of us live all day, and making it work perfectly for us is incredibly appealing. The introduction of the VSIX format with Visual Studio 2010 takes so much of the deployment pain away and is really changing the landscape of who is willing to write and share handy little things that make Visual Studio a tiny bit different - in a good way.

If you want to find some great extensions, do check out the Visual Studio Gallery or click Tools, Extension Manager and then click Online Gallery. There you can search for Triple Click, Ctrl-Click Go To Definition and many more. You can also look around to see if anyone's implemented your fun idea.

If you'd like to learn how to get in on the fun, please do check my course - I am having such fun writing it and as always learning a few things I never knew as I go. Also check the links David has on the Pluralcast page - they will get you started.

Kate

Tuesday, 03 August 2010 12:06:33 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 01 August 2010
I've done a lot of training in my day. I really enjoy it - you get immediate satisfaction, as a trainer, from seeing people leave changed by having spent a week with you. It's one of the easiest ways to have a major impact on someone's career and even their life. These days, there's a lot less of it going on. Partly it's because technology has enabled other ways of learning. Partly it's because we're a lot more "fast-paced" - someone who realizes they are missing knowledge will search for it online, ask on StackOverflow, watch a recorded talk or screencast and then carry on, rather than waiting several weeks to be able to go on course. There is still a lot to be said, however, for spending a day or three days or a week with a really smart person who has committed to making you better at something you don't know enough about.

So why would someone who was lucky enough to be "sent on course" by their employer, or who has invested their own time and money on taking a course, waste that opportunity with self defeating behaviours? I don't know, but I know for a fact that it happens. I've had people in my courses who didn't care, who didn't want to learn, who were hostile to the language or tools or methodology I was there to tell them about. Sadder still were the people who did care, wanted to learn, wanted to learn this topic, but still chose to act in a way that prevented it. Back in the day when you couldn't check your email in class (no wireless, and email on phones was rare) it was the folks who burst out into the hall at every coffee break and every lab period to go check their email and voicemail. Often they would say "I read the exercise and I only need 10 minutes for that, so I'll check my messages then come back and do it." My reply was always "if you really only need 10 minutes, do the exercise and then go check your messages." But this group of people can't make the training their top priority even for this one day, this one week. And often, they don't learn much as a result. In person training is probably a bad fit for them, and they might even give it a bad name. Then there's the showoff, the arguer, the "sorry I was zoned out can you say that all over again", and so on.

Paul Randal and Kimberly Tripp are still teaching more than I ever did. And now Paul's written up a lovely list of ten things NOT to do when you're on a course. None of it is SQL-specific and it's all good advice. Enjoy.

Kate

Sunday, 01 August 2010 11:58:21 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 30 July 2010

Oleksandr Krakovetskiy, a Regional Director in Ukraine, has written a cool Bing Maps application that shows you where Regional Directors are located and provides a bit of their bio. It's an interesting supplement to our blog aggregation and event calendar at The Region.

Hover over a star to see someone's name (as in the screenshot) - click it to read their bio and get links to their Twitter, blog, etc. You can zoom out to the whole planet or in to a region that interests you. Nice work, Oleksandr!

Kate

Friday, 30 July 2010 12:07:54 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 28 July 2010

Here are some interesting lists. Each of them is fleshed out in a blog post you really should read. I'll give you the lists so you know you want to read them.

First, Ted Neward on 10 Things To Improve Your Development Career:

10: Build a PC.
9: Pick a destination
8: Be a bell curve
7: Learn one new thing every year
6: Practice, practice, practice
5: Turn off the TV
4: Have a life
3: Practice on a cadaver
2: Administer the system
1: Cultivate a peer group

Some of those are metaphors: I'll let Ted explain them.

Then, we have Jim Carroll and How to Get Faster When the World is Faster:

  • build up experiential capital
  • master collaboration and share
  • focus on tactical to strategic transitions
  • fuse generational insight
  • take on anticipatory projects
  • be a farmer
  • displace indecision
  • implement quicker
  • think bold

The advice is aimed at entire companies, but I think it can resonate well with an individual. Again well worth the read.

And then there's John MacIntyre and 11 Personal Programming Assumptions That Were Incorrect.

  1. The customer and user are the same person.
  2. You isolate and kill all bugs without exception.
  3. Writing beautiful software as an act of craftsmanship.
  4. Working 24/7 would be rewarded.
  5. Vendors can be believed.
  6. You are not actually working from the monitor.
  7. That I wasn’t a very good programmer.
  8. You need to / should grok a language or tool before you even start.
  9. You don’t say you know something unless you’ve grok’d it.
  10. Other programmers saw beauty in their work.
  11. The best programmer is recognized.

There's some cynicism in there, but others might call it realism. I suspect most of this you have to learn from experience, but perhaps you recognize a few?

Kate

Wednesday, 28 July 2010 11:48:33 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 26 July 2010

The latest refresh of the Windows Phone 7 Tools is now available! Combined with Visual Studio 2010 (any edition, you don't need Express any more, though if that's what you have it will work) you can create apps in no time flat and run them on the emulator. I couldn't resist:

If you've ever done a WPF or Silverlight app, you can do Hello World in a matter of minutes. I put the picture in there just so I could say I had edited the XAML beyond putting my own name in an attribute. If you'd like to do some serious work, there are all kinds of training resource links on Yochay's blog. Don Burnett has some interesting thoughts on why Blend gives you power and productivity for Windows Phone 7 development and how there's just nothing like it for iPhone development.

I have some fun ideas I want to try that will take a little more than 5 minutes, so I'll report back on that front soon. I'm going to put my phone posts in my Client Development category, since after all, client development includes devices like phones just as much as it includes pure Windows apps.

Kate

Monday, 26 July 2010 15:16:30 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 24 July 2010

The Productivity Power Tools is a super cool pack of extensions that will make Visual Studio 2010 tremendous fun, and make you more productive. Now the team has announced a new version. This lets you turn individual tools on and off, so if you love Highlight Current Line and Go To Definition, but hate Align Assignments, you're in luck:

There's also new tools in the pack. Solution Navigator "merges functionality from Solution Explorer, Class View, Object Browser, Call Hierarchy, Navigate To, and Find Symbol References into a single view" according to Adrian Collier, and lets you pin tooltips of information near the place in the code where you use them, pops up previews of image files when you hover over them in the tool pane, and just generally reads your mind to make you a happier and more productive developer.

This package had me at "Go To Definition" but these additions make it even more of a must have. You can install right from within Visual Studio 2010, too. Choose Tools, Extension Manager. Click Online Gallery. In the search box type Productivity.

When you see this dialog, click Install:

You'll be prompted to restart Visual Studio:

Click Restart Now and wait a sec. And that's all it takes! You really will love it.

Kate

Saturday, 24 July 2010 12:15:24 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 22 July 2010
Would you like your machine to use up to 25% less power? Are you on XP now? You can see a big improvement by switching to Windows 7. There are some other things you can do too, like changing some drivers, but those are probably a bit difficult for most people. We have a number of machines kicking around the office that we've left on XP because they're really just file and print servers, people don't use them directly very often, so the obvious UI benefits of Windows 7 didn't seem relevant. But lowering the power bill is relevant, right? Or, if you're out and about with your laptop, having the battery last longer is relevant, right?

Here's the blog where I found some numbers ... it's a summary of a longer whitepaper and you should probably read that too.

Kate

Thursday, 22 July 2010 11:55:10 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 20 July 2010

I mentioned I've been recording videos. That's because I'm doing another Pluralsight course. This one is on Customizing and Extending Visual Studio. About half of it is live already:

  • Overview of Visual Studio 2010 Extensibility
  • Why write extensions for Visual Studio?
  • Visual Studio Macros
  • Visual Studio Snippets
  • Getting and installing extensions for Visual Studio
  • The Visual Studio 2010 SDK
  • Visual Studio Start Page
  • The VSIX Format

There's more to come, of course - I'm about half done. I'm really enjoying this material. You can get your work done a lot faster if you tweak Visual Studio to meet your needs. It doesn't have to cost you money and it doesn't have to cost you much time. Take a look!

Kate

Tuesday, 20 July 2010 10:41:26 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 18 July 2010
Pluralsight On-Demand! now has a second Windows 7 development course. I'm happy to see this - Eric and I co-ordinated while I was doing my course. In the first modules that are online now, he tackles topics that I did not - Restart and Recovery, Task Dialog, and Search. Feel free to use both courses to make yourself a better Windows developer!

Kate

Sunday, 18 July 2010 15:31:09 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 16 July 2010

I've had a chance to watch a number of the videos from the Windows Summit - an online event to help you with Windows development of all kinds. You can learn more about it and register at the main summit site, or check the lists of sessions for developers. The only trick is that once you've registered, you need to go to a different site to actually watch the sessions. Once you know that (and there is a link on the main site) you're all set.

I've been getting "Windows 7 for Developers" training since before the first public beta, so I had seen a lot of this before. But several sessions were noticeable improvements from the way that material had been covered in the past, and none of them were poorly done, so I recommend this as a way to learn the concepts that are important to anyone writing for Windows 7, and to learn the advantages that Windows 7 can offer to you as a developer and to your users.

I saw three different approaches to code in the sessions I watched:

  • Full on demos with Visual Studio involved
  • Code on the PowerPoint slides, and links to resources that include code demos
  • Mention the name of the API but don't show how to use it
I also saw a mix of native and managed code, with some sessions going all the way to the native side of the spectrum and some all the way to the managed side. Most of the sessions mentioned the Code Pack, of course, and call out a link to it in their resources.

Even if you know all about the taskbar, maybe you could learn about power management, or background services, using sensors, or writing location aware applications? It's really worth taking a look around.

Kate

Friday, 16 July 2010 13:46:01 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 12 July 2010

There are two services I use not just every day, but many many times a day. One is email and the other is Twitter. Facebook and StackOverflow also get their share of attention, but one thing that sets Twitter apart from Facebook and StackOverflow is the proliferation of clients you can use to access it. You can go to the web page, and do it all in a browser, or you can get any of the many clients available to give you a richer experience. The same is true for email - I can use Outlook or I can use OWA and do it all in a browser.

Recently I found myself facing a full week away from home and the office and with no way to get a VPN although I had great internet access. I could listen to CBC radio and watch Canadian TV but I could not bring my email in Outlook. The first day was ok, but not great. I found myself wanting to email people, and I had to open Outlook to poke around and get their email addresses, then paste them into the OWA new message. It was so different from the usual fast-as-thought process of typing the first letter or two of their names and pressing tab. I also had to delete my own spam, because I don't like server-based spam filters and have been really happy with my client-side spam settings in Outlook. The little preview windows weren't as informative as I wanted, my old appointments weren't showing up, there was no to-do bar, and deleting messages or waiting for the new window when I replied to messages just took too darn long. By day 3 I was about insane. Finally my favourite sysadmin (who I was smart enough to marry almost 30 years ago) got Outlook-over-http working for me and I could go back to normal.

I was utterly astonished at the effect on my mood that not having my client application had on me, and the effect of getting it back. It was very distinct and unmissable. The browser solution just wasn't good enough for me - and OWA is an amazing feat of engineering, with a way richer UI (delete key works, F keys work, etc) than most browser-based solutions. It got me thinking, once my cheerful mood had let me catch up on some outstanding work, about client apps in general. Why do I only use Twitter in a browser? I've tried a whole number of clients but I always end up back in the browser. I think it's because clients have to be well-designed to work well. If they hog resources, jump in your face too much with focus stealing or balloon tips, or insist on being sized a certain way then they don't get a chance to show you their good side. Twitter is pretty young and I don't think we've really had time to winnow the good client features the way we have with email. With that in mind, and believing a good client really will be a better experience, I've decided to try MetroTwit. I've heard really good things about it and I honestly believe that client apps make more sense for these sorts of information feeds. So far, I like it. I get toast for new tweets, a new tweet counter as a taskbar overlay icon, and such a delicate consumption of my CPU and disk activity that I can't tell if it's running or not.

You might also be interested to hear why the developers chose WPF, and what that led to for the team:

over just a couple of months, what we’ve achieved with MetroTwit was simply not possible without WPF considering the few precious midnight hours we put into it on most days. According to the rest of the team (the real developers), apparently I owe much to data-binding which I’ve been told is nothing short of a miracle.

If you have a choice of using a browser or using a client app, which do you choose? Is it always the same or does it vary with the business purpose you use it for? While we don't represent our users exactly, we can still learn from our own personal choices and our emotional reactions to software.

Kate

Monday, 12 July 2010 11:47:25 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 10 July 2010

I'm not sure when this started, but DevX has a whole area for Visual Studio 2010 articles. They've got handy links to download a trial and a training kit, walkthroughs of creating extensions (a simple blogging one, and adding your own language to the IDE), and lots more. It's a combination of articles, webcasts, and downloads that cover not just Visual Studio but some of the things you can create with it and what's new in related tools. Of course I've seen some of the material before, but that just shows that it's comprehensive. Take a look around!

Kate

Saturday, 10 July 2010 08:31:40 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 08 July 2010

I'm an optimist. I'm always looking for (and usually finding) the bright side. I think this has served me very well over the years. Recently I read an interesting Fast Company article (an excerpt from a book) that described a problem solving approach based on looking for the bright side - well actually, what they call the bright spot:

Our focus, in times of change, goes instinctively to the problems at hand. What's broken and how do we fix it? This troubleshooting mind-set serves us well -- most of the time. If you run a nuclear power plant and your diagnostics turn up a disturbing signal once per month, you should most certainly obsess about it and fix the problem. And if your child brings home a report card with five As and one F, it makes sense to freak out about the F.

But in times of change, this mind-set will backfire. If we need to make major changes, then (by definition) we don't have a near-spotless report card. A lot of things are probably wrong. The "report card" for our diet, or our marriage, or our business, is full of Cs and Ds and Fs. So if you ask yourself, What's broken and how do I fix it?, you'll simply spin your wheels. You'll spend a lot of time agonizing over issues that are TBU - true but useless.

The article gives a number of examples of not trying to find the major underlying system cause and solve it with huge missions, but instead trying to find a localized success and encouraging it to spread. Interesting concept and well worth a read. How could you apply it to that totally-messed-up project or that new hire who has turned out to be so wrong?

Kate

Thursday, 08 July 2010 08:18:19 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 06 July 2010
I watched a video the other day from someone whose blog I read and whose presentations and sessions I have enjoyed. I was drawn to it because it said C++ in the title, and it was a really non-C++ person. Oh my. I did manage to last about 12 minutes, until it was pretty clear there really wasn't going to be any C++ content at all. There even was a tiny bit of useful content in those 12 minutes. But it was all mixed in with joking between the hosts, including something that must have been a running inside joke, because they sure were liking it and I didn't get it, snips of music, throwaway lines about "as we all know" when I didn't know what they were talking about but it might have been interesting to explore, and actual interesting things. Plus, the two hosts disagreed a lot, which I suppose was interesting, but impeded my ability to actually learn what one of them was trying to convince me of or explain to me. I couldn't watch to the end of it.

It got me thinking about the number of times I have read people blogging that they don't bother listening to podcasts. The theory goes that podcasts and videos are super quick to produce - just turn on the camera or Camtasia, plug in the mike, press record and off you go. A lot of them are not edited at all. And it shows :-). There are good podcasts (.Net Rocks comes immediately to mind, and not just because I appear on it once or twice a year) and they are the product of significant effort. There is conversation in advance about "what are we going to talk about". There is awareness of how the conversation is going, and genuine work during the conversation to keep it flowing well. And there is editing afterwards. All of this combines to make a higher quality experience for the listener, which is the point, right? You can find a zillion bad podcasts, and the good ones have one thing in common: they are motivated by the experience for the listener, not the ease or fun for the creator. I wish that wasn't so, I wish there was a magic easy way to get your knowledge out there to the community that was quicker than blogging or writing books or teaching courses or traveling to far away places and getting up on stage - but there isn't, they all take work.

I have all this in mind while I'm recording some screencast/tutorial type videos. When I give an actual presentation, I probably say um and ah and you know. I hope I say it less than some folks, but I still expect I say it. I know for a fact I say it when the mike is plugged in. How do I know that? Because right after I hit Stop on the recorder, I hit Edit. And I listen to the whole thing and whenever I hear um and ah and you know, I edit it out. I also edit out the pauses and the messups. I think that's the exchange we make between in person and recorded materials. An in person presentation or session or training is spontaneous and adjustable - you can ask me a question and I can go deeper on that one thing you want to know more about. When it's recorded, you can't interact. But hey, you get a crisper and more polished presentation. You don't have to ever watch a demo fail. Products that in real life take 15 seconds to launch are already launched when the demo starts, or appear to launch in two seconds because I edited out 13 seconds of splash screen.

This means that producing a ten minute video is going to take me way more than ten minutes. First, there's prep time - writing slides, creating starting point demo code, practicing a demo and ensuring that I have a good example that really covers the point I want to make, rehearsing to be sure I can do it crisply, and all of that. When I present at a conference or user group, deliver training, or even just visit a client one on one to show them something, I have to do all that prep. It's often about 3-5:1 - for a one hour talk there will be 3-5 hours of prep - and that's if you know the material cold, it doesn't count learning what's new in product X or learning how to do thing Y. Don't underestimate this effort. Folks who skip it find themselves the bad example in other people's blogs. Then there's rehearsing the whole talk a few times, which I generally don't do for recorded videos but have to do for in person material. What recorded videos need is about 12 minutes to actually record it, with pauses and ums and false starts and all, then 30 minutes or so to play that and edit out the two minutes that don't belong.

I'm not complaining, mind you. I think if a job's worth doing, it's worth doing right. And for videos, that means prep beforehand and editing afterwards. Is the medium the message? Well, you can't do the exact same thing in different media (eg in person or video) and expect to deliver the exact same message. Um in person and um in your video carry different messages. Joking with the guy who introduced you at a user group and joking with the guy who introduced you at a 5000 person keynote carry different messages. McLuhan was right.

Kate

Tuesday, 06 July 2010 14:24:37 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 04 July 2010

About 6 weeks ago I blogged about the technology behind the amazing Olympics experience I had here in Canada watching CTV, and my American neighbours had watching NBC, as well as the Norwegian and French coverage. Now another case study has been released from that work. This one focuses on the way the broadcasters were able to insert ads (to pay for all that glorious coverage) and build highlights packages. As it says in the case study:

NBC teamed with premier technology vendors, led by Microsoft, to cover 4,485 hours of 2010 Winter Olympics events in HD via Microsoft Internet Information Services (IIS) Smooth Streaming to a video player based on Microsoft Silverlight. In addition to pleasing sports fans, the programming offered an audience of more than 15.8 million unique visitors to the many advertising partners of NBC. The exceptional capability of IIS Smooth Streaming and Silverlight technologies gave technology vendors the tools they needed to deliver midstream ads while providing an engaging experience for Olympics enthusiasts.

I find it interesting that Canada, with one-tenth the population of the USA, consumed double the hours of video. Not per person mind you, but total. We were lucky enough to have a lot more to choose from. As you can see when you look at the unique visitor counts, it is mostly that we each watched a whole lot of Olympics back in the dark winter months. Definitely worth a read to see how it was done and how it will no doubt continue to be done in the future.

Kate

Sunday, 04 July 2010 15:57:53 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 02 July 2010
I love demoing restart and recovery. This is the feature that will bring many users to Windows 7 - getting your work back even after the application blows up. Sure, Word saves your document every 20 minutes - but why does it seem I always lose 19 minutes of work? In my simple demo apps, there's a form with one or two controls on it, and one is some text, and when the application blows up I write all the text out, and then on restart I reload it from wherever I wrote it to. It's simple and for most applications it's exactly what you want. But for some applications that approach won't work as well. For example, what if you have an MDI application and the user has 20 or 30 documents open, each with unsaved changes, when the application is terminated? There may not be time to save all those unsaved documents. And then on restart, perhaps the user doesn't want them all restored, or at least not with their real names... it can get complicated.

You are going to need to know your own application and make an intelligent decision about how to handle restart and recovery for your application. But it might help you to know how a certain MDI application near and dear to all our hearts does it ... Visual Studio. Visual Studio does a Word-like autosave every 5 minutes. When the application blows up, it doesn't do anything in particular on the way down. But when it's restarted, it takes a look at the files it has auto recover versions of and asks if you want any of them. You might, you might not, and as the user it's up to you. Zain Naboulsihas a tip-style blog post that explains how it works and how you can control it. Read that for its own sake, since you're probably a Visual Studio user and should be using it as effectively as you can. But also take the opportunity to think about a good design for restart and recovery in your application, which is probably a little more complicated than one text box and one other control.

Kate

Friday, 02 July 2010 20:37:43 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 30 June 2010

I'm recording some videos again (I'll announce when the project is live) and I'm doing it, as I really like to these days, in a bootable VHD. I've got the environment set up just the way I like it, without messing with my day-to-day setup, and as an extra bonus I avoid the distractions that Outlook, Instant Messenger, Skype, and the Favorites menu in my browser have to offer. When I went to record the first video I realized I had forgotten to install Camtasia in the VHD so I quickly downloaded a trial from www.techsmith.com. I got to work recording my video, editing it, and so on. Then I rendered the video. This can take a few minutes, but I don't complain because I know it's doing a lot of work. But I got a great surprise ... this latest version uses the taskbar progress bar overlay, so that I can put the rendering into the background and work on something else full screen while it renders. I can still see at a glance how it's doing, but I don't have to keep the little progress window on top. It's a really nice touch.

Then as serendipity would have it I spotted this video on Channel 9 that calls out this and other Windows 7 features in TechSmith products. It's only 9 minutes long, so go and watch it. And if you haven't added Windows 7 features to your client apps yet, why not? It really makes a difference.

Kate

Wednesday, 30 June 2010 19:22:20 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 28 June 2010

With summer finally under way for real it seems like a million years until the fall. But in the world of event organizing, autumn is just around the corner. Session selection for TechDays is in the final stages and I'm looking forward to seeing the completed list. In the meantime, the Early Bird pricing is still in effect.

There will be an event roughly every two weeks from mid September to mid December. In each city (Vancouver, Calgary, Edmonton, Winnipeg, Toronto, Ottawa, Montreal, and Halifax) it will be two days, and while most of the sessions will be the same in every city, a new Local Flavours track will vary from location to location - just as the local tech folk vary! You can register now - go ahead! If you have some questions, Damir has answers for you.

Kate

Monday, 28 June 2010 19:22:03 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 26 June 2010
If you use the Microsoft Visual C++ debugger, the team would like to hear from you. They have a quick (6 questions!) survey they would like you to take. Here's the survey, and the team's post about it, if you'd like to leave them a comment.

Kate

Saturday, 26 June 2010 19:25:31 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 24 June 2010

Interested in playing with extensions to Visual Studio 2010? You should be, just for the fun and productivity of it. But in case you need extra incentive, how does this sound:

What will you create with Visual Studio 2010?

Enter the Summer of Extension Competition and let the US and Canadian Developer community know! Show your peers what kind of extension you can build for Visual Studio 2010 for your chance to be featured on the ReadWriteWeb website. Other prizes include a one-year MSDN Embedded subscription license (a $1,199 USD value!), an Xbox Elite prize bundle and a Natural Wireless Ergonomic Desktop 700 Keyboard and Mouse. Prizes will be awarded to winners in both countries.

Just create your extension, upload it to the Visual Studio Gallery, and tag it with rww to enter. (ReadWriteWeb and Microsoft are sponsoring the contest.) More details at ReadWriteWeb, where you'll also find some handy resources and links.

Kate

Thursday, 24 June 2010 15:50:25 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 22 June 2010
The last (at least for now) in my series of articles on Visual Studio Extensions is live on Code Project. This one is on creating your own item and project templates. Like all the articles, it's really a train-the-presenter package designed to help you deliver a talk on this topic at a user group or Code Camp. If you care about the topic and would just appreciate the shortcut of a deck, working demos, and speaker notes that combine to hit a good talk length, then this is just what you need. It's all highly supplemented by videos - of all the demos and in one case of the entire talk. A quick reminder of the 7 articles I have there:
If you would rather learn the material than deliver the session, I suggest you follow the first few steps I recommend in the Introduction for a presenter:
  • If there is a recording of the entire talk, watch it from start to finish.
  • If there are only recordings of the demos, open the slide deck and read the slides to myself, pausing to play the demo videos at the appropriate points in the deck.
  • Read through the speaker notes to see what the author suggests I add to each slide as I present it.
You owe it to yourself to learn about extensions. Honestly, creating an item or project template will save you time the very first time you use it - it's quicker to make an use a template than to copy an old project and hand edit the file, project, and class names. And the astonishing array of free extensions on the Visual Studio Gallery is sure to include something that will save you time and frustration. Give it a whirl!

Kate

Tuesday, 22 June 2010 16:06:20 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 20 June 2010
The Windows API Code Pack is a wonderful library. It wraps many Windows 7 and Vista features so that you can use them from managed code without learning any interop techniques. I've made extensive use of it in demos, presentations, and training materials. I've also blogged about it extensively, primarily in my Client Development category and Windows 7 category.

Folks who've seen the Code Pack in action tell me they are going to use it in their Windows 7 applications immediately, and they're right to do so. Well now I'd like to do a bit of a headcount. If you have a real application (not a demo written to show how Windows 7 features work or how the Code Pack works) please drop me an email (you can see my domain, right? well my address before the @ is just my first name) and tell me who you are, where you work if you made the app for work, what the app does, and whether it's for sale or for internal use. Plus anything else you want to tell me like the Code Pack saved you weeks of work or got you promoted or helped you win the lottery :-). Unless you specify in the email that you're only telling me this, I will be passing it along to some other people, so keep that in mind. I really want to hear what you're using it for, so please let me know!

Kate

Sunday, 20 June 2010 13:26:23 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 16 June 2010
I've written about banned APIs before - for security reasons some C Runtime functions like strcpy should not be used, and instead you should use replacements like strcpy_s that perform some checking before trusting the strings they're handed. You might also know that I really like the extension capabilities in Visual Studio 2010.

So how can I resist a Visual Studio extension that gives you wigglies if you use a banned API?


You even get a handy tooltip suggesting replacements. This is a must-install for any C++ developer. You can get zip of the source (you'll need the Visual Studio 2010 SDK to build it) with a prebuilt VSIX in it from the Security Development Lifecycle blog. It doesn't seem to be on the Visual Studio Gallery yet, but it should be! If you haven't met the VSIX format yet, prepare to be pleasantly surprised - it's a self contained one step installation vehicle for a Visual Studio extension. Just double click it and Visual Studio does the rest.

Kate
Wednesday, 16 June 2010 12:03:40 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 14 June 2010
Metaphors can be dangerous things. Just recently I got into a Twitter conversation with someone who was using the metaphor "it's like leaving your car unlocked, or your front door" - meaning something you would never do and would expect to be dangerous. But in my neck of the woods, that metaphor triggers different neurons, having a meaning more like something you regularly do and would never expect to be a problem. (I not only never lock my car in my or a neighbour's driveway, I also know many people who would leave their keys in their cars in someone else's driveway.) It doesn't really matter whether you think door locking is normal, the point is your metaphor needs to have the same meaning for your audience as it does for you.

For an example of a metaphor landing really badly, check out Scott Berkun's blog post on the "periodic table of visualization techniques." Now unlike Scott (who thinks the periodic table is obscure, complex, and unfondly remembered) I really like the periodic table. I think it carries a tremendous amount of important information in a very compact way, and explains some relationships succinctly. But I think it makes a poor metaphor when trying to discuss all the different ways you can present information visually. Plus, their particular version of it doesn't seem to have any actual periodicity, anything that's the same in each column, anything that's the same in each row, or any reason for the lengths of the rows. Always understand a metaphor before you use it. Otherwise you're working against your own goal - helping someone else understand your point.

Kate

Monday, 14 June 2010 11:52:59 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 10 June 2010

Another terrific Tech Ed has come to a close. I never really got used to the weather in New Orleans, but I loved the food, I loved that we could walk to just about every dinner or party, and I loved the locals I met. I would have liked a little less walking within the convention centre itself - that building is a mile long and I had to go the whole length and back several times each day!

I have a few pictures from inside for you.

This is the "RD couch" in the community area. Good for hanging out while waiting to be on Channel 9. As you can see, non-RDs were hanging out here too.

The table for the Code Pack was giving away copies of the Code Pack on these slightly bizarre USB keys. I meant to keep one for myself but got carried away handing them out at my session (along with cards for a free trial of the Pluralsight On Demand! library). Also the shot-glass-on-a-string-of-beads is pretty brilliant for New Orleans swag. "Give it a shot!" they say.

This is the room for my C++ talk. That's Juval Lowy, who spoke right before me, up on stage. You can see he did a pretty good job of filling the room, which holds 1000. I got somewhat less than that, but was happy with the turnout and the evals for the C++ talk. Both my talks are available online already, by the way, which is astonishingly quick.

I love the "face time" with Microsoft people (including "my" product teams as well as folks in marketing, developer outreach and education, and so on), with my fellow RDs, MVPs, INETA folks, and speakers of all stripes, and with attendees. Booth duty, where you spend long minutes shifting your weight from foot to foot praying someone will come by, is a bit like of box of chocolates. An eager attendee comes forward, meets your eye, smiles ... for every "can you tell me where to find the blinky Windows 7 pen?" there is a good solid question or expression of interest in my actual technology. I got one question on Wednesday from someone who just wanted to know what booth to go to for it to be answered, only to learn it was this booth and that in fact I was probably the only person in building who could have answered it. I sure liked that one!

Next year, Atlanta:

But I may not have to wait a year for another Tech Ed experience. :-)

Kate

Thursday, 10 June 2010 10:09:42 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 08 June 2010

Are you interested in developing for Windows 7? I bet you are. I know I am. So perhaps you would like (OK, I'm quite sure you would like) the Windows Summit. It's a virtual event hosted at http://www.microsoft.com/windows/windows-summit/ and it claims of itself:

Windows Summit 2010 is designed for people who engineer and test Windows 7 PCs, devices, and software. Three technical tracks are offered to show how to best use Windows 7 and Internet Explorer, helping you build great solutions and gain a competitive edge.

It's free (you just have to register) and features about a dozen talks in each of three tracks. The Software track will release June 16th, so you can mark your calendars for then and amuse yourself in the meantime with the Device and System tracks. The Software talks will cover multi touch, ribbon, IE9, Windows Error Reporting, sensors and location, power awareness, background activities (that's services and scheduled tasks) and performance. All good stuff.

I'll report back in mid June when I can actually play the sessions and look at the downloads, but it seems to me it's going to be a very good resource.

Kate

Tuesday, 08 June 2010 09:45:15 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 04 June 2010

Hey, this was such fun at the launch and they're doing it again for Tech Ed!

This time my topic is Women in Technology. I'm with Karen Forster, Lisa Feigenbaum and Jennifer Ritzinger and it's sure to be a very fun half hour. PLEASE tweet us questions to @c9live! I'm on at 4 pm Central on Monday the 7th. Talk to you then!

Kate

Friday, 04 June 2010 20:17:18 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 02 June 2010
I posted a quick hit on MFC and Windows 7 back in April, mentioning the ribbon and showing you how simple icon overlays and jump lists are. Now Marian Luparu has a nice long article in Visual Studio Magazine. He covers tabbed thumbnails, the ribbon, multi-touch, jump lists, and shell integration for your own thumbnails, preview, and search integration. Then he manages to mention graphics and animation APIs and parallelization. Can't argue with his conclusion:

Overall, Windows 7 is an exciting release for developers. With thousands of new Windows APIs made available to native coders, Windows 7 provides an enhanced experience for desktop applications.Visual Studio 2010 is the IDE of choice to take advantage of the Windows 7 platform. With enhancements in MFC and the ATL and the addition of new IDE Designers and Wizards, Visual C++ 2010 gives you the opportunity to be on the cutting edge in terms of leveraging OS functionality.

Check it out!

Kate



Wednesday, 02 June 2010 14:09:59 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 31 May 2010

John Bristowe has posted a nice list of tips to get ready for any big conference. I'll let you read the details there, but here's a summary.

  • Have a plan
  • Bring a good backpack (I'll just add, don't use the conference bag during the conference - thousands of people have the identical bag and it's confusing)
  • Wear comfortable shoes
  • Bring lots of business cards (yes! You are here to meet people and people are here to meet you! Make it stick)
  • be able to get by on crummy or no wireless
Give yourself time before, during, and after the event. You need to plan and make goals in advance. While you're there, go to talks, be open to serendipity (conversations, extra talks, booth visits) and don't forget to go to dinners and parties for vital face time and relationship building. Then you need to have time to follow up when it's over. This happens once or twice a year for most people. Putting an extra ten or twenty hours into it will make a HUGE difference.

Kate

Monday, 31 May 2010 14:03:47 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 29 May 2010

It's no secret that I'm not in my twenties. After all, I'm in my fourth decade of being paid to program. (To be fair, you enter that decade as you pass the doing-it-for-30-years mark.) I have gained a lot of experience in all that time, and not all of it is programming experience. I am slowly gaining wisdom and judgment in general. But am I losing things? Am I perhaps closed off to new experiences, or stuck in the mud? Is there anything you can in general conclude about a person because of their age?

I have two problems with that line of thinking. The first is that differences between any two individuals in a group are always larger than the differences between groups. I can easily find two 20-somethings who differ from each other more than either differs from a 30-something or even an 80-something. Women in general may be shorter than men in general, but I'm sure we all know a man who is shorter than most women or a woman who is taller than most men. What you know about the group doesn't necessarily apply to the individual. My second problem is specific to age - some age related effects are actually related to "you went to university in the 70s" or "you learned to code in the age of GUIs" more than to how old you are, others are actually about your life experience, still others your work experience. Two 60-somethings may not have gone to university at the same time as each other or learned to code at the same time as each other. That makes it even harder to generalize based on a single piece of information - when you were born.

A few months back, 'Dave' posted a series of myths about older developers and then debunked them. Do you find yourself believing any of these?

  • Older software developers are more expensive
  • Older software developers are less flexible and less capable of learning new technologies
  • Older software developers are less able to perform the arduous tasks of software development (read: work long, painful hours)
  • Older software developers are less mentally agile
  • Older software developers are more jaded and cynical

My only issue with this list of myths is that it doesn't contain positive ones. It's also a myth that older developers are wiser, more tuned to business issues, better at talking to others, and so on. Some are -- I strongly believe I am -- and it takes a while to get there, but time passing isn't the only thing that brings about that change in a person.

I have to work with people a lot younger than me every day. Perhaps some of them think less of me because of my age at first. I'm pretty confident that doesn't last. If you're not an "older programmer" yet, I hope you aspire to be one someday.

Kate

Saturday, 29 May 2010 13:56:45 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 27 May 2010

Update: fixed the link. Thanks, Hanako Izumi.

C++0x is finally becoming real to me. I started demoing some C++0x features over a year ago; but now here is Visual C++ 2010 and it's just packed full of goodness. Does it have everything? No. Does any compiler? Good question.

Here is a handy table from the C++ team about what Visual C++ 2010 supports. The MSDN blog redesign seems to have borked the table a little, but the colours should probably be all you need if you know that the last column is VC10. Use View Source if you must know more. Scott Meyers keeps a spreadsheet, and is nice enough to export it out to the public web, covering gcc and VC, with handy links to more details on the features or a substitute (usually something from Boost) you can use if it's not there. He has plenty of helpful links on the cover page, too. There's also a wiki with less detail, but covering more compilers.

If you're wondering about the state of the standard, and whether x is going to end up being A, B, or C, your best bet is to read Herb Sutter's blog. He posted when the Final Committee Draft (FCD) was text-complete, and a pointer to how anyone can comment on it if they wish to.

If you haven't been paying attention, now's the time to catch up!

Kate

Thursday, 27 May 2010 13:39:39 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 25 May 2010
When I started out in this industry (and I'm in my fourth decade of being paid to program) there was a definite culture of rudeness within it. Smart people weren't just allowed to be rude to not-so-smart people, it was expected. Being rude to others was how you proved you were smart, whether it was with a cutting insult thought up on your feet, or with a cruel proof of just where they had gone wrong. As a group we were especially fond of insulting those who weren't developers with brilliantly disguised insults they couldn't understand, or so the theory went. Who hasn't heard someone refer to "error codes" like PEBCAK or ID-ten-T?

But over the last generation or so I've noticed a switch. I hear the chair, keyboard thing still, but only self-referentially. That is after someone has asked for help, perhaps with a starting position of "I have found a bug in Windows", and then sorted it all out and realized they were doing something wrong, they may say "well it turns out the problem was between the chair and the keyboard after all, eh?". When I interview developers for a job at my firm, I ask about working with non developers (testers, technical writers, users, project managers) and I need to see (not just be told about) respect and interest for those people and those jobs.

Now not everyone feels that way. Meredith Levinson asks if there is a still a place for the "I'm smart, I don't need soft skills" geek pride of old. Commenters point out that speaking truth to power is important, and those who won't be rude sometimes don't do it. David Starr talks about how to tell someone that a thoughtless habit, like always coming late to meetings, is bothering you. I would skip the praise sandwich, but I support the idea of pointing out the consequences of something another person may have thought had none. Interestingly, Susanne Biro points out how people who are actively interested in learning soft or social skills can still be blundering about doing very rude things, apparently unaware.

I think in the end it's not that our industry has changed much. It's that people who are just starting out in it are often a bit rude. OK, sometimes they're very rude. But as they gain technical skill, many of them also gain the ability to take others into account and to work in teams. Those people get promoted. So now, hanging out with decision makers, with people who are allowed to represent their companies in public, with people who get paid to help other people get better, I mostly meet polite and interesting geeks. The rude ones probably still exist -- I just don't run into them very often. Which group would you rather be in?

Kate

Tuesday, 25 May 2010 08:02:37 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 23 May 2010
I have quoted Albert Einstein here before, but only one quote. Amber Naslund has found 14 nice quotes and connects them to social media issues. I'm sure you could find a way to connect those quotes to what you work on all day, too. I'm going to spend some time thinking about "Everything that can be counted does not necessarily count; everything that counts cannot necessarily be counted."

Kate

Sunday, 23 May 2010 23:08:34 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 21 May 2010

The C++ team gave me a heads up about a neat new initiative called Hilo. Here's a quick description:

“Hilo” is a series of articles and sample applications that show how you can leverage the power of Windows 7, Visual Studio 2010, and Visual C++ to build high performance, responsive rich client applications. Hilo provides both source code and the written guidance that will help you design and develop compelling, touch-enabled Windows applications of your own.

The articles are on MSDN - the first is there now - and the code is on Code Gallery.

I like this section from the article:

The rich user experience of Windows 7 is best accessed through a powerful, flexible language, and that means C++: by using C++ you can access the raw power of the APIs for Windows 7. To build the Hilo sample applications, all you need is Visual C++ Express and the Windows SDK for Windows 7, both of which are available as free downloads.

Hilo applications show how to design and develop an application for Windows 7. But while the code showcases the APIs for Windows 7, it is not wedded to any particular application framework. Instead, Hilo implement a lightweight common application layer that directly uses and highlights the APIs rather than obscuring them. This common application layer is used to support all of the Hilo applications. It illustrates the best practices for developing Windows applications, and while it is not complete—it was designed simply to provide the features needed by the Hilo applications—it does show the best practices used in designing re-usable frameworks and can be extended to provide additional features.

Looking forward to reading more!

Kate


Friday, 21 May 2010 22:52:48 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 17 May 2010

Have you seen this yet? It's a letter from Leonardo da Vinci (yes, that Leonardo da Vinci) to a prospective patron. He lists fully 9 paragraphs of way cool things he can do that are relevant to the warfare of the time (portable bridges, bombing strategies, stone flingers, ways of tunnelling into places and so on) and then mentions:

10. In times of peace I believe I can give perfect satisfaction and to the equal of any other in architecture and the composition of buildings public and private; and in guiding water from one place to another.

11. I can carry out sculpture in marble, bronze, or clay, and also I can do in painting whatever may be done, as well as any other, be he who he may.

Given how well he followed through on those last two (this letter was written before his most famous works) you kind of have to believe all the siege/bombardment stuff too.

The article I've linked to has an image of the actual letter - not in English of course - and some lovely commentary on what makes it a good cover letter. It's not really a resume but it sure is a job-getting device. Apparently the Duke did indeed hire him - as a painter, not a fighter. And if you'd like to see it translated into modern day geekery, I spotted that too.

Kate


Monday, 17 May 2010 17:22:49 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 15 May 2010

I really enjoyed the Winter Olympics this year. I could basically watch 24 hours a day if I wanted, and on a lot of channels. Typically I had a choice of 4 or 5 different broadcasts on the TV, more if I was willing to watch in French, plus all I could possibly ask for (literally every event that was happening) online. In a lot of cases I would have the online up even while I was watching live, because the online gave you details that you would have to wait for the announcers to happen to say - split times, individual stats, who got the assist and so on - and because you could rewind the online and see it again yourself instead of hoping someone else chose to replay it. And if I didn't have the TV on, people could (and did) IM me or visit my desk telling me "you have to see this shot!" and we would find the stream, find the little highlight marker in the timeline, go to that place and watch the cool thing again together. The online experience from CTV was really a big aspect of my enjoyment of the entire Olympics.

Now a case study has been released that talks about the nuts and bolts that made it all so much fun. The headline starts "CTV Streams 6.2 Petabytes of Winter Olympics To over 3.9 Million Visitors" and that alone is astonishing. It was all built with Microsoft technologies, including Silverlight and IIS Smooth Streaming. I like this quote:

Marcovici initially expected most viewers to be interested in a few minutes of highlights and then to move on. Much to his surprise, the average Canadian viewer spent more than an hour watching Winter Olympics video content online every single day.

That means somebody must have watched just a few minutes, because I was well over the one hour mark every day. I think we were even over the one-hour-per-person-in-the-house mark. I also liked the behind the scenes video from Vancouver. It was a nice reminder of the emotions of those weeks, plus it gives props to Vertigo, who built the player.

There are also case studies about the NBC Olympic experience, the Norwegian Broadcasting Company Olympic experience, and the France Televisions experience with the Olympics and other sports. They are all built on the same base and it goes to show that effort put into place for the Olympics could be used for many other events as well. I would love to see elections dealt with this way, so I could see the press conference for my riding even if something else was happening on the "main screen" or so I could rewind a speech or show someone else an amazing moment.

Aren't these interesting times? Staying connected is gaining a whole different meaning.

Kate  

Update: in July another case study was released. Check that one too.

Saturday, 15 May 2010 11:03:56 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 13 May 2010

Stack Overflow is an amazing resource. It's a place to ask questions and get them answered, but it's a lot more than that. Like any other online community, people get to know each other and some of them start to relax and have fun. In that spirit came the question "What is, in your opinion, the most surprising, weird, strange or really "WTF" language feature you have encountered?" with over two hundred answers. The current highest-voted answer is how C++ is fine with:

10[a]

(for some array a) and it just means the same as

a[10]

I also like the Javascript answer, in which a commenter points out that "111" - -"222" gives 333 and "111" + "222" gives "111222". And another answer I blogged about eighteen months ago. You could spend far too long reading all these and laughing.

Kate

Thursday, 13 May 2010 08:36:27 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 11 May 2010

Programming is not one skill - it's a large conglomeration of skills. Some people are not very good programmers because they aren't very good at imagining their way through an algorithm. Others have great ideas and imagination, but it's painful to watch them type and they can't be bothered to learn how to use their tools (editors, etc) so they just take twice as long as everyone else to create the code. Still others are doing fine until their code does something unexpected, and then things fall apart, because they can't figure out what's going on. They step too soon, spend ages stepping through code that couldn't possibly cause the problem, then get impatient and end up skipping right past the problem. Worse, they don't seem to understand the capabilities of the debugger. I've watched people spend over 5 minutes patiently stepping into so that when they reach a particular line, they know how control reached it. Then I show them the Call Stack window and they say "oh".

I've blogged before about conditional breakpoints and tracepoints, hit counts, and so on. There is so much to the Visual Studio debugger that it is very hard to know it all. But the more you know, the better you are. And what's more, being a great debugger has more value than some of the other programming skills, because so much debugging happens at urgent times, is unexpected, and needs to be done as quickly and efficiently as possible. The difference in impact between being good and great is very large.

So how to be a better debugger? Partly, it's practice, especially practice with someone who's really good. That person can say "hey, what are you doing? Here's a way easier way to get there!" Even practice alone can motivate you to learn how to do something and get you reading the documentation or searching the web. You could buy a book, if anyone even buys books any more. You could take a debugging course, and spend a day or a week with someone who really knows every speck of this enormous tool. Of course, that costs money, travel time, and so on. Some of you will do it, and benefit from it tremendously.

But ALL of you can benefit from watching John Robbins' latest set of videos on Channel 9. It's in three parts and they total about three and a half hours. It hits the ground running and just doesn't stop. It's all using Visual Studio 2010 but the vast majority of the features he shows are in earlier versions too. I knew a lot of it (even the Go To Find box and the file opening etc) but I learned new things in the first ten minutes and continued to learn new things as they continued - both actual capabilities of the tool and interesting ways of thinking, like using hit counts on a breakpoint not to stop, but just to count how much some code gets run. I wish I could get the slides and code, but I guess some things need to be saved for the folks who actually take the course.

If you're a .NET developer, watch these videos. Now.

Kate

Tuesday, 11 May 2010 08:18:59 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 09 May 2010

I often carry links around for a while before I use them in a post. I'm not one of those "here's 53 things other people posted yesterday" types, though I read three of them (Jason, Chris, and Alvin) almost every morning. When I think something is interesting, I'll use it eventually. It's unusual for me to accumulate a lot of links from someone I don't know some other way, typically from having worked with them. But that's the state I find myself in now. Brent Ozar is actually a SQL MVP and I've found plenty of helpful information about SQL on his blog. But these three articles really aren't about SQL:

  • Why I Always Bill By The Hour - mostly about keeping a pleasant relationship and avoiding the blame game, plus not doing things for free just to be nice. We have some clients who run a tab and are charged for time spent, while for most we used fixed bids. What I like most about doing fixed bids is being able to decline work that is out of scope. The big problem with charging by the hour is that people expect that means you will do things when they ask you to. While that might seem fine, I assure you there are times it is not.
  • Salary Negotiations During the Interview - pretty much the exact opposite, for people who don't bill at all but work on salary. Can I just say as an honest and nice employer that it makes me mental when people won't say what they want to make? I had a guy tell me he would be ok with anything between $8 and $40 an hour for a summer job (he was in third year of university.) That is no more a range than "on the planet Earth" is a neighbourhood. I generally pay people what they want to be paid, or else don't hire them. So if you tell me the truth, I'm not going to argue you down from your number. I might decide you're not worth that much to me and so decline to hire you. I might hire you and then give you a 30% raise after 2 months (true story). But I sure won't say "really? I will offer you 80% of that." Ever. I think I might be odd though, because many people utterly refuse to tell me what they want to earn if they work for me. So I like that Brent says "If they keep pressing for your salary, don’t give them your current number – give them the number it would take to get you to switch." That works for me.
  • Rock Stars, Normal People, and You - how you can start presenting, writing, and generally becoming a "rock star" in our industry. There is absolutely no secret to this and there are literally hundreds of people who want to help others get good at this stuff. I like this quote: "Doing this stuff took time out of my personal life, but I was determined to make an investment in my career. I didn’t want to have another really crappy job search, bouncing from headhunter to headhunter, having to re-prove that I wasn’t an idiot and that I was worth money." And this one: "you’re still struggling to get a better job, a better speaking slot, or a speaking slot period, right? You think that Other People are the ones who get book offers, or Other People are the ones who get paid to speak. You’re wrong."

Fantastic advice.

Kate

Sunday, 09 May 2010 13:39:20 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 07 May 2010

Jani Jarvinen (a Finnish C# MVP) wrote a nice article about using sensors with Windows 7. He mixes and matches .NET 4.0 and Code Pack capabilities, and has links to plenty more information. I like the screenshots and the step by step approach. Windows 7 really does make this so much easier than it used to be. He gets you started with both an ambient light detector and some simple location code.

A little more exotic approach comes from "gleat" who has a Code Project article using a Wiimote as the accelerometer. He starts out simple - here's how to download and install the driver - and then goes into writing a client in C#, leveraging Code Pack of course. But then he says hey, were you wondering how to write a driver? and wham! you're hip deep in C++. It's all well explained, though, so if you want to learn more about this, what a terrific way to start.

If all of this is making you wish you had Windows 7 somewhere to play with, but you don't want to buy it, don't have an MSDN subscription, don't qualify for BizSpark etc, then what you need is a free 90 day evaluation of Windows 7, right? I found that link on this handy Doug Turnure blog post from earlier this year that includes some video links I hadn't seen before. Have fun!

Kate

Friday, 07 May 2010 12:14:02 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 05 May 2010

I was just looking up the session codes for my Tech Ed talks next month (my flight to New Orleans leaves a month today, at about this time actually) and spotted something unexpected:

DEV316 | Modern Programming with C++0x in Microsoft Visual C++ 2010
Session Type: Breakout Session

Track: Developer Tools, Languages & Frameworks
Speaker(s): Kate Gregory
Level: 300 - Advanced
Why wait for the C++ committee to finish the specification when you can enjoy much of the power of C++0x today! C++0x, the next C++ standard, is almost upon us and it contains the most important updates to the language since the mid-90s. It even accepts the existence of multiple threads for the first time in the history of the language. Needless to say, these new features bring more expressiveness and power to the native C++ developer. Visual Studio 2010 has added support for some of these key features in order to enable these modern programming techniques. This session clarifies what features are in Visual C++ 2010 and what is yet to come. It illustrates how new constructs such as lambda expressions enable better use of existing libraries and how your code can be simpler, safer, and faster all at the same time. If you are itching to show off how C++ is one of the coolest languages on the planet, this talk is for you!

WCL316 | The Windows API Code Pack: Add Windows 7 Features to Your Application
Session Type: Breakout Session
Track: Windows Client
Speaker(s): Kate Gregory
Level: 300 - Advanced
Accessing new Windows 7 features is a challenge from managed (.NET) code. The level of interoperability required is out of reach for many developers. The Windows API Code Pack for the Microsoft .NET Framework is a sample library you can use in your own projects today that provides access to new user interface features (taskbar jumplists, libraries, sensor platform, and more) as well as "behind the scenes" features that make your applications more aware and responsive (restart and recovery, power management, and more.) Discover a shortcut to Windows 7 development for Microsoft Visual Basic and Visual C# programmers and get started today.

The first digit carries meaning, but the last two don't. So I don't really know how they both got to be 316. Since I often have trouble remembering my session codes, this should halve the effort for me :-).

Kate

PS: I checked whether the Brian rule still applies. You can too, by just dropping down the "Speaker" box on the session catalog page. I'm happy to report there are 9 Brians and I reached 9 obviously female names (ignoring Alex, Chris etc) while I was still in the C's. Good news, in my opinion!

Wednesday, 05 May 2010 13:54:51 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 03 May 2010

The Windows API Code Pack is one of my favourite libraries. For Windows 7 features that are not yet in the .NET Framework, it simplifies access from managed code, saving you from learning how to do interop. And it comes with a nice suite of samples that help you to understand how the feature works and how to use it. I've been incorporating Code Pack into a lot of the modules in my Pluralsight Windows 7 tutorial, and using the samples for demos when they're appropriate. In just a little over 5 months, almost 70,000 copies have been downloaded directly:

The thing is, Code Pack is not a product. You can't call for support on it (though there are discussion and issues section on the Code Gallery page, and people really do read them.) There's no guarantee that there will be more versions in the future. But there are plans for at least one more version, and Yochay is looking for your thoughts on it.

If you ever wanted to add a feature to the Code Pack, were looking for some specific Win32 API to be wrapped, or just wanted to pass us some feedback, this is your opportunity. Please send us your feedback or file a bug using the Discussions or Issue Tracker for the Windows API Code Pack.

He also mentions that about the same number of folks have downloaded other vehicles (eg the Windows 7 Training Kit) that deliver a copy of Code Pack. Those are some nice numbers! Anyway, if you haven't tried it yet, please do, and if you have and there's something you want, please chime in!

Kate


Monday, 03 May 2010 14:46:48 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 01 May 2010

On Thursday night I was the surprise mystery guest for the St Louis installment of the .NET Rocks Roadtrip. What a fun little jaunt that was! We recorded an episode of .NET Rocks, (talking about Windows 7, C++, and educating developers) then Carl and Richard both did very interesting presentations. I had seen parts of Richard's before, but Carl's was all new to me and I will just say if you live in the half of the roadtrip that hasn't happened yet, you really need to make an effort to be there and be part of it!

Here's a blog entry by Nicholas Cloud, and another by Brian Williams, and a picture by fallenprogrammer of us getting set up.

The next morning featured breakfast at Cracker Barrel (an experience) and then a ride to the airport in the RV for me and Kindler Chase, who had joined them in Tulsa, before they headed Chicago-wards. It sure was fun to be part of it!

Kate

Saturday, 01 May 2010 20:22:11 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 29 April 2010

Would you like to learn more about developing for Windows 7 in C# or VB? My Pluralsight On-Demand! tutorial has just gone live. 9 of the 11 modules are there now and the last two will be shortly.

As the abstract says:

This tutorial is aimed at Windows developers (Windows Forms or WPF) who want to add Windows 7 capabilities to their application. The emphasis is on providing a helpful and efficient user experience by hooking into what Windows 7 has to offer. You do not need to know how to interop to native code or how the Windows 7 features work internally.

The table of contents looks like this:

  • Light Up on Windows 7
  • Windows 7 Jumplists
  • Taskbar Overlays on Windows 7
  • Taskbar Thumbnails on Windows 7
  • Network Awareness on Windows 7
  • Power Awareness on Windows 7
  • Windows 7 Libraries
  • Windows 7 UAC and Manifests
  • Partitioning Administrative Tasks for Windows 7
  • Known Folders for Windows 7 (under development)
  • Scheduled Tasks on Windows 7 (under development)

The course has been a lot of fun to put together. I used the Code Pack to keep the amount of code you write to a minimum. Some of the demos use samples that come with the Code Pack; others use my own code, and you can spot those by the Demos download link.

The content is all subscribers-only, but you can get a Guest Pass to check it out. Also, RDs and MVPs get a free subscription, so if you qualify, this would be a great time to use that. Let me know if there are more topics you'd like to see me cover (after I get this one finished, of course!)

Kate

Thursday, 29 April 2010 08:26:26 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 25 April 2010

Once again Carl and Richard are driving across the country to celebrate a Microsoft launch. This time it's for Visual Studio 2010.

As they say on the roadtrip page:

Carl and Richard are loading up the DotNetMobile (a 30 foot RV) and driving to your town again to show off their favorite bits of Visual Studio 2010 and .NET 4.0! Richard talks about Web load testing and Carl talks about Silverlight 4.0 and multimedia.

And to make the night even more fun, we’re going to bring a mystery rock star from the Visual Studio world to the event and interview them for a special .NET Rocks Road Trip show series.

Along the way we’ll be giving away some great prizes, showing off some awesome technology and having a ton of laughs.

So come out to the most fun you can have in a geeky evening – and learn a few things along the way about web load testing and Silverlight 4!

You can track their progress online, too! Looks like a blast.

Kate

Sunday, 25 April 2010 10:12:14 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 23 April 2010

I like to introduce myself, in C++ circles, by mentioning I was using C++ before Microsoft had a C++ compiler. It's often interesting to watch people try to handle the concepts behind the sentence - mostly, that for some languages you can buy compilers from more than one vendor. And once upon a time, C++ existed as a language, and Microsoft sold compilers, but it didn't have a C++ one yet. Then eventually (OK, in 1992) the C product Microsoft sold became a C/C++ product (compiler, linker, debugger etc) and then the next year Visual Studio came along and with it Visual C++. And Visual C++ 1 included the Microsoft Foundation Classes 2, so that for a while the version numbers of Visual C++ and MFC were out of sync. Eventually there was a version skip to catch up (there was no Visual Studio 3). For quite a while we all worked with Visual C++ 1.52c and every speck of that version number was significant. So as you can see, the version of a product is not a simple question with one answer.

So, here we are, welcoming Visual Studio 2010. Lots of people called it Dev10 while it was under construction. But was the 10 short for 2010? It was not. It was just 10, as in the number after 9. Visual Studio 2008 was 9, and Visual Studio 2005 was 8. You can see these numbers on the shortcuts to your sln files, by the way:

OK,so VC8 means Visual C++ 2005? Basically. As long as you realize that it doesn't mean version 8 of the compiler. Because the C compiler transitioned into the C/C++ compiler, the version numbers came with it. VC8 includes version 14 of the compiler. Confused yet? If so, you're in good company. Here's a tabular explanation, though it only goes back a decade. You want more details? Wikipedia has them, of course. Me, I am going to enjoy Dev10 and watch for news of Dev11.

Kate

Friday, 23 April 2010 09:08:34 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 21 April 2010

One of my pet peeves is software that thinks it's smarter than me. There are times when software does things I wouldn't think of, without asking me, and I find that helpful and I like it. But it can backfire. The worst offender was FrontPage, thankfully now gone. But Outlook has an annoying little habit. It assumes that people who send emails can't really be trusted to format them, so it "fixes" their error for you. In other words, if I send you this plain text email:

Hi,
How are you doing?
Call me when you can.
Kate

Outlook helpfully displays:

Hi, How are you doing? Call me when you can. Kate

Most of the time that's only a petty annoyance. But what about when my code sends:

Monday 1:00
Tuesday 2:30
Wednesday 4:00
Thursday 9:30
Friday 10:00

And you see:

Monday 1:00 Tuesday 2:30 Wednesday 4:00 Thursday 9:30 Friday 10:00

Know what happens then? I do! The user reports a bug that the emails are misformatted. And what's more, when you tell them it's an Outlook issue and send them a screen shot of what to click in Outlook to fix it, they don't thank you. Well, Scott Mitchell has discovered what to do in your code to make Outlook leave your ratsen-fratsen line breaks alone. Just add a space before each newline. Awesome, thanks Scott!

Kate

Wednesday, 21 April 2010 08:49:00 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 19 April 2010

I am accumulating Visual Studio 2010 links at quite a pace. Let's have a bunch in this post:

Kate

Monday, 19 April 2010 14:33:47 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 17 April 2010

When I show off Windows 7 features and talk about how you can add them to your apps, I usually show a "sad trombone" moment featuring Visual Studio 2008, like this:

(I really like jumplists in the start menu, so I thought I would show that in my screenshot instead of the classic right-click-on-the-taskbar jumplist. They're the same.) But this jumplist isn't useful. It isn't all the .sln files I've opened before, or the projects, or anything really except some random bits of XML, icons, schemas, and code files that I dragged in to Visual Studio over the past few months while I had some real solution open.

Now this isn't poor Visual Studio's fault. It was released before Windows 7, before anyone knew that the MRU list kept by the OS itself would be important. As I've explained in presentations before, there's a reason this happens. You see, when you double-click a .docx file, Windows looks up who handles those, launches Word to open the file, and accumulates that file name on the MRU list for Word. Cool. Ditto for .txt and Notepad, etc. But Visual Studio is different, and it's different so that you can have Visual Studio 2005 and 2008 side by side on your machine, and use .sln for the solution file names in both products. You double-click a .sln file and what actually runs is a little launcher that looks inside the .sln file to see if it's a 2005 or 2008 solution and then runs the right Visual Studio and passes the solution to it. Cool. But as a result Windows isn't accumulating what you opened with Visual Studio 2008, it's accumulating what you opened with the little launcher. The jumplist for Visual Studio 2008 therefore contains only things you opened directly with it, and that's not a very useful list.

OK, so I know why. And it's nice to know, btw, that Visual Studio 2010 gets it right. And in my presentations, I usually leave it at that, encouraging you to add the one whole line of code to your app (if you're using Code Pack) so you "don't be that guy".

But wait! What if you want a good jumplist for Visual Studio 2008? Especially if you don't have Visual Studio 2005 installed any more, so you don't care about the whole pick-what-version-to-launch feature? Well, you could try this suggestion from Josh Einstein. I like that he doesn't explain it much and says "If you need more instructions then the hack probably isn’t for you." His instructions, terse as they are, are for 64 bit Windows 7. A commenter supplies the 32 bit version.

I actually haven't tried this yet. Don't want to set my computer on fire or anything :-). But if you feel like living on the edge, give it a whirl!

Kate

Saturday, 17 April 2010 08:22:25 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 13 April 2010

Is it a good omen when mornings start out beautiful? I think it might be:

Normally, when I go to a conference, the first day is a little slow. I might go to the keynote, or I might not. If I do, I wander in to the back row 5 minutes before it starts (hey, I'm leaving plenty of seats for the paying attendees) with my coffee in my hand. So reaching the keynote room at 7am, full of pep and vigour, was fun!

I really liked the story the keynote demos told. If you haven't seen it yet, it's available online. The demos start with simple productivity boosts like multi-monitor support, Intellisense for Javascript, and so on, then move to some amazing C++ updates including Windows 7 support (yes, the demo went boom, but if you watch closely you'll see it was just that the app was still running, preventing a successful rebuild.) Then you see "SharePoint F5", a huge pain-saver for anyone, like me, who does SharePoint development. Over a dozen manual steps done for you when you press F5, and you can run SharePoint right on your laptop. But they're not done yet -- here comes an Azure demo with the Windows Phone 7 emulator and a real phone, and then Team Foundation Server and a ton of exciting new Application Lifecycle Management features in Visual Studio including (no kidding) time travel. Wow! I hope you all enjoyed it as much from the seats as I did from backstage.

No sooner was the keynote over than I was headed for the Channel 9 stage to record half an hour of Q&A with Twitter people.

That's available online too. And if you want more, some of the sessions are appearing on Channel 9, too. Not filmed on site, but the content matches. Get your Visual Studio 2010 from MSDN downloads, or if you're not a subscriber you can take the Professional Edition for a test drive.

Kate

Tuesday, 13 April 2010 11:38:04 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 11 April 2010

I've never been backstage for a big keynote before. There's a lot going on back there. Each demo runs on its own machine, so if one messes up it doesn't hurt the others. There are monitors everywhere showing what's on all the cameras and what's going out as the feed. There's one half for the camera and production people, and one half for the demo people. Here's a glimpse of the demo half:

Crowded, noisy, hot, and people are standing in your way sometimes. Best seat in the house!

Also, I'm just loving the signs throughout the Bellagio. There are all different ones (water, wires, light bulbs etc) but I think this is my favourite:

Watching something launch feels like it wouldn't be exciting, after all how long have I been working with this product? But you know what, it is!

Kate

Sunday, 11 April 2010 11:13:22 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 09 April 2010

This trip to the launch gets more exciting by the minute! Check this out:

The Channel 9 team will be broadcasting live, unscripted, and 100% interactive from DevConnections 2010 in Las Vegas as part of the Visual Studio 2010 and Silverlight 4 launches.

Join us Monday April 12th, from 8AM (PST) for Bob Muglia's VS2010 Launch keynote then stay tuned for more than seven hours worth of Visual Studio 2010-themed demos, interviews and panel discussions on Channel 9 Live.

. . .

Day 1 Schedule April 12th 2010 (Pacific time)

8:00 AM DevConnections 2010 Day 1 Keynote.

10:00 AM Welcome to VS2010: Doug Handler and Brian Randell with Dan Fernandez.   

10:30 AM Live Q&A with Bob Muglia, President Server & Tools Division with Dan Fernandez.

11:00 AM VS2010: Native Code. Kate Gregory and Richard Campbell with Charles Torre.   

11:30 AM VS2010: Managed Code. Lisa Feigenbaum, Tim Ng Dustin Campbell with Charles Torre.

. . . then some other people, who I love, but I can't paste it all in here. . .

To be part of it, use Twitter with @ch9live somewhere in your message. We'll see it and that's all it takes to join the conversation!

I count 11 Regional Directors (many of whom are also MVPs) on the guest list. What a way to spend the day!

Kate

Friday, 09 April 2010 23:27:02 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 07 April 2010
A little over five years ago a whole pile of people, inspired by Julie Lerman, got together to raise money for the tsunami relief and recovery in Aceh. (Here are my blog entries from that time.) We raised over $10,000 and perhaps some of you were wondering if we made a difference. Well Stephen Forte, who was a big part of that effort, now lives nearby and he visited them. His update is a lovely way to see what happened as a result of our efforts. It's nice to see that the organization we chose to support is still there and still doing good work. I wish all my donations came with a five year followup like that.

Kate

Wednesday, 07 April 2010 23:20:35 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 03 April 2010

I've been accumulating a ton of links relevant to Windows 7 development, so let's use some of them up:

Mmmm, I feel much more caught up now.

Kate
Saturday, 03 April 2010 06:12:33 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 01 April 2010
C++ developers generally care a lot about how fast their code runs. In many cases that's the reason they wrote the application in C++. Every release of C++ development tools (compiler, optimizer, linker etc) typically has some effort invested in producing code that runs faster, even if that means the tool itself runs slower. It's tempting to think that the gains would have levelled off by now - after all, C++ has been around for a very long time. But a recent post by Lin Xu of the C++ team shows how you can take you 2008 project and rebuild it in 2010 (using the right options of course) to see up to a 16% speed increase with no code changes by you. Lin also discusses the extent to which this will slow your build process.

Visual Studio 2010 and Visual C++ have a TON of important new features for native developers, which I'll cover shortly. But let's just start with this one - faster applications - for the moment.

Kate

Thursday, 01 April 2010 05:58:13 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 30 March 2010

It's thirteen days to launch. Yesterday I was able to confirm I will be attending the Las Vegas event. I'm stoked! The speaker line-up is amazing:

In addition to insightful keynotes by Bob Muglia, President, Server and Tools Business and Scott Guthrie, Corporate Vice President, .NET Developer Platform, see key members of the Visual Studio team including Doug Seven, Sean McBreen, Chris Sells and Andy Conrad. Also see favorites from the third-party community including Juval Lowy, Michele Leroux Bustamante, Billy Hollis, Tim Huckaby, Rocky Lhotka, Dan Wahlin, Steven Smith, and Rick Strahl. Listen to a live recording of .NET Rocks! with Carl Franklin and Richard Campbell.

That's 8 RDs in that paragraph. Are we an amazing community or what? There is so much good stuff in this release that I haven't been able to play with it all yet, so I'm really looking forward to having some smart people show me what I need to know quickly.

If you can't be there in person, you'll miss some of the fun, but not all! Code Project is running a Tech Summit so you can "experience the Microsoft Visual Studio 2010 launch alongside the Visual Studio team." Live video sessions and even a virtual swag-bag for attendees.

One way or the other, be there!

Kate

Tuesday, 30 March 2010 06:41:19 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 28 March 2010
I've mentioned before how Windows 7 Boot-to-VHD makes working with betas so much better for me. In fact just last week I built a new VHD image to do something new with the RC of Visual Studio 2010. It took a few hours off and on, while I was puttering around the house, to install Windows, install Visual Studio, install Office, install the zips of code that someone had sent me to test, install Camtasia, and so on. I didn't begrudge the time, but I was trying to set up something very specific for a test. If you'd just like to play around a bit and see what all the fuss is about, I bet you would like it if someone made a VHD for you and you could just download it and use it.

Well Presto! Brian Keller has done just that. And he hasn't just installed Visual Studio on it, but a whole pile of hands on labs, the sample data and configuration that the labs need, and so on. In fact it's three VHDs depending on your virtualization tool - Hyper-V, Virtual PC 2007, or Windows 7 Virtual PC.

If you're getting excited about the run-up to launch and starting to ask "oh, is there good stuff in this version of Visual Studio?" then this is a really simple way to get yourself closer to seeing for yourself just how much good stuff there is. Have fun!

Kate

Sunday, 28 March 2010 06:34:03 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 26 March 2010
One of the things I did during my break from blogging was to start creating content for Pluralsight. Is there anyone who hasn't heard of Pluralsight? An amazing group of people who want to help everyone learn how to develop on Microsoft platforms. They offer in-classroom training and also a rapidly growing online collection of videos and tutorials called Pluralsight On-Demand! that lets you learn what you want on the spot. Rather than just "here's a one hour video on topic X" it's all set up with searches and indexes to take you straight to the piece you want when you're in a searchy mood. It's really nicely done.

Pluralsight is a very MVP-positive group (and RD-positive too, though we're rarer) and has more than a few MVPs on the technical and management team. During the MVP Summit they announced that all MVPs and RDs get a free standard subscription to the entire Pluralsight On-Demand! training library. That's a heck of a deal and if you're eligible, you should sign up now.

I have one how-to reference video published at the moment, on taskbar overlays (icons and progress bars) in Windows 7 with Code Pack. There will be more :-)

Kate

Friday, 26 March 2010 09:10:51 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 28 November 2009

I've wanted one of these since I saw it on Steve Clayton's blog (twice). And now I have one - lucky me.

One of the reasons I'll use a big mouse (compared to the gosh-that's-tiny notebook style) is the magnify button on the side. Just as I usually don't want to get off the keyboard to use the mouse to, say, save my document, I don't want to get off the mouse and use the keyboard to zoom and stop zooming when I'm presenting. I had a nice Microsoft mouse a few years back but the magnify button wouldn't work with the beta of Vista I was using and I ended up letting someone else use that mouse. So I'm super happy that the magnify button on this mouse works just beautifully with Windows 7.

 

Happy presenter.

Kate

Saturday, 28 November 2009 21:41:35 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 26 November 2009

I teach a course at Trent University on Object Oriented Analysis and Design with UML, and have done since the last century. I teach my students how to make decisions about the systems they will some day build, and how to draw diagrams that communicate those decisions to others. We find as often as not that the act of trying to make the diagram leads us through the thought processes that are needed to make good decisions. That brings huge value even if you never show the diagram to anyone else and never update it.

I've never been a big fan of "technical documentation" in the form of a giant binder that some poor person has to keep up to date any time the code changes. If you want to know all the methods of the Employee class, why not use Intellisense or the Object Browser or the like? But that doesn't mean I don't like making those diagrams at the beginning, when they help me to do my thinking. I also make them when I have something to explain, including when I bring a new person onto a project. So how much do I love this quote?

the UML ... was to be a language for visualizing, specifying, constructing, and documenting the artifacts of a software-intensive system—in short, a graphical language to help reason about the design of a system as it unfolds. Most diagrams should be thrown away, but there are a few that should be preserved, and in all, one should only use a graphical notation for those things that cannot easily be reasoned about in code.

It's in an interview I already linked to, but it took Patrick Smacchia to point our those sentences to me. As I wind up the last few weeks of the course, it's nice to know that my position on the point of the diagrams and deliverables is aligned with one of my heroes.

Kate

Thursday, 26 November 2009 20:38:10 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 24 November 2009

Pete Brown has a terrific two part series on sensor programming in Windows 7. Part 1 has a link for where to get the board, and fills you in on the new architecture. Lots of helpful links and screenshots here, including one to Pietro Bambrati that includes some changes to the racing game sample to make the accelerometer work and one to his video showing you how to install and test it.

Part 2 starts with this nice summary of your options as a developer:

There are three different ways you can use the accelerometer API. You can, of course, go directly against the COM API and generate your own wrappers and pinvokes. You can use the managed wrappers provided in the SDK, or you can use the Windows API Code Pack which includes support for the sensor API and a number of other Windows 7-specific enhancements. In this case, I decided to use the code pack in concert with WPF 4.

Hard to argue with that! Pete has written an AccelerometerJoystick you can use in any "controller" situation - and be sure to think beyond just games!

Definitely read and watch, and let Pete and Pietro save you some time!

Kate

Tuesday, 24 November 2009 20:12:13 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 22 November 2009

I saw this on Scott Hanselman's blog:

It's three little meters - memory, CPU, and Disk IO. Each has a jump list with the obvious tasks - starting Task Manager, for example. It's really simple to do (read the code yourself) thanks to Code Pack.

What will you do over a weekend with it?

Kate

Sunday, 22 November 2009 19:46:36 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 20 November 2009

It's time for another release of the Windows® API Code Pack for Microsoft® .NET Framework. Yay! This is a pretty small release (which is why the version just went from 1.0 to 1.0.1) with some bug fixes, performance improvements, and more documentation and samples. It's getting a little attention :-)

  • Yochay gives the excellent advice to "consider this library as if you wrote it yourself, as if it is your own code" and reminds you that while it's "the closest thing to an “official” managed API for Windows", it is not a supported product you can call somebody for help with.
  • Mahmoud, who's actually running a Code Pack blog (though I think both Yochay and I have more Code Pack posts).
  • Sasha, like me a friend of the Code Pack, also has a summary of Yochay's PDC talk - you should download and watch it.
  • Kevin Griffin wrote a nice Code Pack article a day before the new version was announced, but all his praise is still valid :-)

If you're already a Code Pack fan, just go get the latest version. If you're not, you should be - it means just a line or two of code to make your application look and behave like a real Windows 7 app.

And are you wondering what's next for Code Pack?

See why I said to download and watch Yochay's talk?

Kate

Friday, 20 November 2009 15:11:58 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 18 November 2009

Developer Night in Canada is a fun podcast from John Bristowe and Joey deVilla of Microsoft Canada.

Episode 1 - my friend Joel Semeniuk. He's talking about the tool formerly known as Team Systems, and about the way he makes software. The Work Item Manager I told you about gets a mention too. Worth a listen!

Kate

Wednesday, 18 November 2009 14:44:19 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 16 November 2009

Nice blog post from Scott Guthrie while I was getting ready for Tech Ed Europe. It has a whole laundry list of good stuff in WPF 4, but what jumped out for me was the Windows 7 light up content.

What can you expect? Jumplists (items and tasks), icon overlays and progress bar, thumbnail buttons, thumbnail clipping, all of it. Nice.

Kate


Monday, 16 November 2009 14:36:16 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 06 November 2009

I was lucky enough to be asked to demo some Windows 7 features at a dinner hosted by Sarah Vingoe (she's on twitter, women.ca, and she blogs) in Toronto. We had some super cool hardware including two large all-in-one multitouch systems and a cute little netbook.

Sue Borden, Microsoft Canada's senior marketing manager for the Windows consumer division, was at the dinner as well, and she showed me a super cool feature called Play To. It takes a tiny bit of setup, but here's what it does. Imagine you're in the living room on the couch with your laptop. There's some music you would like to listen to, but you don't want to use your tinny little laptop speakers when you're at home. Thing is, the music is on your laptop, not on the living room PC that's hooked up to the nice speakers. So imagine this - you open media player on your laptop, right click the song or album, and choose Play To. A cascading menu appears showing eligible other machines, you pick the living room one, and the music from your laptop comes out of the speakers on the machine you chose. Isn't that fun! I like it.

The setup is basically that on the other machine (which needs to be Windows 7 or compatible hardware) you have to turn on media streaming and then give permission to let other people send you media.

All the gory details are here. Check it out.

Kate

Friday, 06 November 2009 05:59:46 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 04 November 2009

My three favourite Windows 7 features are the taskbar, default printers network-by-network, and boot to VHD. That's cheating really because "the taskbar" covers a lot of ground - jumplists, previews, previews with buttons in them (pausing media player, closing anything), notifications, and progress bar overlays. As you can see by all those links, I've already blogged most of those features - and most of my Windows 7 category is taskbar-relevant.

But I haven't yet blogged about boot to VHD and I really need to. The rise of VPC over the last few years has made such a huge difference for me and my tribe. Whether it's a safe place to put a pre-beta (typically the uninstall instructions for CTPs and private builds are "format your C: drive") or a carefully configured TFS or Sharepoint setup, a virtual PC is a great place to play or to demo a technology. The only downsides are performance, and sometimes access to hardware peripherals or networking. Boot to VHD fixes those two downsides, and it's better than having a separate laptop or a slide in/out hard drive (a solution I used years ago on the only laptop I've ever met with that capability.) Not only does it weigh a whole lot less than a separate hard drive :-), you can access the "host" hard drive while you're booted over to the guest. That means I can work on a demo or presentation and leave the powerpoint or the demo script on my "real" drive and edit them from the guest.

The only downside is that it is boot to VHD. Not "put the host machine to sleep and then bring up the guest machine." So you have to be prepared to close all the apps you have open, which for me can take some doing. But that's the only problem.

How to do it? I followed the nice clear instructions by Adrian Kingsley-Hughes. Print them out, because you're not going to have access to your machine while you're doing this. Scott Hanselman has a similar set of instructions, but they're not identical and I didn't follow them myself, so if you want to, just remember like he says "This is advanced and may hurt you, your computer, or your cat" so don't complain to either of us if something bad happens. He has nice pictures and some links to useful references too. If you really want to wander into "Danger Will Robinson" territory, take a look at Jon Galloway's post which covers the whole "wait, what about activating my copy of Windows?" story. I'm just ignoring that myself since most of these virtual machines are going to live for a month or so.

If you're running Windows 7 Ultimate, and you ever install beta or pre beta software, or otherwise ever use a virtual machine, learn how to do this. You won't be sorry.

Kate

Wednesday, 04 November 2009 05:30:36 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 02 November 2009

I remember when Design Patterns first came out. I already owned A Pattern Language - The Timeless Way of Building (an absolutely huge and fascinating book) and so I immediately "got" what Design Patterns was for. [And yes, I have used parts of Timeless Way to guide house-buying and house-renovating decisions.] I couldn't wait to get my hands on it.The member of staff I lent it to ended up reading it in the bath for hours. Geeks are funny, aren't we?

Well it's been 15 years since then. How does the book stack up?

Pretty well, really. Reuse has sort of moved from something we try to do project-to-project in our code to something that frameworks give us. But reusing design has always been a huge timesaver compared to reusing code, and that's this book in a nutshell.

Now Larry O'Brien has interviewed three of the Gang of Four and Grady Booch. You definitely need to read both of these, but I'll just give you some "taster" quotes:

  • "...writing 100K lines of new code isn't that much easier now than it was 15 years ago. It will do a lot more, but costs the same."
  • " The most important artifact any development team produces is raw, running, naked code."

Kate

Monday, 02 November 2009 04:08:36 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 31 October 2009

Have you ever heard someone make a definitive statement about a particular feature of Visual Studio or the .NET Framework that you knew just wasn't true? Did you ever wish for a Snopes equivalent you could send them to? Well, your wish has been granted.

Give it a whirl and see the official position on some popular (but unfounded) beliefs.

Kate

Saturday, 31 October 2009 02:32:26 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 29 October 2009

I have now finally been using the Internet for more than half its existence. That's 20 of its 40 years. Back in 1969 the first few bytes were sent between networks (hence the name, it was a network of networks) as part, believe it or not, of a plan to save money. The BBC has a nice article about it. The Globe and Mail tosses in a quick summary of the history of the internet, which reminds me to link to my post that points to a more comprehensive summary in Vanity Fair.

If you think the Internet is just the web, all I can say is you missed a golden age. These days it's always September. I know I prefer what we have now, just as I can still miss what we had then.

Kate

Thursday, 29 October 2009 11:57:28 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 23 October 2009

Did you like the wallpapers of Canadian scenery I showed the other day, that are already on your Windows 7 machine and just need to be selected? Would you like some more? Go to http://windows.microsoft.com/en-US/windows/downloads/personalize?T1=themes and scroll down past the Coke and Ferrari and so on to find more lovely scenery. I copied mine into the folder that was already the source for my desktop wallpaper rotation.

I think the Northern Lights is my favourite at the moment.

Kate

Friday, 23 October 2009 10:18:34 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 21 October 2009

I remember, back in the day(*), being so confused about NULL. At first I thought it was a keyword, a special value of some kind. Then I learned it was just the same as 0. Or maybe 0L. I worked with people who said it was wicked to use it, and you should always type the 0 yourself. I worked with people who said it was wicked not to use it, because it made your intentions clear to humans. I even worked with people who used it in for things other than pointer-setting or pointer-checking. I argued with people who thought if(p) was or was not more clear than if (p != NULL) and, late at night when we'd been drinking, about what would happen if some other value than numerically zero meant "null pointer" and what that would do to the world's code, and how to write our code so that could never hurt us.

But that was long ago. These days I've pretty much internalized NULL (and for the record, I'm an if(p) gal) and no longer think about it. One of the reasons I don't have to think about it is that I don't write a template library that's used by millions of developers. If I did, I might have to worry about template-argument-matching and how compilers are supposed to deal with being given an int and knowing to match that up to a Something* -- but then again, only if the int has the value of zero. It's been a pretty clever trick for a really long time, but with the advent of perfect forwarding in C++0x (thanks to rvalue references) it just becomes impossible to always pull off that trick. Luckily, the same language changes that led to rvalue references also held the solution - the literal nullptr that isn't an integer with the value 0, but actually represents a pointer-to-anything that isn't pointing anywhere right now.

For the gory details, a wonderfully transparent look at how the team decides what to do in a release and what to hold for later, as well as some delightful glee at being able to do stuff, some amazing understatement ("somewhat arcane" indeed) and moments later "the world explodes!" you have to watch STL on nullptr. BTW, he deliberately pronounces it null-putter so people can tell he's not saying "null pointer" which would still be NULL. He even gets into nullptr vs nullptr in the land of /clr and how the double underscore (seriously) rides to the rescue. Major whiteboard action and in the end you'll know a little more about why the magical STL (the library) works, why it's faster in VC++ 2010, how the team (including the human STL) thinks and works, and the insides of my favourite language.

Kate

* that would be before Microsoft had a C++ compiler, over 20 years ago. Four and a half years ago I reflected that I was very close to having 20 years of C++ experience.

Wednesday, 21 October 2009 09:49:40 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 19 October 2009

My download is underway right now. And while I wait for two gig of beta good stuff to reach my hard drive, I thought I'd share some of the announcements from Microsoft around Visual Studio 2010.

  • The launch will be March 22nd, 2010. I will have more details on that over the next few months.
  • The SKUs are being adjusted and simplified. I never met anyone who used just the Developer Edition, Architect Edition, Tester Edition or Database Edition of Visual Studio Team Systems. We all used Team Suite. So now we'll all use the Ultimate Edition. It has even more stuff than the old Team Suite did. People who don't want the source control and work item tracking and modelling and diagramming and schema/data management and all the other great things in Ultimate will get Professional. Some of them will get Premium, which sits in between the other two. Plus all the free Express SKUs will continue to get you what you need to just build an app right away without spending any money at all. (Already a subscriber? You'll get more without paying more, which is hard to argue with.)
  • MSDN has a whole new look (way more blue, lots of links to fresh blogs and announcements) and some cool new benefits like free Azure hours. If you're paid to make software, you should have an MSDN subscription. If you can't afford it and your company is new, take a look at BizSpark which makes it free. If you're not new or your company doesn't make software, look at the partner program. But for everyone else, this is what you need.

If you totally haven't been paying attention and have no idea what the excitement is about, start with this What's New document and these highlights (featuring screenshots and plenty of links).

And finally, after many years of Old Visual Studio logo,
get ready to start loving New Visual Studio logo and New Visual Studio logo

Kate

Monday, 19 October 2009 12:45:28 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 17 October 2009
As C++ developers, we have a lot of options about how to link to libraries we use. We read sometimes that if we link statically, we will have more work to do if there's ever a security hole in the library, since we'll have to redeploy our app rather than just relying on the users to get the new library and use it dynamically. There's a great example of that in the ATL story that is now just wrapping up. A problem was discovered in July, and emergency updates were promptly released - just a day before the guys who discovered the problem spoke about it publicly. An article that same day pointed out that the error was almost a typo - an extra & in an expression - and warned that the patches "do not automatically fix software that was developed using the buggy ATL. Instead, vendors -- Microsoft as well as third-party firms -- must use the patched Visual Studio to recompile their code, then distribute the new, secure software to users." Well finally, Microsoft has finished their part of it with updates for the parts of Office that were using the old ATL. Have you done all of yours?

Kate

ps: love the "related twitters" at the bottom of the article - people may not tweet about the Active Template Library very often, but they sure do mention a certain airport / city that uses the same abbreviation :-)

Saturday, 17 October 2009 12:13:47 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 15 October 2009
Inspired by the Visual Studio Documentary, Rico Mariani is writing his own history. So far he's up to 8 parts and they make for great reading. He goes into some of the technical challenges the teams faced, and talks about cancelled and sidelined projects along the way. He's made a category for it so you can read the whole thing start to finish ... but I'm reading as he goes and not waiting till it's done. Do read in order though, starting at Part 1.

Kate

Thursday, 15 October 2009 11:34:46 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 13 October 2009

Esther Schindler and I go way back. She's a great editor and I never quite have time to write for her, though I've come close a time or two. Recently, she wrote:

I decided to compile a list for developers, designers, and other techies of blogs-worth-reading whose authors just-so-happen-to-be (mostly) women. I'm a strong believer in women being more visible; we tend to fade into the background, too much, and to apologize for our achievements. (That's one reason why women earn less than men; I'll get into that discussion another time.) Enumerating women-to-admire felt like a good way to highlight smart people who have wisdom to share.

I am delighted to see my friends on this list, and to be introduced to new blogs as well. Esther was even nice enough to include me on her list. Take a look and see if you can make a new friend, or at least a new habit.

Kate

Tuesday, 13 October 2009 11:29:52 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 11 October 2009

While rehearsing some talks recently I was playing around with my desktop background. I've used a shot from my Bermuda vacation for a long time, because it cheers me up if I am feeling stressed. But I enjoyed having some local "autumn colour" shots on there too. Windows 7 has a "desktop slideshow" feature that changes your background every 30 minutes and I'm going to use that for a while ... though I might add my pink beach image to the rotation.

Thing is, I don't want to rotate through iconic US pictures, lovely though they are. That's why I was pleased to read, on How-To Geek, how simple it is to activate themes for Canada, Australia, South Africa, and Great Britain. The Canadian wallpapers really are lovely:

I think there should really be a prairie one in there too, but I'm not complaining. Give them a try!

Kate

Sunday, 11 October 2009 09:32:07 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 09 October 2009

You have to see these. Roughly half an hour each, featuring an RD and at least one former RD, it’s a cast of luminaries and also has some funny-looking-back archival footage. I learned a few things, remembered a whole bunch more, and smiled and laughed a lot. Check them out. Apparently there’s a whole series to follow with the full interviews with all those folks. I like this chronologicallish approach with different interviews interwoven, but I’m sure I’ll watch the long ones too when they come out.

Here’s who’s in it:

  • Anders Hejlsberg
  • Soma Somasegar
  • Dan Fernandez
  • Alan Cooper
  • Bill (archive footage)
  • Tim Huckaby
  • Tony Goodhew
  • Dave Mendlen
  • Jeff Hadfield
  • Jason Zander
  • Mardi Brekke
  • Dee Dee Walsh
  • Scott Guthrie

They are both on Channel 9 (and read the comments too): Part 1 and Part 2.

Kate

Friday, 09 October 2009 09:23:24 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 07 October 2009

I've published a set of four articles on Code Project for those who might want to present to others on Visual Studio Extensions. Each is designed as a speaker kit - powerpoint presentation, speaker notes (what to say to each slide) and demo script. In addition I have recorded myself either doing the demos or the whole talk and put the videos on Silverlight Streaming. We wanted to embed the videos in the articles, but we've settled for putting links in. You can Open in New Tab to watch them, or right click to download.

The four articles are:

I had a great time doing this. You can use these talks to present at a user group or a code camp - I've done the last one at the Toronto Code Camp and it went really well. Give them a try. I have been given a lot of "other people's material" in my time and I have to say it's rarely this complete a package. Let me know if you like them and send me a link to the event if you do one.

Kate

PS: these are all for Visual Studio 2008. If you want Visual Studio 2010, stay tuned :)

Wednesday, 07 October 2009 08:53:58 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 05 October 2009

If you read Stephen Forte's blog regularly, you'll know that he's a really technical guy. He's all about SQL, SQL Azure, WCF, Silverlight and so on. He's also a guy who shows his personal side in his blog. Before we had ever met, he was described to me as a slightly crazy guy who likes to climb mountains - and he has categories in his blog not just for Climbing, but also for Kilimanjaro and Everest. But he's also a guy who likes to help - a lot of the crazy things he does have been to raise money for charities - check his .NET Celebrity Auction and Curing Cancer categories.

So I really enjoyed reading two posts recently - "we're leaving" and "we're back" - the latter with tons of pictures - that covered a trip to Nepal to build a library. Not by pressing Ctrl+Shift+B either - hammer and nails, baby.

The four of them manage to be 4 MVPs and 2 RDs between them :-) and made a big difference in a far away village that already meant a lot to them. He closes with a link for you to donate and I think I will do the same. 

Kate

Monday, 05 October 2009 08:32:10 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 03 October 2009

I suppose using Source Safe is better than using no source control at all. But it's slow, it can't handle non-text files usefully, it totally doesn't work over a slow network, and it corrupts its database from time to time for no discernible reason. It can't handle multiple people having a file checked out at once, so that forgetting to check in a common file (especially a project or config file) can either completely keep others from working or can make people get in the habit of working outside of source control for long stretches of time. It has had its day and you should replace it.

But let's say you're an all-Microsoft shop and you don't really have the time and energy to go looking for products from other vendors. You like knowing all your stuff works together and you're not entirely sure how you would integrate some other product into Visual Studio and into your workflow. You know someone who works somewhere that doesn't integrate their source control into Visual Studio and it causes them a lot of trouble. You looked at Visual Studio Team System and Team Foundation Server briefly, but at first glance all you saw was Big! Complicated! Expensive! We Don't Need All That! and you've never looked again. Or you talked to a guy who paid someone thousands of dollars to install and it took weeks. You can't afford that and don't like installation nightmare stories.

Sound like you? Sounds like lots of folks I know, and some I mentor. Well I have good news. Word about Visual Studio 2010 is starting to come out and I am liking what I see so far. Take this article by Brian Harry, TFS 2010 for SourceSafe Users. He says that there will be a version of TFS in the 2010 product line that will be as cost effective as Source Safe, can be installed on a domain controller (for folks who really only have one server kicking around) or on your laptop (Vista or Windows 7) and can be installed in a simple Next, Next experience that can take as little as 20 minutes. Wow! He includes the screenshots of the install experience to show you how simple it is.

And you don't just get source control when you do this. You get work item tracking and integration, build automation, all integrated into Visual Studio. If you're using a Team SKU of VS, you're good to go, or if you're using a Pro SKU you just need a TFS CAL and to install Team Explorer and you're good to go. Integrated work item tracking and source control with automatic notifications on checkins and work item changes saves most developers an hour a day. Add that to what you lose swearing at Source Safe and you just HAVE to give this a try.

Kate

Saturday, 03 October 2009 11:49:10 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 01 October 2009

I came across a very insightful post from Paul Graham. Many of us know a manager who literally has meetings booked all day back to back, sometimes double or even triple booked. These are people who book meetings with themselves in order to have a block of time show busy in their schedule so they can do some non-meeting work. They end up with a week like this:

But what I hadn't thought about was how that changes the way they think about time, and about using up someone else's. Paul says:

You can block off several hours for a single task if you need to, but by default you change what you're doing every hour. When you use time that way, it's merely a practical problem to meet with someone. Find an open slot in your schedule, book them, and you're done.

Thing is, lots of us work on a completely different schedule - a maker's schedule. We need long chunks of time to get into flow and to take advantage of that state to produce. A scheduled interruption, in the form of a meeting, can ruin an entire morning or afternoon. It may not be logical and it may irritate other people, but it's still true. Read Paul's article to be convinced - he articulates this beautifully and he really crystallized the issue for me.

I find myself slowly moving into a manager's schedule these days. I'm typically juggling a lot of projects, I am a manager, I have a lot of meetings and conference calls, and I spend less and less time heads down creating. This has caused some conflict with other people in my company who are still on maker's schedules. It has also caused conflict for me - when I have a maker-style day, I don't take care of the usual zillion little things like returning phone calls, answering emails and so on, and when I have a manager-style day, I don't produce as much "stuff" - code, decks, demo scripts, proposals, or whatever - as I otherwise would. Having names for the concepts should let me understand what's going on a whole lot better. Thanks Paul!

Kate

Thursday, 01 October 2009 11:32:57 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 29 September 2009

I read (in the blog of one of his people) that Bill Wagner has won yet another award. This one is from Automation Alley, an organization that represents technology firms in southern Michigan. He was honoured in the Emerging Leader of the Year category. According to their nomination form, the award "recognizes an individual with a strong commitment to the future growth and success of Southeast Michigan’s technology community." They expect a Director or VP who has "numerous accomplishments to technology company, industry and/or market", shows "proven leadership" and is "active and respected in technology community". Yep, sounds like Bill to me! One of the delights of being an RD is that it brings people like Bill into my work life. Congratulations!

Kate

Tuesday, 29 September 2009 11:15:47 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 27 September 2009

Funny thing happened when I was reading Steve Clayton's blog. He had a Nike ad embedded - something he does quite often when he finds something funny or well done. And it was good, but about halfway through I realized something... I was recognizing the background. At about the 10 second mark there's some stairs down to SHOPPING CONCOURSE, and then this cluster of newspaper boxes, and then a mailbox, a "blue bin" for recycling,

>

And then after more newspaper boxes, street signs, and street furniture, this unmistakable silhouette reflected in a mirrored building:

It didn't just look familiar because all cities look the same. It looked familiar because it was Toronto. I've played the ad a bunch of times now and am having fun spotting the bike racks, specific stretches of sidewalk and buildings, and so on. The final shots are the the "spare subway station" (Lower Bay) whose only purpose these days is for movie and TV shoots, and the occasional special event.

An enjoyable ad even if you don't live in the GTA, but a rewind-and-pause-a-thon if you do. Thanks Steve!

Kate

Sunday, 27 September 2009 10:21:44 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 25 September 2009

Scott Ambler says a lot of "detailed specifications" are just "detailed speculations". You think people might need some particular feature, so you write some very detailed material that says "you could click this button to confirm it" and "there could be this grid that would show you all the pending requests" and so on, and that also says "we think that if we code everything the way we've just said, it will take X hours/days/weeks of effort over Y elapsed days/weeks/months/years." And tempting as it is to say that all this is some sort of binding contract signed in blood, the truth is we're all guessing. Guessing what users might need, guessing what might be a good way to give them that (both in terms of what it looks like and in terms of how it would be coded), and guessing how hard or easy it would turn out to be. We're speculating. And the users, they're speculating too, about how they would use that feature and how important it is to them. It's an interesting thought.

Don't get me wrong. We write specs. We also guess what things will cost. But we don't write the kind of super-detailed, prototype-heavy, let's-list-every-field-on-the-report stuff until that last responsible moment. Do you?

Kate

Friday, 25 September 2009 18:45:59 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 23 September 2009

I read something that surprised me at first - you can get more battery life by choosing your browser carefully. Then I had a sort of "sober second thought" and realized that of course it matters what software you use. The more CPU you use, the more battery you use. It's compounded if you start to get hot from using all that CPU and the fan speeds up, or if you're giving the hard drive a workout too. But armwaving and "maybe" and "might" can only go so far. How about some measuring?

That's pretty convincing. Read the article for the technical details.

Kate

ps: I have adblocking functionality through a carefully tailored hosts file, so my IE8-and-home-grown-adblock probably means I am maximizing my battery life, at least while surfing. Not sure Visual Studio and SQL Server are particularly battery friendly :-)

Wednesday, 23 September 2009 18:36:45 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 21 September 2009

It's not a very well known fact that the Zune plays games. Because of the large screen, it's actually quite a pleasant experience. The selection is not exactly vast, though.

The story is going to get more interesting now that the HD is released. Business Week has an article suggesting the Zune could be "a gaming titan", believe it or not. And then I read a report about an iPhone app being ported to the Zune in just 12 hours. Wow! Of course, just because they've ported it to the Zune doesn't mean you can have it - the marketplace story is Microsoft only at the moment. But I think we're in interesting times...

Kate

Monday, 21 September 2009 18:28:15 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 17 September 2009
Recently, I read an inspiring document. It included these quotes:
  • “Everything is best for something and worst for something else. The trick is knowing for what, when, for whom, and why.” —Bill Buxton
  • “Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.” —Antoine de Saint-Exupery
  • “The ability to simplify means to eliminate the unnecessary so that the necessary may speak.” —Hans Hofmann
  • “Simple things should be simple. Complex things should be possible.”—Alan Kay
  • “Everything should be made as simple as possible, but not simpler.”—Albert Einstein
  • “I have only made this letter longer because I have not the time to make it shorter.”—Blaise Pascal
I especially like the Einstein one, which I've used in works of my own. But what's surprising about these quotes is the document where I found them. It's 828 pages long and most of those 828 pages is more like this:
  • To achieve coolness, start not by thinking about what the technology can do, but by focusing on what your target users really need. Before adding that “cool” feature, make sure there are clear user scenarios that support it.
  • When asking a question, use labels that match the question. For example, provide Yes and No responses to a yes or no question.
  • Don’t give error messages when users aren’t likely to perform an action or change their behavior as the result of the message. If there is no action users can take, or if the problem isn’t significant, suppress the error message.
Can you guess? It's user interface guidelines. Specifically, the Windows User Experience Interaction Guidelines, brought to my attention by Qixing Zheng, a User Experience Advisor with Microsoft Canada, and available on MSDN as a tree of web pages or for download as a single PDF. And man, are they good! The philosophy behind them really resonates with me.  The document starts out very generally, then drills in a bit, then drills in a bit more, then explodes into hundreds of pages of incredible detail about just the right way to use a button or a link or radio boxes or whatever. Here are the headings in a 19-item list that I just love:
  1. Nail the basics
  2. Design experiences, not features
  3. Be great at something
  4. Don’t be all things to all people
  5. Make the hard decisions
  6. Make the experience like a friendly conversation
  7. Do the right thing by default
  8. Make it just work
  9. Ask questions carefully
  10. Make it a pleasure to use
  11. Make it a pleasure to see
  12. Make it responsive
  13. Keep it simple
  14. Avoid bad experiences
  15. Design for common problems
  16. Don’t be annoying
  17. Reduce effort, knowledge, and thought
  18. Follow the guidelines
  19. Test your UI

In the real document, there's a paragraph or so for each of these that flesh it out just a little. But as you read the whole hundreds and hundreds of pages you will see how these 19 concepts are really informing all of it. And I love the courage to stop at 19, a prime number, instead of trying to come up with another one to get a round 20.

I'm only quoting the philosophy stuff here but man, there are plenty of technical details like how far apart to space controls, how to design a good ribbon, choosing your button text, working with pen, touch, keyboard shortcuts, and the mouse, when to use menus and toolbars, when your application should take focus, how long tips should hang around before fading away again, and on and on and on.

Read it, live it, pass it around. See if you can't use some of the philosphy and design guidance in your web apps too.

Kate

Thursday, 17 September 2009 16:02:34 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 15 September 2009
WPF applications are beautiful. Using WPF themes and controls helps to make that possible. So control vendors make apps that show off their controls - it's a smart thing to do. And here's one that you can use every day - that I will be using every day - and it's free. Take a look:



This is a snapshot of the Task Board view for a real project I have underway at the moment. Green are requirements, yellow are tasks, and red are bugs. (Why is Create Project Plan still Active on a project that is well underway? Because it's a living document and I check in changes to it against that work item through the life of the project. We're not talking about a .mpp file here.) The views are wildly customizable, of course, but this is a nice one. There are plenty of others. I especially like the Search box at the top. I think we all have fake queries we use for searching, but this is so much neater.

It's a client application (so's Visual Studio, of course) that runs on your machine and connects to your TFS server. You can add/edit and generally play with work items here (including dragging and dropping them from the Active side of a view to the Resolved one to resolve them) and interact with the repository. It's prettier than Visual Studio, faster than Visual Studio, and probably a whole lot more acceptable to the managers, project managers, and QA reviewing types in your life than Visual Studio. The one I showed it to sure liked it.

Download your copy today!

Kate
Tuesday, 15 September 2009 15:28:16 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 13 September 2009

I'm a big Joey deVilla fan (known fact.) I'm also a big fan of the book "How to Work a Room", which inspired a line of thought that led to one of my earliest blog posts, over five years ago - What You Want to Get Could be What I Need to Give. So if Joey is quoting "How to Work a Room", you've got yourself a must-read. And then he's doing so while discussing a conference I'm going to speak at!

Why do you go to a conference instead of just watching the sessions online? So you can meet people. But gosh, when you're first starting, having conversations at conferences can be HARD. And it gets harder if you start beating yourself up for not doing it. Once you start doing it, and start reaping the benefits, you'll do it more and more, trust me. But to get started, relax. It wouldn't hurt to follow Joey's two big tips: "It’s especially important to talk to people you don’t know or who are outside your usual circle" and "The best way to make weak ties at a conference is to work the room." He follows that with 9 specific things you can do.The last one reminds me of another post from the same era in my blog: Know What You Want From the Meeting. They're all excellent and I really recommend you come to TechDays and put them into action!

Kate

Sunday, 13 September 2009 18:25:08 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 11 September 2009

There's still time to plan a trip to Boston for the BizSpark incubation week, October 5th to 9th.

As Sanjay blogs, you don't need to be in BizSpark to come - it's an event to help startups learn about Windows 7, how it can make your product better, and how to be a successful entrepreneur. You need to be at least interested in building an app that will include touch, sensor and location, the new taskbar or the new ribbon. That covers a lot of ground!

It's a free five day event, though you have to get yourself to Boston and find a place to stay. Up to three people from your firm can attend. Nomination details are on Sanjay's blog, but if you have a BizSpark sponsor you should ask your sponsor to send your nomination to Sanjay.

My firm is a BizSpark network partner. Generally speaking, we sponsor our clients - folks we're mentoring - and not people who are contacting us only to get into BizSpark. If you think completely legal free developer software (Visual Studio Team System, SQL, Windows etc) is just the ticket to get your startup started up, you should definitely look into BizSpark. It's a tremendous opportunity.

Kate


Friday, 11 September 2009 16:55:40 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 09 September 2009
Sasha Goldshtein (not the same as Sasha my MVP lead or for that matter Sasha my nephew - seems some names just follow me around) has another great Windows 7 post and this one features native C++ code for extra fun. It tackles a problem you're likely to run into if you're doing Windows 7 development - what should you use as a toolbar preview if your app has a number of tabbed views? As you probably know IE 8 shows you multiple previews, one for each tab (within reason - I have dozens of tabs open some times and it doesn't show all of them) so you might want the same effect for your application.

The idea is that the app looks like this:



And the thumbnails look like this:




One for each tab. Sasha has provided a pair of blog posts explaining this, and you can download the code from his SkyDrive. Very nice!

Kate

PS: Want to do it in managed code? Well go get the Code Pack then. Tabbed Thumbnails are handled nicely there.
Wednesday, 09 September 2009 16:31:34 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 07 September 2009

Keyvan Nayyeri knows Visual Studio Extensibility all right. He even wrote a book:

Now he's written a multi-part blog series about extending Visual Studio.

  • Part 1 clarifies the difference between an add-in and a package, and acknowledges that there are also other ways of extending Visual Studio (it's actually incredibly extensible in a lot of different ways). It's a nice history review to show us how we got to where we are.
  • Part 2 is about the IDTExtensibility2 and IDTCommandTarget interfaces. All add-ins implement the first, and those that are on the Tools menu implement the second.
  • Part 3 turns to packages, which inherit from the abstract class Package (and therefore have plenty of work to do implementing various interfaces.) Keyvan recommends C++ for package development, interestingly enough.
  • Part 4 can now talk about the differences between them in some detail. Add-ins are easier, can be written in more languages, but just can't get the same level of integration that a package can. It depends on the functionality you plan to offer your users.

Looks like there are more parts to  come ... stay tuned!

Kate

Monday, 07 September 2009 16:21:05 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 05 September 2009
The MVP program is a little unusual. Members are rewarded for what they've already done, and get all the benefits for a membership year even if they do nothing further. Of course, most of us just keep right on doing what we're doing and get awarded for multiple years. Do we do it for the benefits? Probably not. Most of us like doing community "stuff" whether that's speaking, writing, forums, blogging, or whatnot. But the benefits matter - they actually enable us to do the community stuff. We get extra information in the form of access to betas or conversations with product groups. We get access to each other, a treasure trove of information. And we get recognition, which can open doors for speaker selection folks, article selection folks, and so on. I also know as someone who regularly hires developers that "Microsoft MVP" on a resume makes a huge difference for me.

Now my MVP lead, Sasha, has written a pair of articles that summarizes many important things about the program. Part 1 calls us super heroes and Oscar winners (blush) and has some useful links. Part 2 goes into the benefits a bit.

Of course many people want to know how to become an MVP. It's a bit like how to get to Carnegie Hall... practise practise practise. Do the community stuff every chance you get, throw yourself into sharing your knowledge, and when you've been doing it for a while and you know an MVP or two, ask one of them if you think you're at that level yet. If they say yes, ask if they're willing to nominate you. If you think you're really active in the community, but not a single MVP knows you and knows what you've been up to, you haven't been active enough yet. People who don't actively share their knowledge often underestimate what "active" means.

Even if you're not nominated or awarded, I am confident that the community work you do will be its own reward. Approach it like that rather than to earn an award, and you're sure to be happy.

Kate

Saturday, 05 September 2009 12:43:43 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 03 September 2009
Scott Hanselman has done quite a few posts on Windows 7 topics already. But now he's done a lollapalooza! He covers:
  • The Code7 contest - How to get a trip to PDC and $17,777. Not bad eh? Also covered by Yochay.
  • XP2Win7 (aka PhotoView) - I've covered it before and I won't repeat the links from that post. Scott includes a gratuitous underwear shot you're going to love.
  • Code Pack - you know it almost deserves its own category here on my blog. Like Scott says, a gold mine of samples in both C# and VB.
  • 16 bonus links and the "lightweight" parameter for MSDN.



Speaking of the PDC, they've released a bunch more sessions... it's looking very good. I have to pull the trigger soon on a decision about going straight to the PDC from Tech Ed Europe. It's calling me...

What are you waiting for? You need to read Scott's post.

Kate
Thursday, 03 September 2009 10:01:35 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 01 September 2009
Here's a recording of a panel at Tech Ed this summer featuring four dear friends of mine: Stephen Forte, Joel Semeniuk, Chris Menegay, and Richard Campbell. The title is "Agile: A Process or an Excuse?" but they don't really answer that question. Instead they talk about what Agile means to them, what to say if people argue about whether you're agile or not, and the role of tooling including Visual Studio Team Systems, sticky notes, really large sticky notes, and Excel spreadsheets. They don't agree on all of it, which makes it a good panel, but the insight is useful. Most interesting to me: Joel and Chris have been in the "I am the guy you are making the software for" role on some internal projects - and found themselves doing everything that your usual contact over in the business unit does when you ask for requirements - forgetting some, being vague, leaving out special cases, and demanding changes because of changes in the business model out in the real world. Users don't do these things because they don't know any better; they do them because that's how life is. An agile approach lets you live in that reality instead of bemoaning the fact that no-one will stick to the things they signed two years ago. I listened on fast speed, but I suggest you only do that if you've spent a lot of time listening to these four because they're pretty fast talkers to begin with, and faster still when they get excited about a topic.

Kate

Tuesday, 01 September 2009 09:37:34 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 30 August 2009
As you probably know, we're on our way to a new version of the .NET Framework. There's so much that is new in it you could hardly know where to start. I'm just letting the information wash over me in other people's blogs, and trying things out with the beta from time to time. I spotted two related things in the last little while.

First was Improvements to Interop Marshaling in V4: IL Stubs Everywhere on the CLR team blog. The takeaways here are faster performance, consistency between the 32 and 64 bit worlds, and better debugging. Since there is still a lot of native code hiding underneath your managed calls to library functions, everyone cares about the faster performance aspect. Read the post for all the details if interop matters to you the way it matters to me.

Second was COM Interop Gets Much Better in C# 4.0 on DevX. I've always avoided C# for COM interop work because it doesn't do optional parameters, and most COM work is rich in them, especially working with Office, which I used to do quite a lot of. Less casting, no need for PIAs, no more fake values called "missing" or some variant thereof ... it's all good. And here again the magic words "improved performance".

Two small things to note with a non-small impact on your life as a developer.

Kate

Sunday, 30 August 2009 15:03:23 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 28 August 2009
Alan Skorkin reminds us that much of what drives current software development process came from the more general study of process for all kinds of work, including manufacturing. When you decide to adopt a particular process, you do so to reach a goal and for that vast majority of businesses, that goal is productivity - more profit per time period. (For a few very small operations, less time period to earn the profit / income sounds far more humane, but is still based on a desire for higher productivity.) Whenever you adopt a process instead of just telling your staff to do whatever you want, it's because you don't think they would be as productive left to their own devices as they would be under the direction of the process.

As Alan points out, there are two very different thoughts behind this basic position. One says that workers are lazy and shiftless. They'd rather chitchat, smoke, or daydream than produce what management wants them to produce. Processes built on this thought are all about measuring and controlling and proving that people have or haven't done what they should have done. The second, christened Theory Y in contrast to the first, which got dubbed Theory X in order to tell the two apart, says that workers are much happier when they know they are productive, and need management to help them achieve productivity as a co-operative goal. Processes built on this thought are full of collaborative work and empowering and the like.

He goes on to draw some specific conclusions about Lean that I will leave aside. I think it's useful to look at the process you work with day to day and ask yourself - is this process founded on Theory X or Theory Y? What image does the management at your firm have of the workers at your firm? Does process control them or support them? Is the motivation for workers assumed to come from inside themselves, or to be imposed by management? No matter what management says about what developers can and can't do, the process you work with will tell you their founding principle. It might be an eye opener to think about it like that.

Kate

Friday, 28 August 2009 13:35:41 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 26 August 2009
It wasn't long ago everyone was talking about a whole new way of working. It started with telecommuting in the 90's, but spread in this century to something far bigger. Remote work as a way of life, virtual teams, outsourcing, offshoring ... the scale just kept growing and the savings for companies appeared to be at least partly met by happy staff, whether that was a guy in the city who didn't have to spend 90 minutes each way in traffic, or a guy who was able to keep living in his small town while working for the big city firm so far away, or even a guy in a developing country who was able to earn more than his neighbours and follow the lure of high tech and problem solving at a time when no firms in that country were offering those jobs. I know many people in the big cities and the developed countries lost their jobs to those people, and I know it wasn't always simple to find traditional employment once the world of work started to change. Still, the world and the way many people in it earn a living changed and will not be changing back.

That said, in the mid 90s everyone I knew who was associated with any of this "new way of working" had come to realize it wasn't just a fire and forget sort of thing. You had to communicate a lot. And while technology made some ways of communication simple and cheap, so that video calls and conference calls and instant messenger and desktop sharing and so on are all vital, it couldn't do it all. You have to get face to face still, and you have to do it regularly. I recently finished a 10 month contract for clients three thousand miles away. I did the vast majority of the work from here, and had phone calls and livemeetings many times a week. But every 4 to 6 weeks I got on a plane and I went there. And wow, the work we got done in those few days! Mini hallway meetings, lunches, dinners -- I typically could "touch" half the project participants in just two or three days, and solve seemingly intractable problems by going to people's offices and listening to them and looking at their body language and telling them they could trust me or asking them what the real problem was. It made such a huge difference to the success of the project. I didn't get paid for the time I spent travelling to them, or the nights spent away from my family, but I gladly invested that time to make everything go smoothly and to be a successful remote worker.

Some other folks have noticed this too, and in a far more systematic way. How's this for a conclusion: "... common workplace-relationship problems, such as broken commitments, mistrust and misrepresentation of information, occur more than twice as often with virtual teams, as opposed to teams located in the same building. " Yikes! Apparently it's partly because things we do when we're upset with people work well if you see if each other regularly, but make things worse if you're apart. Or this useful summary: "teams are a lot more effective when they're working with their friends in another country than when they're working with those stupid offshore idiots who never understand our designs or requirements." So in that context, what could be a worse way of saving money than lowering the travel budget to zero and not letting people visit each other any more?

Yet that is exactly what's happening in a lot of companies. If it's happening in yours, do something about it. You need to visit your colleagues. If not, when your projects go pear-shaped, you may find the whole concept of virtual teams gets thrown out with it. And that would be a real shame.

Kate

Wednesday, 26 August 2009 13:53:50 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 22 August 2009
I've done several Tech Ed talks, in Europe and the US, in which I've demoed lambda expressions, a new language feature coming in C++0x and implemented in Visual Studio 2010. If you missed your chance last year to watch my Tech Ed Europe talk, it's still available on page 3 of the "last year's highlight's" page. But that's 80 minutes and covers more than just lambdas. If you would be up for investing a tenth of that time, try this Channel 9 piece featuring Thomas Petchel. He's obviously VERY familiar with the STL and he illustrates perfectly how writing dinky little functions to initialize arrays can be tedious and time consuming, and how lambdas make them faster. If you watch that and like what you see, go ahead and give my Tech Ed talk a listen as well.

Kate

Saturday, 22 August 2009 09:23:29 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 20 August 2009

Recently I came across an article suggesting how a good developer should comment their code. This was aimed at those writing SQL scripts, but that doesn't particularly matter. The rules were the same ones I lived by in the 70's and for a long time since then. For example, at the start of each file there should be a modification history, like this:

/* Title: 002 - Setup SQLCMS.sql
Purpose: Setup the various components for SQL CMS
Version: 1.1
Modification History:
04/30/2009 - Buck Woody - Initial Script Creation
05/15/2009 - Buck Woody - Added MAPS load scripts

I copied Buck's since I don't have any like this myself kicking around. And why not? Because VSTS and TFS take care of that for me. Who changed it, what they changed, and why is all available in the repository. Duplicating it in the file itself just gives you another task to forget, and another pair of locations that might get out of sync. So I don't do these any more.

There's another kind of comment that we all used in the 70's and 80's and that was the "explain your names" comment. When you only had 8 characters to work with, you needed a big block of comments that told everyone that NPPLINV was Number of People Invited and CIDMNEW was Calculate Interest, Daily Method, New or whatever. But we don't have name length restrictions any more. So why do I still see this sort of thing:

Dim ClientName as String      ' Variable to hold name of client
Dim ClientBirthDate as Date ' Variable to hold birth date of client
Dim ClientRepID as Integer ' Variable to hold ID of client rep

(Don't believe me? I saw this very code yesterday in a VB6 app I was debugging.)

As Jon Torresdal points out, if you choose your function names and variables well, you don't even need those single lines that explain funky-looking calculations. Extract your weird stuff to a function, even if it's a single-line function, and it explains itself. You can see a similar approach, though comments are never mentioned, in Justin Etheredge's post about isolating logic into little functions.

So let's see, no comments at the top to explain what the file is, no comments after each variable to explain its strange and abbreviated name, no comments before funky calculations because they've been refactored into single line functions ... well what comments even remain, then? Well there's commented-out code - but I have a rule against that. There's this sort of thing:

'only update confirmed date the first time it's confirmed
If DateConfirmed = Nothing OrElse DateConfirmed = New Date() Then
DateConfirmed = Today
End If

Sometimes these comments are there because the developer wrote the comments first, as pseudo-code, then filled in the code. Other times they are just an attempt to translate the code into English for the reader. Does it help? Well, maybe. But comments are becoming less and less important as time goes by. Interesting.

Kate

Thursday, 20 August 2009 09:57:01 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 16 August 2009
I've mentioned the sensor improvements in Windows 7 a little bit, but they really deserve a good long blog post of their own. Luckily for me, my fellow RD Sondre Bjellås has written it :-).


This is a handy demo board that does light as well as position (think Wii) with some buttons you can push. Sondre covers where to get the board, where to get the drivers, and a really simple sample app to get you started. Then you're going to want the Windows 7 Training Kit - the Hands On Labs have some fun demos. Check it out!

Kate
Sunday, 16 August 2009 19:04:13 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 14 August 2009
What language do you think this post by Jeff Atwood refers to?
There are over 220 billion lines of <language> in existence, a figure which equates to around 80% of the world's actively used code. There are estimated to be over a million <language> programmers in the world today. Most impressive perhaps, is that 200 times as many <language> transactions take place each day than Google searches - a figure which puts the influence of Web 2.0 into stark perspective.
Wow. 220 billion-with-a-b? B as in Business? As in Business-Oriented-Language? You know, the only thing I like about COBOL (and I have written precisely one COBOL program in the three decades I've been paid to program) is that it made it possible to have a language called SNOBOL.

The comments are full of folks who are maintaining 30 year old apps with a million lines of code, but the thing about billion-with-a-b is that you need 220,000 such folks to hit that number, and what's more as Larry O'Brien points out 20 years ago folks said there were 30 billion lines, and while I can agree that existing apps are being maintained, I don't think there are 7 times as many lines of COBOL out there now as there were at its peak.

But that's not my point. My points is that when you live at the leading edge, the bleeding edge, you forget a really important rule: edges are thin. The handful of us who are moving our apps to 4.0 now, who are complaining about an incompatibility between our Visual Studio 2010 beta and our Office 2010 beta, who are using a language invented this century, are dwarfed by folks who have been using the same tools and the same languages throughout their entire career. These people are invisible because they don't come to conferences, attend user group meetings, buy programming books, or read blogs. Heck, at one of my clients, the AS/400 guys sat off to the side and behind a little wall of cubicle partitions that was double the height of everyone else's. Really. They also never came to all-hands meetings and were exempt from the company-wide .NET training I delivered.

So do these "dark matter" developers matter to the "bleeding edge" developers? I think they do. For one thing, when you have your shiny and exciting idea to change everything about the way some software works, these guys can cancel your whole project with one or two sentences. For another, they are likely the only ones who understand the data format, the business rules as actually coded, and the special cases that come up every 15 to 20 years. Not to mention they can work the text editor. If you find yourself in a situation with some COBOL (or equivalent) developers in it, don't ever tell them you didn't think they existed any more. That's my tip to you.

Kate

Friday, 14 August 2009 18:39:40 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 12 August 2009
There was a bit of a kerfuffle in the C++ standards world in mid July arising from the summer meeting of the ISO C++ committee. Agreement couldn't be reached on how to implement concepts. In the end it was decided not to include them in the next version of the standard.

What are concepts? They improve the experience for template consumers. C++ templates are amazingly powerful, but using them can involve a lot of guesswork and a lot of swearing. They're pretty easy to write, and just by typing a line of code you create a requirement, a pre-requisite, for anyone who wants to use your template. If you write a template that takes two instances of class T called t1 and t2, and then somewhere it says t1 + t2 or t1 < t2, then your template can only be used with types T that have the operator + or the operator <. Anyone who uses it for some other type is going to get an error message that might be useful, but might be your typical nasty template-related error message. That makes templates easy to write, but hard to consume. Short of actually reading through the code for the template, you can't know before you try compiling whether or not your consuming code actually meets the requirements for using the template.

Generics in .NET deal with this through constraints - the generic writer identifies the interfaces that must be implemented by any type that will use the generic - IComparable or IEnumerable etc. If you want to use the generic, you  implement the interface, and the compiler will help you get that done with readable error messages.

So that was the heart of concepts. Some sort of decoration you would put on your template to say "here is what I expect of those that use me." How important are they in general, and how important to C++0x?
  • concepts’ presence or absence in C++0x just won’t make much difference to most users - Herb Sutter
  • [concepts were yanked out and that is] a major setback for C++, but not a disaster - Bjarne Stroustrup
  • removing them was our best available option both for C++0x and for concepts as a language feature - Doug Gregor
  • Not the end of the world, but disappointing nevertheless - Alex Fabijanic
What do I think? I think that template consumers fall into two large categories - those who consume templates they wrote themselves, and those who consume the STL. If you wrote it, I hope you know what it needs, and if it's the STL, well you can paste your opaque error message into a search engine and someone's blog will tell you what you need to add to your class to use that template. I don't think there are a lot of people consuming poorly documented and sparsely used templates. I agree that concepts could result in that sector growing some day, but that few developers are walking around wishing for them or feeling the pain of not having them. I'm sure it's a disappointment to everyone who put so much work in to them, and who will continue to work on them towards inclusion in a future version of the standard, but the rest of us can relax and get ready to see the other C++0x goodies included in a standard where x might actually fit in a hex digit.

Kate

Wednesday, 12 August 2009 14:59:55 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 10 August 2009



Of course the most important sessions at PDC couldn't possibly be announced yet. The best are the ones that are TBD in the session list and schedule right up until the keynote. That's how you know something big is going to be announced. Imagine something where just hearing its code name, just knowing who was going to give the sessions, or even a single sentence of description would spoil the whole announcement. Those are the sessions you go to PDC for, so it's a bit like a Christmas present ... you can't know in advance what it will be.

But it's a four day conference with a lot of sessions and some of them can be announced in advance. I can see that this year some folks have decided to have slightly more interesting session titles (along with the more traditional titles):
  • Zero to Awesome in Nothing Flat: The Microsoft Web Platform and You
  • Windows Workflow Foundation 4 from the Inside Out
  • Windows Identity Foundation Overview
  • Windows 7 and Windows Server 2008 R2 Kernel Changes
  • Using Classification for Data Security and Data Management
  • Under the Hood with Microsoft SharePoint 2010 Programmability
  • The State of Parallel Programming
  • The DirectX 11 Compute Shader
  • Simplifying Application Packaging and Deployment with Microsoft SQL Server 2008 R2
  • Petabytes for Peanuts! Making Sense Out of “Ambient” Data.
  • Microsoft Visual C++ 2010: The "Accelerated" Way of Building Applications
  • Microsoft Unified Communications: Developer Platform Futures
  • Microsoft Silverlight Roadmap and Futures
  • Microsoft Silverlight 3 Advanced Performance and Profiling Techniques
  • Manycore and the Microsoft .NET Framework 4: A Match Made in Microsoft Visual Studio 2010
  • Development Best Practices and Patterns for Using Microsoft SQL Azure Databases
  • Developing xRM Solutions Using Windows Azure
  • Developing .NET Managed Applications Using the Office 2010 Developer Platform
  • Developer Patterns to Integrate Microsoft Silverlight 3.0 with Microsoft SharePoint 2010
  • Data Programming and Modeling for the Microsoft .NET Developer
  • Building Applications for the Windows Azure Platform
  • Automating “Done Done” in the Dev-to-Test Workflow with Microsoft Visual Studio Team System 2010
  • Accelerating Applications Using Windows HPC Server 2008

My favourite title in there is definitely "Manycore and the Microsoft .NET Framework 4: A Match Made in Microsoft Visual Studio 2010" but there are other contenders for sure. As for the topics themselves, I think many of us have still not given concurrency/parallelism/manycore the attention it deserves, and all of us are guilty of compartmentalizing what we learn about so I bet you have probably ignored something (Silverlight, or SharePoint, or Azure, or the full power of VSTS). That means these sessions alone will make us better devs. If these titles are enough to get you signed up, do it now while you can get a $500 (US) discount - from $2095 for the whole conference (except workshops) down to $1595 until Sept 15th. Wait till Labour Day to start bugging your boss about it and the discount will be gone, plus the plane tickets will be more expensive. (Oh, if you're a student or teacher, you pay only $595, which gives you an astonishing way to get head and shoulders above those around you.)

There are also some seriously intelligent workshops scheduled:
  • Getting the most out of Silverlight 3
  • Patterns of Parallel Programming
  • Developing Quality Software using Visual Studio Team System 2010
  • Architecting and Developing for Windows Azure
  • Microsoft Technology Roadmap
  • Software in the Energy Economy
  • Developing Microsoft BI Applications - The How and The Why
Four of those seven workshops are being given by RDs, meaning you'll get real world experience along with the technical product knowledge. What a way to get caught up on something you weren't paying attention to!

Going to conferences is getting harder and harder to justify in this climate. But that doesn't mean you stop going to conferences - it means you only go to those that are relevant to your work and offer amazing value (content, people, atmosphere, and otherwise-unavailable bits) in return for your registration fee, travel, and time away from work. The PDC offers just that for devs on the Microsoft stack. It's the only conference I've ever paid my own money to get to. Be there!

Kate
Monday, 10 August 2009 11:49:32 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 08 August 2009

Code Pack, or Windows® API Code Pack for Microsoft® .NET Framework to use the official name, has hit 1.0 with the RTM of Windows 7 and is now available for your downloading and coding delight. Yes, two registered trademarks in the name, but still technically not a product. It's the most useful not-a-product I know. The mission statement, if you will, of Code Pack is:

The Windows® API Code Pack for Microsoft® .NET Framework provides a source code library that can be used to access some new Windows 7 features (and some existing features of older versions of Windows operating system) from managed code. These Windows features are not available to developers today in the .NET Framework.

The parenthetical in that description is referring to Vista features like Restart and Recovery and Network Awareness, among others. If you've been playing along throughout the beta period of Windows 7 you probably have three questions:

What's in 1.0 that wasn't in 0.9?

  • Shell Search API support.
  • Drag and Drop functionality for Shell objects.
  • Support for Direct3D and Direct2D interoperability.
  • Support for Typography and Font enumeration DirectWrite APIs.
Will my 0.9 stuff work with RTM or should I get 1.0?
  • You should get 1.0 because it has some bugfixes in it.
Can I use 1.0 on a machine running the RC?
  • Probably, but no guarantees.
To me the biggest thing in this 1.0 release is this:
  • The Code Pack also contains sample applications built using this library. Each sample has a C# version and a VB.NET version and has its own solution file.
That's right. VB samples in 1.0 of something. Thanks for noticing :-).

I am such a huge Code Pack fan (and have had a small hand in its birth) so this is just a wonderful summit to have reached. We've had over 24,000 downloads of Vista Bridge and the pre-release versions of Code Pack, so I am confident a lot of people are able to access Windows 7 features from managed code a lot more easily than they expected to.

Kate
Saturday, 08 August 2009 11:10:52 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 06 August 2009
If you like to learn how to do things from material that is longer than blog posts, and videos don't work for you, then you probably still buy books. Here's one you might be interested in:



Authors, in case you can't quite read it there, are Yochay Kiriaty, Laurence Moroney, and Sasha Goldshtein. I am often tempted to link to every post Yochay makes - they are detailed, and useful, and crammed with more links. If you're developing for Windows you should be reading his blog and that's that. I read Sasha's blog regularly, too, and he is constantly coming across things I would never have thought of. I may not need that information that day, but reading it makes me a better developer. Both of them give attention to both managed and native code for extra points from me. Laurence is more a Silverlight guy, but I'm going to read his blog for the next little while anyway.

I haven't seen a preview of the book yet, but it's due Sept 30th, and you know the content will be good. A pound and a half of developer good stuff :)

Kate
Thursday, 06 August 2009 08:49:51 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 04 August 2009
OK, technically you can't upgrade from XP to Windows 7. But that is what the nice guys at Language Log call nerdview. You can't click a button in the install process that has Upgrade on it and come back later to find that you are now running Windows 7. But you can follow a series of steps that takes you from your current XP installation full of applications and pictures and mailbox and IE favourites and desktop wallpaper and all that jazz, and end up with a Windows 7 installation full of all the same stuff. Well, not your applications, but all your data and your settings. That feels like an upgrade to most people, and if the applications they use are free (Messenger and other downloadable clients) or they have the installation materials and they only use 3 or 4 apps (say, Office) then this is a really simple process to follow. Scott Hanselman has all the details complete with screenshots and instructions.

Me, I'm going to repave. In fact I never fully paved when I went to RC - I've been using Remote Desktop to get to other machines around the office that have Visual Studio etc installed. That was mostly because I'd been through two hard drive failures in as many months and was suspecting the controller was wonky. This drive has lived long enough that I'm willing to install stuff on it now, so there's plenty of installing in my future :)

Kate

Tuesday, 04 August 2009 08:35:33 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 02 August 2009
I hate SharePoint sometimes. It's powerful, and strong, and free(ish) and does an amazing job. If you just want to install it and use it, there's really nothing to complain about. But it's greatest strength, and my greatest user-upper of swearwords, is that you can program against it. With each release, whatever I swore about last time is magically fixed (RunWithElevatedPrivileges FTW) but a whole pile of new misery sneaks in out of nowhere. (Well, and CAML remains, but I guess we can't do anything about that.) It's usually related to security, but not always, and the thing is that debugging it is always like surgery with oven mitts on.

I had a situation where I wanted to find the item you just added. Took a little searching, but I found it:

query.Query = "<Where><Eq><FieldRef Name='" & list.Fields.Item("Created By").InternalName & _
                "'/><Value Type='User'>" & SPContext.Current.Web.CurrentUser.Name & "</Value></Eq></Where>" & _
            "<OrderBy><FieldRef Name='Created' Ascending='FALSE' /></OrderBy>"
items = list.GetItems(query)
The first entry in items is the thing you most recently added. OK, fine. But we have event receivers on these lists, and they go off asynchronously. That means that right after you saved an item, while the receiver is still processing, the item isn't returned by the query.

Well that made me grumpy but I understood, so I made a loop, and if the first entry in items wasn't recent enough (say, in the last two minutes) I would have a little sleep and then ask again. But no matter how long I waited (even 20 minutes!) this code never would find the item. Oh, there was swearing, you can be sure of that.

I decided that SharePoint must be caching the query results. But searching for things like "SPListItemCollection cache" just got me helpful tips on caching these results myself, some thread safety issues, and the like. For example, this MSDN article says

You might try to increase performance and memory usage by caching SPListItemCollection objects that are returned from queries. In general, this is a good practice; however, the SPListItemCollection object contains an embedded SPWeb object that is not thread safe and should not be cached.

Does that match up well with what I am seeing - always the identical results from this query-in-a-loop even though I know the underlying list has changed while the loop was running? It does not.

Then I found two blog entries by Jeff Crossett: first the complaint, and then the solution. He's right. And when I implemented his hack:

' use a random value in query so we don't get cached.
randomValue = generator.Next(100, 1000000000)
query.Query = "<Where><And><Eq><FieldRef Name='" & list.Fields.Item("Created By").InternalName & _
                "'/><Value Type='User'>" & SPContext.Current.Web.CurrentUser.Name & "</Value></Eq><Neq>" & _
                "<FieldRef Name='Title' /><Value Type='Text'>" & randomValue.ToString & "</Value>" & _
                "</Neq></And></Where>" & _
            "<OrderBy><FieldRef Name='Created' Ascending='FALSE' /></OrderBy>"
items = list.GetItems(query)

We all lived happily ever after. Well, until the next WTF that SharePoint throws my way. I am doing amazing things with this product. My customers would pay more for their software if SharePoint didn't exist. But man, sometimes it is HARD.

Kate

Sunday, 02 August 2009 08:26:35 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 31 July 2009
It's time to start talking about TechDays (because among other things, I'm talking at TechDays :-).)



Joey has the details including a list of sessions. I'm in the Core Fundamentals and Best Practices track in Toronto, delivering these two talks:

Day 1, Session 1:
Tips and Tricks for Visual Studio

This session enhances your experience with Visual Studio. Keyboard shortcuts, macros, layouts, fonts, tools, and external utilities are all very powerful and underused features of Visual Studio. This session makes you more productive in Visual Studio. Bring your pen and pad because you'll definitely want to take notes!

Day 2, Session 4:
Database Change Management with Team System

If you develop database enabled applications on top of SQL Server, you owe it to yourself to considering doing it better with Visual Studio Team System. In this session, you’ll learn about changes to how the product works under the covers and what that means to you. Then, you’ll learn how to use the product to design, build, and deploy your databases to development, test, and production environments -- all with purpose and method instead of the more traditional madness that can be found in many shops in the wild.

I am a huge Data Dude fan, which makes the second session a natural, and as for the first one, I'm one of those people. When I present I'm nice and careful with lots of mouse clicking so everyone can see what I'm doing. But when I'm sitting down to code, I get a pretty constant chorus of "hey, how did you do that so fast?". Come and see how :-).

Kate

Friday, 31 July 2009 22:15:47 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 29 July 2009
I didn't even know there was a Visual Studio Project Team blog, but the entries lately sure have been C++ relevant:
Brian Tyler says "Our areas of responsibility are those surrounding projects and solutions in Visual Studio - specifically the C++, C# and VB project systems - but we're involved in other code bases in those areas as well." and explains that he's going to start the blog with these C++ topics because the conversion of the VC++ project system from VCBuild to MSBuild was a major effort in VS 2010.

I'm really happy about the VC directories thing. It made moving projects from one machine to another very brittle that things like which version of a header file you got were machine-specific instead of project specific. The blog as a whole is a must-read if you're going to do any C++ work in Dev10.

Kate

Wednesday, 29 July 2009 22:05:26 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 27 July 2009
If you want to start talking to developers about your technology, you're hardly the first. Whether you want to talk about the tech your company builds, or just tech that you like to use, or something a little in between (I don't make Microsoft software, or sell it, but since it's the platform I consult and mentor on, I have a financial interest in people using the tech I talk about) there is someone out there who is in the same boat as you.

Chris Heilmann, a web developer evangelist working for the Yahoo Developer Network, has written a handbook for developer evangelists. Trust me, what this handbook has to say is not Yahoo-specific, or web-specific, at all. It is developer-specific in parts, since demos and such are vital to us. Definitely worth a read - and if you want to speak on our tech, start doing some of this.

Kate

Monday, 27 July 2009 17:32:24 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 25 July 2009
A client asked me to help recently with a small mystery. They had a database provided by a customer and they'd been asked to import the contents into the tables used by their own product. One of the tables had a BLOB column and from context they were quite sure it was used to hold scans of documents. There was even a "filename" column and a "filetype" column that suggested very strongly the scans were stored as TIFFs.

It had taken a while to find code to read the blobs, and when they ran it, the resulting file was rejected as not being a valid TIFF. They weren't sure if they were handling the blobs wrongly, if the data was encrypted, or if it was some other image format (they had tried PDF and GIF already.) In a highly enjoyable two hours, here's what I did:
  • Found short (ten lines including initialization and cleanup) code to read one blob in VB6 and save it to disk.
  • Found the TIFF format details, looked in the resulting file with notepad and confirmed it didn't start either II or MM and so wasn't a TIFF.
  • Looked at a few other file formats but wasn't really gaining any knowledge, just ruling things out that you could rule out by renaming and double clicking, then having the file rejected by the app that tried to open it.
  • Discovered Marco Pontello's absolutely cool File Identifier, TrID, and downloaded it
  • Removed the extension from what had been test.tif, pointed TrID at it, and was told 100% it was a zip file. Duh, the file started PK, I might have guessed that one.
  • Renamed it to test.zip, unzipped it by hand -- ooh, it IS a zip! -- and was rewarded with file.txt for my trouble
  • Looked at file.txt in notepad and noticed that it was full of binary-looking gibberish, but it DID start with II
  • Hand renamed file.txt to file.tif and double-clicked it
  • Presto! A scan of a document!
I left my client to write the code that did all the blobs, including unzipping them and renaming (every single blog contained a zip which  contained a TIFF renamed to file.txt and no, I don't know why) from within a quickly written importer application. The big mystery was solved. Thanks, Marco!

Kate

Saturday, 25 July 2009 12:13:01 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 23 July 2009

I admit it, I read my referrer logs. I want to see what kinds of searches bring people here, or who is linking to me. I think a lot of the single word searches (women, or shirt, or december) are blog spammers looking for posts to spam on. And some are clearly my name, names of my friends or folks I blog about, conferences I'm speaking at. The majority is things I know about, things for which I want to be your expert source: /clr:pure, windows 7 taskbar, uac manifest file, marshal_as and so on. Yay.

But this one was just plain odd: c++ standard limerick. Really? So I repeated the search, and found this:

When writing a specialization,
be careful about its location;
or to make it compile
will be such a trial
as to kindle its self-immolation.

OK, it's not spaced like that in the standard. But who'da thunk it?

Kate

Thursday, 23 July 2009 19:48:20 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 21 July 2009

Want to go to PDC but not sure you can afford it? How would this work for you: a trip to PDC including flights, hotel, and conference admission?

That's the grand prize in the INETA Component Code Challenge. Write an app (web, client, whatever) that uses at least two different components (a grid and a chart? a PDF creator and a calendar? a report and a spreadsheet? You decide.) from the sponsors.

Try it! And maybe see you in LA!

Kate

Tuesday, 21 July 2009 19:40:35 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 19 July 2009

Here's another tip from Habib on debugging. If you have a particular screen you want to bring up, and it takes a lot of clicking and selecting to bring it up, why not just set a breakpoint and then bring it up by constructing and calling it with the immediate window?

Habib's video features a WPF application, and the constructor takes no parameters, but you could use this for Windows Forms and you could pass through whatever parameters you needed to. A very handy tip - any language, any kind of client application.

Sunday, 19 July 2009 19:35:20 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 17 July 2009

It's been a while since I did a series of posts on debugging tips:

So here is not so much a tip as an announcement. You see , it's no coincidence that my examples for conditional breakpoints were numbers (some index into a structure is greater than 346, or Xid is 1234.) Until now, you couldn't really use strings in conditional breakpoint expressions. But the cool news is that, starting with Visual Studio 2010, you can!

You can't just call arbitrary functions including your own foo(whatever), but you can call a pretty impressive list of variants on strlen and strcmp. The details on are Habib Heydarian's blog. Just one more reason to want Visual Studio 2010!

Kate

Friday, 17 July 2009 12:27:15 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 15 July 2009
Finally, XP2Win7 is released! I've been watching this one for a long time. It's designed to show off both Windows 7 features and development good practices. The same binaries behave differently on XP and on 7 - on 7 it lights up and shows 7 features like the taskbar or libraries support, as well as Vista features that never got the attention they deserve like Restart and Recovery.

The application itself is a photo viewer and that makes it a natural fit for hooking into libraries, search and organize, and the preview system. It has an intuitive jump list on the taskbar:

It also uses the new Sensor support, Aero glass effects, trigger-started services for backing up images when a USB key is inserted, MMC and Powershell integration, the new Event Tracing for Windows (ETW) and so much more. This will be your roadmap to Windows 7 development. Of course all the code is available, as well as a simple MSI if you'd just like to play with the application a bit and understand what Windows 7 has to offer.

Get your copy and start learning and exploring!

Kate

Wednesday, 15 July 2009 09:32:56 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 13 July 2009

A whole pile of really smart people, many of whom I am lucky enough to call my friends, have contributed to a new eBook on development topics. Check these titles:

  • Working with Brownfield Code by Donald Belcham (Microsoft MVP)
  • Beyond C# and VB by Ted Neward (Microsoft MVP)
  • Remaining Valuable to Employers featuring Barry Gervin, Billy Hollis, Bruce Johnson, Scott Howlett, Adam Cogan, and Jonathan Zuck
  • All I Wanted Was My Data by Barry Gervin (Microsoft Regional Director and MVP)
  • Efficiency Upgrade by Derek Hatchard (Microsoft Regional Director and MVP)
  • Getting Started with Continuous Integration by Sondre Bjellås (Microsoft Regional Director and MVP)
  • On Strike at the Software Factory by Daniel Crenna (Microsoft MVP)
  • C# Features You Should Be Using by Ted Neward (Microsoft MVP)
  • Accelerate Your Coding with Code Snippets by Brian Noyes (Microsoft Regional Director and MVP)
  • Is Silverlight 2 Ready for Business Applications? by Jonas Follesø (Microsoft Regional Director and MVP)
  • Innovate with Silverlight 2 by Daniel Crenna (Microsoft MVP)
  • Real World WPF: Rich UI + HD by Gill Cleeren (Microsoft Regional Director and MVP)
  • Hidden Talents by Peter Jones
  • Creating Useful Installers with Custom Actions by Christian Jacob
  • Banking with XML by Peter Jones
  • Sending Email by Derek Hatchard (Microsoft Regional Director and MVP)

Also, it has comics in it. Really. And if you prefer a printed copy, you can order one (black and white or colour) at a nominal cost. And these aren't little blog posts, they're decent length articles. All told the PDF is 132 pages. Each article conveys, on top of the technical information you'd expect, a glimpse into the personality and style of the author. A highly recommended download and read.

Update: This whole recommending thing works even better when you include a link: http://devshaped.com/book. Slow brain day today, I guess.

Kate

Monday, 13 July 2009 13:00:57 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 11 July 2009
Remember that post by Aaron Margolis I linked to about launching a non elevated app from an elevated one? I mentioned that he'd left the managed version of his code as an exercise for the reader. Well Sasha Goldshtein has taken up that challenge and written the managed code. Not only that, he's added it to his UAC Helpers project on CodePlex, a collection of code that helps you work with UAC. Nice!

Kate

Saturday, 11 July 2009 17:22:20 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 09 July 2009

We have a long running Agile project underway. Every month or so we deliver a new release, then work with the customer to decide what will be in the next release. Unlike many Agile shops, this isn't our only project - we have other small software development projects, mentoring work, and so on that take up about two thirds of the team's time, leaving one third for this project. What's more, we do this as a little fixed bid project every month, and both my bottom line and the customer are happy with the cost of each release. The key to that, of course, is accurate estimation of the effort in each iteration.

In some ways we have it easy now. The client has working code, and each month all we need to estimate are the changes and additions to that code. But how would it be if we were starting from nothing and planning to build a whole big system over the course of a year or so, for someone who wanted a fixed cost up front and a reasonably complete list of features to be delivered for that cost? Stephen Forte gave a talk recently on just that topic. Plenty of good ideas and a fun listen.

Kate

Thursday, 09 July 2009 07:38:19 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 07 July 2009

I do a lot of work in VB, though I am a C++ MVP not a VB one. This year at the MVP Summit many of the VB MVPs did short interviews with Beth Massi about how they got started and what they do in VB. Get to know some of these folks a little better. I spotted Julie Lerman, Rob Windsor, Ken Getz, Deborah Kurata, Daron Yondem, Jackie Goldstein, and even a thirteen year old! It's a mix of video interviews and text ones, and a very small time committment.

Kate

Tuesday, 07 July 2009 07:31:52 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 05 July 2009

Ian McKenzie has a funny list of 20 ways to tell you're Canadian. My only quibble is that for #4 I would say cottage instead of camp. Other than that, rock on!

Kate

Sunday, 05 July 2009 19:09:17 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 03 July 2009

At Tech Ed this year, a whole pile of my friends (and me too) were invited to pontificate a little on fairly light weight technical topics like "what technology have you enjoyed lately?" and "how do you keep up with everything that's changing all the time?". The result is a fun series featuring luminaries inside and outside Microsoft: Scott Hanselman, Billy Hollis, me, Richard Campbell, Stephen Forte, Clemens Vasters, Tim Huckaby, Michele Leroux Bustamente, Jim Wilt, Brian Noyes, Loke Uei Tan, Matt Hessinger, Don Box, Juval Lowy, Jeffrey Palermo, and Tim Heuer. They're being uploaded one a week or so - you can get started now and enjoy more later.

Here's a direct link to mine if you need it: http://msdn.microsoft.com/en-us/dd776253.aspx

Kate

Friday, 03 July 2009 17:08:51 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 01 July 2009

So I guess I am totally having a "get off my lawn" moment here. I read, on a blog I generally enjoy reading, the following rant about "bad customer service":

  • Why am I still required to fill out my personal details (city, birth date, job title) while registering on web sites, when all they need to do is fetch that data from my LinkedIn page?
  • Why does my new Internet provider give me a new email address (which I won't use), requiring me to read that mailbox regularly for service updates? Why not send me tweets?
  • Why do I have to go to the web site of my vendor of contact lenses to re-order my monthly set of lenses? Why not enable me to send a "reorder" message through Facebook?
  • Why does the agile 2009 conference require that I upload my presentation to their site, in PDF form with maximum size of 5 MB? Why not integrate with the much more advanced SlideShare where I already have an account?
  • Why do I get offers for products that I clearly don't want or that I already own, which can be easily deduced from my reviews, ratings, and rantings on various social sites?

Prior to this bulleted list was a complaint that an ISP hadn't magically noticed that some emails weren't reaching the ranter, and didn't email about it, or didn't go figure out what @tag to use in a Tweet so that their customer would know there was a problem with some emails. I mean really, "send me a tweet"? Tweets are broadcast messages, not one-on-one communication, aren't they?

Good heaven. If I went to a random web site and on the registration page entered "Kate Gregory" (or "Barack Obama") and it trundled off to LinkedIn and filled in where I live, what I do, my birthday etc I would be majorly creeped out and want nothing to do with that web site. Maybe, just maybe, I would be ok with a button that said "go find this out on the public web" but I doubt it. I think OpenID is a better way to go, and I do appreciate that most Microsoft sites now just let me use my Live ID, but for sites with no business relationship to share what they know about me just creeps me right out. Reorder contact lenses on Facebook? What does Facebook have to do with buying stuff from completely unrelated third parties? Why would it be a good thing to put intermediaries (Facebook, Twitter etc) in all my transactions? The big excitement of Web 1.0 was that it took intermediaries out of the picture and let me interact directly with the producers of the things I wanted to buy. One of the major inconveniences of Web 2.0 is excited under-30's (sorry to generalize, a handful of over-30's are excited like this too) making me sign up for yet another account on yet another Social Networking Silver Bullet that they are going to use to manage their event/project/party/virtual team.

I disagree with the fourth bullet, too. I would much rather just be told where to upload my stuff and be done with it. I also have some empathy for folks who want to use the same way to communicate with everyone on a reasonably large list. Can you imagine the job (probably unpaid in his or her free time) of the conference organizer who says "everybody please put your slides somewhere, anywhere on the web that works for you, and send me the link, and here are links to free places you can put your slides in case you're not on SlideShare." And this organizer probably still has to run the upload-your-slides here site for everyone who doesn't have an account somewhere else. And has to accept and send not just emails about it (with or without links) but also tweets, blog posts, and comments on one speaker's YouTube channel and another speaker's CodePlex project home page, because why should they be obliged to look in more than one place for attempts to communicate? And then this poor organizer needs to know how to download from 10 or 20 different document sharing sites, and register for notifications if they're changed, because the speaker figures uploading new docs and not telling anyone will be fine, since after all the site sends notifications if they're changed.

The last bullet is hilarious. Dude, I get offers for things that I clearly don't want. The spammers can't be bothered to check my gender or what country I live in. You really think they're going to check your MySpace to see you already tried acai berry and whether it worked for you or not?

But under all that rankling and disagreeing is the germ of a really important truth. Just as David Platt likes to say "Know your Customer, for he is not you", I can see that I might not offer enough options to the millennials, and they might not offer enough options to my and my fellow post-boomers. It's an interesting culture clash considering we write software for each other, and one that's worth thinking about. If a customer service department doesn't offer service the way you want it, if the conference speaker wrangler doesn't wrangle speakers the way they want to be wrangled, if my software doesn't let you talk back to me the way you want to talk back to me and if I don't listen when you talk the way you want to, then that's a problem. Hmmm.

Kate

Wednesday, 01 July 2009 16:51:06 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 29 June 2009

I'm a big Ramsay's Kitchen Nightmares fan. I wildly prefer the English series (also true for The Apprentice and several other "reality" shows) because he cares more on those than on the US-edited ones. I'm also a big Steve Clayton fan. So when Steve says "It was like watching an episode of Ramsay’s Kitchen Nightmares (minus swearing). I watched the first episode start to finish…I can’t remember the last time I watched such a long video on the web" that is endorsement enough for me.

I watched it and it was indeed both entertaining and instructive. How could a big company launch a whole new initiative, commission a ton of software for their customers to use, and not have software for the back office to use to manage it all? Why does it take an outside consultant to say to one guy "how much of your time goes to this?" and to another guy "is that enough?" and then present the result to the CEO, who (no surprise) promptly authorizes some hiring? I may never launch a global initiative in Paris, New York, and London and spend a few million in each city before setting to work to make it profitable, but I'm still glad I watched the video. And as the person who sometimes asks the two questions that were never asked in the same room before, it is nice to know the demand for simple questions at the heart of the matter will never fade.

Kate

Monday, 29 June 2009 09:39:57 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 27 June 2009

I sure do love using the Windows 7 taskbar. (I might have blogged a few times about it already.) I have completely internalized the habit of right-clicking on a running app (or a pinned icon for a non-running one) to open a recent document - whether that app is Word, Notepad, PowerPoint, or whatever. I right-click any Messenger conversation to change my status, and I close instances right from the taskbar preview window. I wish Outlook would give me 5 or 6 jumplist items, like New Message and New Appointment, and I really wish Visual Studio would give me some options too. I am looking forward to new releases that will harness this intuitive way of getting users closer to the files they want to open or the things they want to do.

If you want to put taskbar support into your application, and you're not really a video kind of person, perhaps an MSDN Magazine article will do the trick? Yochay and Sasha should be familiar to my readers - you know these guys know their stuff. The article covers both native and managed development, and concludes with this summary:

In this article, we have explored some features of the Windows 7 taskbar, such as application IDs, thumbnail toolbars, overlay icons, progress bars and jump lists. The Windows 7 taskbar provides a clean, sleek launch surface that strongly benefits users. Integrating into this surface will be a primary goal for any application developer for Windows 7.
Using the native Win32 APIs or the managed Windows API Code Pack provides you with a differentiating opportunity to light up your applications on Windows 7. Bear in mind that the taskbar is the first thing users see after logging on to Windows, and you'll want your application to be pinned to their taskbar.

I completely agree. Give it a read.

Kate

Saturday, 27 June 2009 08:05:20 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 25 June 2009

The Build a Better App site is all about applications. They've gathered tutorials, videos, and useful libraries for folks who are building client applications. You'll see some old friends of mine on the main page - Code Pack, Tim Huckaby's recent guidance paper, and so on - along with plenty of things I haven't linked to from this blog. But there's more, like profiles of some of the people whose work is on the site (love the fish, Tim) or videos showing the Windows Forms to WPF converter in action, Code Pack demos, and so on. Speaking of videos, Build a Better App has their own channel on YouTube, as well. Jono Wells is twittering on behalf of the site, and blogging too.

If you were at Tech Ed USA, you probably saw the Build a Better App team - they had a colourful presence and fun stickers and clings. There's a slideshow of some of the "better app requests" from attendees and while I doubt anyone will be coding a cloak of invisibility any time soon, there were some pretty cool requests in there.

Take a look around, and if you want to submit some content for the site, let me know and I'll connect you to the right people.

Kate

Thursday, 25 June 2009 07:54:21 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 23 June 2009

WPF uses XAML. Silverlight uses XAML. WPF is mostly for writing client (Windows) apps, but XBAPs run in a browser. Silverlight is for the web, but an offline story is planned. It's easy to get confused. Worse, people often feel there is a "vs" aspect to it - Silverlight vs WPF. Mike Taulty puts it like this:

Of course, it's not a fist fight. Mike goes on to elaborate on the continuum of technologies and the way you can share skills between them. He also points to a post by Karl Shifflet that demonstrates how code can be reused between WPF and Silverlight applications.

A vital reference for anyone who is moving around on this continuum is a whitepaper (with companion code) that highlights the similarities and differences between WPF and Silverlight. It's available on Codeplex now. It's full of detailed summaries like this:

Check it out!

Kate

Tuesday, 23 June 2009 17:43:59 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 21 June 2009

Some simple truths about elevation (as in UAC):

  • A process, once running, cannot elevate itself. You are launched elevated or not.
  • A non elevated process can launch an elevated one. The easiest way is to make a separate exe and embed a manifest, then launch it with ShellExecute.
  • An elevated process, once running, cannot "drop back down" to being elevated. As in the first bullet, you are launched elevated or not.

There are some incredibly complicated ways to launch an elevated process but I don't use them because they are incredibly complicated. But you might have noticed there's a symmetry problem there. Can an elevated process launch a non elevated one? My first answer would be "it doesn't matter, because you shouldn't." My paradigm is that your core app should be non elevated, if at all possible, and if it has one or two admin-ish features, those should be refactored into a separate manifested exe that is launched (from a UI component decorated with the shield), does its stuff and gets out.

However, a case can be made for having some sort of admin app that wants to leverage some other installed application, like Internet Explorer, that could possibly be using a malicious plugin or the like. This admin app would be smart to do its leveraging with a non elevated instance of that application. So how can you do it? Well, according to Aaron Margosis, it's a seven step process in native code. Managed code is left as an exercise for the reader.

If you care, now you know how to do it. And even if you don't care, the symmetry is restored.

Kate

 

Sunday, 21 June 2009 17:30:28 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 19 June 2009

If you already know what NDepend is, all you really need to know is that you can now point CppDepend at some big legacy C++ codebase and start to get your arms around all that code a bit better. If you have vaguely heard about NDepend but weren't really listening because you're a C++ programmer, it's time to change that. You can start by reading an analysis of MFC that uses CppDepend to answer questions like what fraction of member variables have names that start m_ (answer: about half) or what kind of coupling the key classes tend to live with.

Beatiful visualizations and genuine insight. Sure, you're not going to refactor MFC yourself, but imagine pointing all this at your own library!

Kate

Friday, 19 June 2009 14:47:30 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 17 June 2009

An interesting article about the "hockey handshake" tradition. One of the first things I needed to understand when I started watching baseball was the handshake thing. 

At the end of a big hockey game, the teams shake hands with each other, that is each player shakes hands with each and every one of the opponents, and generally not with their own teammates at all. I was used to that and I see that as a "ok we were hitting each other, but no hard feelings."

 (from happymooses)

But at the end of a big baseball game, the winning team shakes hands amongst themselves, that is each player shakes hands with roughly half of their team-mates (the ones on the field shake with the ones who were off the field) while the losing team disappears as fast as they can.

 (from smailtronic)

It's tempting to see this as a fundamental Canada/US dichotomy, but it's more a baseball/hockey thing and I suspect it's because hockey is a contact sport and baseball (at least on paper) is not. Forgiving the person who has bruised you and saying "good game" is probably a lot more important in contact sports. And indeed, it seems that football goes for the "shake the opponents hands" tradition.

I have to say I'm more the hockey handshake than the baseball handshake type, even though I'd rather watch baseball than hockey most of the time. I really like the idea of taking the time to reconnect with the opponent and affirm that you're really all part of a large thing (the league and the sport) and are colleagues in that effort. In the same way, everyone in this business is a colleague, even if we compete from time to time.

Kate

 

Wednesday, 17 June 2009 22:25:19 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 15 June 2009

Version 0.9 of the Windows API Code Pack for the Microsoft .NET Framework was released June 11th. This version works with the RC, adds a number of exciting new Windows 7 features, and also incorporates many of the Vista Bridge features as well. (I posted earlier about the different versions of Vista Bridge and Code Pack.) Not only that, but it features VB samples as well as C# ones! You can also see some videos of the functionality in action.

 

You just won't believe how easy Windows 7 development is from managed code using the Code Pack until you give it a try. Expect to see more releases as the year goes on, and keep talking to the team on Code Gallery.

Kate

Monday, 15 June 2009 21:28:09 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 13 June 2009

Early this spring I delivered several sessions of training for Microsoft. It was for ISVs who wanted to get rolling on Windows 7 as quickly as possible. It's good material that covers a mix of managed and native development to take full advantage of new APIs, new features, and new power in Windows 7. It relies on the Windows API Code Pack and some custom-written wrappers for Windows 7 functionality that isn't in Code Pack at the moment. And now it's available to anyone who wants it.

If you couldn't come to one of the courses I taught, consider this the next-best thing.

Kate

Saturday, 13 June 2009 21:18:13 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 11 June 2009

Seems like a can't-lose offer, doesn't it? Free developer licenses of WPF controls (Calendar, Carousel, Chart, ColorPicker, DatePicker, Expander, Gauge, GridView, MaskedTextBox, NumericUpDown, PanelBar, ProgressBar, Scheduler, Slider, TabControl, TimePicker, TreeView) from Telerik. And don't be scared off by "developer license": they say "The Developer License is perpetual and has no deployment limitations – it allows the use of the controls for an unlimited number of applications spanning various servers and domains. The applications you develop with the Telerik WPF controls can be distributed royalty free." That sounds pretty no-strings and truly free to me.

What are you waiting for? Go get your controls!

Kate

Thursday, 11 June 2009 21:12:18 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 09 June 2009

I finally got around to listening to the last recorded webcast in this spring's Ignite Your Career webcast series from Microsoft Canada. Joey has a handy set of links to all the episodes on the Canadian Developers Blog. This series is very different from most Microsoft webcasts - it's not really about technology. It's about the things you need to learn to advance your career that are not straight technology like picking up a new language or a new development paradigm.

  • Industry Insights and Trends (featuring Joel Semeniuk)
  • Discovering Your Trusted Resources (featuring Richard Campbell)
  • How to Establish and Maintain a Healthy Work/Life Balance
  • How to Become a Great Leader (featuring Barry Gervin)
  • Building, Managing and Strengthening Your Team
  • Women in IT Panel Discussion

All the webcasts have been recorded and are well worth a download and a listen.

Kate

Tuesday, 09 June 2009 21:04:12 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 05 June 2009

Well, obviously some programmers are poor communicators, just as some programmers are good painters or poor singers. But Leon Bambrick (Secret Geek) says "the better you program, the worse you communicate." And he means it. Basically good programmers have a number of habits that work well when talking to (or listening to) a compiler, but hurt you when you're dealing with people. And the comments dig in to the "how can I get better?" part of the problem. Worth a read.

Kate

Friday, 05 June 2009 18:59:25 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 03 June 2009

Further to that video of Brian Noyes and client technologies, Tim Huckaby has written a terrific paper on the topic. His personal history and experience position him perfectly to understand the real technical reasons (as well as the make-your-boss-happy or the go-home-on-time ones) why you should use a "smart client", "rich client", "Windows client" application for certain kinds of applications. He also knows when you shouldn't. Definitely recommended reading and if you want to tell him your thoughts, he's set up a blog post for comments.

Kate

Wednesday, 03 June 2009 18:34:38 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 01 June 2009

We have all worked with star developers. When I come into a client to mentor, occasionally they have one developer who is just a star. I can pretty much spot them in the first half hour these days. Other times they have a developer who would say "I am a star" but who wouldn't get that designation from me. Tim Stall has a nice list of things that make a developer a star. As I went through the list I was thinking "yes! yes!" and finally "hire! hire!" which is also what happens when I meet real stars. (Don't worry, I have never poached a dev from a client and never would, but "would you hire this person" is still an incredibly useful summary of someone's skills.) I especially like "22. Knows when the rules do not apply". It can't be taught, and dear heaven can people get this one wrong. When you meet someone who gets this right, it is such a relief.

The list doesn't tell you how to become that sort of person, but I am quite sure the rest of the Internet has some hints. So will I if I meet you in a mentoring context.

Kate

Monday, 01 June 2009 18:24:44 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 30 May 2009

An illuminating post from Dr. Rick Kirschner on bringing out the best in others. He gives ten specific rules, which act as nice reminders only after you've read the paragraphs that go with each. A lot of this maps well to things I am doing and things I have read elsewhere, but in far longer than a paragraph. Other things, like "useful assumptions" are new and bring me an "aha" that I enjoy.

Read it over and see if you don't learn something.

Kate

Saturday, 30 May 2009 18:06:04 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 28 May 2009

Stephan has blogged some breaking changes to the STL in beta 1 of VS 2010. These are breaking in the sense that your old code, which worked, might not work when you move it to the latest release. I had this with a demo (not real code) that didn't bother #including <iterator> because it was including something else that included it etc. So my old code wouldn't build in Dev10. Simple enough fix to add the #include.

That alone (4 simple problems, and how to fix them) makes the post worth reading. But it's also a fantastic example of the transparency and visibility the team blog provides. Look at this sentence:

In VC10 Beta 1, I added operator->() to CAdapt, allowing v[i]->Something() to compile unchanged. 

Not "we added". Not "it was decided to add". Not "some faceless decider, whose motives and reasoning are not accessible to the mere mortals who just read our decisions, added". Simply "I added". Stephan, STL, a real person whose posts we can recognize by font alone, added an operator. I think as C++ developers we are a very lucky lot, to have this kind of window into how and why the tools change as time goes by.

The conversation continues in the comments, btw. On the C++ team blog, if a post interests you, you should always read the comments too. Folks ask stuff and team members (not always those who posted the original) answer.

Kate

Thursday, 28 May 2009 21:33:33 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 26 May 2009

Oooh, I like this a lot.

That is a little snippet from a query of work items in VS2010 (cropped from a larger pic obviously). You can add a work item and then add other work items that are part of it, break it down into smaller pieces just as though you are in project. This is a huge deal for me! I found this as part of an incredibly long and comprehensive post (with a dozen screenshots) on Brian Harry's blog. This is going to be a must-upgrade for me just for the VSTS stuff - and I love the new editor, and plenty more besides. So far not a single project I've upgraded has had any issues, they've all just worked.

Kate

Tuesday, 26 May 2009 21:22:27 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 24 May 2009

Paul Sheriff provides a link to a panel he was on at Tech Ed about setting up a consulting business. I've watched the video and I agree with so much of what the panelists said. Watching this video will give you a good insight into the common problems we tend to run into, and some practical tips to keep yourself out of quagmires. Recommended.

Sunday, 24 May 2009 16:05:35 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 20 May 2009

I just could not keep from laughing when I read parts of this Register column on C++0x. And that's good, because that's what Verity no doubt had in mind. And it's mostly accurate, though not a good first reference on C++0x. I would recommend the Wikipedia page or the many excellent entries on the Visual C++ team blog (sorry about the order) to learn what it's really all about. But let's say you have actually read and understood what STL has to say about rvalue references - well done! Your reward for that will be to understand the humour in the Register piece :-). And if you haven't understood rvalue references, well all you really need to know is that they let template writers and library writers make their code "smokin' fast" for you.

Kate

Wednesday, 20 May 2009 15:43:46 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 18 May 2009

I have pretty well always sucked in air through my teeth when I see calls to memcpy. So much of the time it's a marker of premature optimization and a developer who is sure "my code is faster than what the stupid compiler emits". Even when that's not what's going on, it's so darn vulnerable to things changing size over the decades. It just scares me. As result, there isn't much (or even any?) of it in my code, so I'm not directly affected to read that memcpy() is joining the ranks of the "you shouldn't use it" functions, along with strcpy etc.

I blogged about strcpy and some cousins being replaced with more secure versions five years ago. (I had not thought it was that long, but it turns out it was.) Now it's memcpy's turn. The Security Development Lifecycle blogs this, and shows you how to deprecate things yourself. It's probably no surprise to be told you should use memcpy_s instead. There's a scary list of security bugs that are apparently due to misuse of memcpy that memcpy_s would have caught, so if you are an memcpy user, change your ways!

Kate

Monday, 18 May 2009 15:33:06 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 14 May 2009

Choosing a UI technology is often very difficult. I've spoken to a great many developers who want to use one particular technology, but then second guess themselves. For example, they may want to build a client app, but have pressure from management to build a web or browser-based app, often with no clear technical reason. Or perhaps they want to update a Windows Forms app, and are wondering if they need to port it to WPF - and wondering how to do that.

In this interview (filmed at Tech Ed last year), Brian Noyes discusses all of this. He has some good rules of thumb and some advice grounded in his real world experience. Definitely a show to watch. On his blog, Brian summarizes some of his points. Worth a read also.

Kate

Thursday, 14 May 2009 13:45:58 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 12 May 2009

Daniel Kornev took a look at Code Pack and went back to the future, recreating some Longhorn WinFS demos from five years ago using Windows 7 technology. What old demos and prototypes can you find and make a modern-day reality?

Kate

Tuesday, 12 May 2009 11:35:41 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 10 May 2009

I haven't put the RC on my laptop yet - too close to Tech Ed for me to mess with important stuff - but I liked this summary from Tim Sneath of what an RC means, and what you should be looking at as a developer. Make sure your application runs properly on Windows 7 to start with (and if it runs on Vista, it will almost certainly run on Windows 7), then look at adding goodies to it that take advantage of what the OS has to offer. He even includes a link to Code Pack. Check it out.

Kate

Sunday, 10 May 2009 20:23:38 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 08 May 2009

Some people have asked me about the purpose of Vista Bridge now that Code Pack (ok, Windows® API Code Pack for Microsoft® .NET Framework) exists. If you want to use a Vista feature (such as the power management API) you won't find them in Code Pack yet. Vista Bridge is not under active development right now, but you can download and use the wrappers to save time and effort whether you are targeting Windows 7 or Vista. If you run into issues using it on Windows 7, please let the team know using the Discussion tab.

The second question I am getting is about versions. Code Pack 0.8 (no longer available for download) was for build 7000. Code Pack 0.85 (the current version) is for the RC of Windows 7. If you have moved to the RC and something isn't working for you, go and get the latest version because there were a few breaking changes.

Will there be a new version for RTM? Let me just quote from the home page:

Please note that this library is currently a work-in-progress and this release is version 0.85 of this library. The final version of this library will be available around the time of the Windows 7 RTM release. Various features in the library could change between now and final release.

That's pretty transparent, I would say.

Update: 0.8 can still be downloaded. Go to the downloads page and there's a link over to the right.

Friday, 08 May 2009 20:05:40 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 06 May 2009

I've made another appearance on DotNetRocks with Carl and Richard. Some links from the show:

And of course, the show itself. I dare you to listen at 1.4 or double speed.

Kate

Wednesday, 06 May 2009 19:57:02 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 04 May 2009

Sometimes little things make a big difference. Say you're reading through some code in Visual Studio and you come across a class or function you don't immediately recognize. It's interfering with your reading of the code, right? So you copy the name into your clipboard buffer, flip out to a browser, probably with Alt-Tab, then click for a new tab, type a URL like www.live.com or www.codeproject.com, wait while the page loads, paste your buffer into the search box, click search ... wow there are a lot of opportunities to be distracted in that process.

The CodeProject has a simple add-in for Visual Studio that lets you do your searches without going anywhere. It does one thing, and does it well.

Give it a try!

Kate

Monday, 04 May 2009 19:48:16 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 02 May 2009

If you're starting to get interested in WPF, why not check out some of the videos over at WindowsClient.net? You can learn how to make a splash screen, use a datagrid, add validation to your application, deploy using ClickOnce, and much much more. Each video is only 10 or 15 minutes, but there are about a hundred of them. You're sure to learn something!

Kate

Saturday, 02 May 2009 19:42:01 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 28 April 2009

Design matters. I don't just mean software design, like what objects you'll have or what the interfaces will be or what database tables you'll use. I don't just mean planning before you code. I also mean visual design. I'll tell anyone who asks that I'm a grey-boxes-on-a-grey-background kind of girl, but that's mostly about my skills, not my aspirations. I can tell good looking from not so good looking, and I do get that being good looking makes a difference, at least for applications. :-)

I read an interesting article called In Defense of Eye Candy and it has some good examples - mostly oriented towards web sites, but not entirely - about making it clear that a button is a button, and about the tone and mood you set with your design decisions. Worth reading.

Kate

Tuesday, 28 April 2009 19:18:41 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 26 April 2009

Gary Bertwhistle tells the story of the "yeah but" guy and encourages all of us to be "yeah and" guys instead. It's good advice. Years ago, I heard about the improv "yes and" rule. I discovered that, in both business and personal life, if you take a sentence with a but, and replace the but with and, the sentence becomes a much more positive and pleasant one. Your decision, your ruling, hasn't changed. The way you present it has. Sometimes instead of "and", I split the sentence at "but" into two sentences. Compare these:

  • (To your child, about some iffy party or event they want to attend) I love you, but I'm not letting you go to that. I love you, and I'm not letting you go to that.
  • I've thought about it a lot, but it's not going to happen. I've thought about it a lot, and it's not going to happen.
  • It's a good idea, but I can't approve it. It's a good idea. I can't approve it.
  • I know you really want to, but you can't. I know you really want to, and you can't.

Is it because people hear "but", know you're saying no, and stop listening? Is it because "but" somehow negates the "good" half of the sentence? I don't know. I do know I have less arguing in my life since I adopted this verbal habit.

Kate

 

Sunday, 26 April 2009 12:15:37 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 24 April 2009

I like Scott Berkun's main blog and read it regularly. But now I'm also reading his new one that specifically covers public speaking. Lots of "how to fix" posts, and links to other tips and information. I was especially interested in the graph of heart rates falling as a lecture continued (in a university setting I believe) along with the recommendation to do something other than talk to folks every 20 minutes or less. Sounds like a good use for a demo!

Kate

Friday, 24 April 2009 11:36:55 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 22 April 2009

I'm a very lucky person. I get great parking spots, I find money on the ground, I bump into people who turn out to be just who I needed to bump into, and so on. I was intrigued to read about a professor who can teach people how to be luckier. He recruited people who self-identified as lucky or unlucky, and then subjected them to tests that were not entirely based on chance (for example, not rolling dice or tossing coins) but that most people wouldn't think of as a game of skill. For example:

I gave both lucky and unlucky people a newspaper, and asked them to look through it and tell me how many photographs were inside. I had secretly placed a large message halfway through the newspaper saying: "Tell the experimenter you have seen this and win £250.” This message took up half of the page and was written in type that was more than two inches high. It was staring everyone straight in the face, but the unlucky people tended to miss it and the lucky people tended to spot it.

He has a list of principles to make yourself luckier. I'd say I do these things, and I agree they are likely why I am lucky. I suggest you give it a try. You may also be interested in his blog and youtube videos, which are mostly about "magic tricks" that are based on psychology but don't feel like it. I especially like "Colour Change." See if watching that changes your mind about anything.

Kate

Wednesday, 22 April 2009 20:43:20 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 20 April 2009

Free or cheap software ... hmm ... not always a good thing, right? Well, what if it's from Microsoft? Plenty of utilities and add-ons are free, since they're only useful to people who already bought the main product, whether that's Office, Windows, or Visual Studio. Others are free as a deliberate decision to help introduce people to more powerful (and expensive) tools - think about all those Express Editions, for example.

Here's a comprehensive list, updated regularly, of goodies from Microsoft. I guarantee you will learn about a product you can use that you did not know existed. And this isn't some "bathroom wall" of links and torrents from a random person - this is the Windows Team Blog. I did stumble, a while back, across a laundry list from Blake Handler (a Microsoft employee) of free software from Microsoft that might have one or two things that aren't on the team blog.

Try some, and spread the word.

Kate

Monday, 20 April 2009 20:17:30 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 18 April 2009

I love reading Rands. He has such practical day to day advice for managing projects and people, and then he has some truly inspirational topics. You think you have a tough project? You think you have to invent half the technology you're using on the fly? Working with new unproven tools? Try building the Brooklyn Bridge. I guess it's the engineer in me (chemical, not civil) but I  see bridge building as one of our most persistently amazing technologies. It also makes an amazing metaphor. I hope something I design, build, or project-manage lasts 120+ years, but I rather doubt any of it will.

And while I'm quoting Rands, you just have to read about The Pond. I have had a lot of variation, over the decades, in the amount of time I spend with my staff and the amount of time they spend with each other. I wish his pessimism about the fate of those who work remote all the time was misplaced - but unfortunately, I think he's right. If you work remote all the time, you need to think about how to be in the pond.

Both highly recommended.

Kate

Saturday, 18 April 2009 19:25:25 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 16 April 2009

Well, a lot. Brian Harry has provided a feature list, and a secret decoder ring to help you decide which blogs to read to learn more over the coming months. My personal favourite? "Work item hierarchy & linking". If that means what it sounds like it means I will have a much simpler life when planning a project the way I often do - starting with big things and later breaking them down into small ones. I'll be watching for more details on that.

Kate

Thursday, 16 April 2009 19:17:32 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 14 April 2009

Do you have a Windows application? Are you curious if it will run well on Windows 7? Would you like to try something a little more technical than "install on Windows 7 and see if it runs?" Then you need the Application Compatibility Toolkit. The latest version, 5.5, is now available. There is documentation for it on TechNet to help you get started.

Kate

 

Tuesday, 14 April 2009 18:28:45 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 12 April 2009

People believe a lot of strange things in this world. They worry specifically that SharePoint won't perform as well as they need, and that they can write some sort of ASP.NET app with a SQL backend that will somehow outperform it. I really liked this post from Eric Shupps that lists a few of them. Keep in mind these are all myths - that is "not true".

  • SharePoint Lists Have an Upper Limit of Two Thousand Items
  • SharePoint Is Just Too Slow for Common Tasks
  • SharePoint Is Not Suitable For Large Public-Facing Web Sites
  • SharePoint Isn’t A Scalable Enterprise Document Management System
  • SharePoint Pages Take Too Long to Render Over the WAN

Eric goes into quite a bit of detail debunking each of these 5 myths, so if you have a tendency to believe these things, here's a chance to get straightened out on that.

Kate

Sunday, 12 April 2009 18:23:57 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 10 April 2009

I think one of the things that really sets good presenters apart from poor ones is what they do when something goes wrong. A poor presenter:

  • needs all their cycles to try to figure out what went wrong, and has none left for looking after their audience
  • is focused on making the demo work and sticking to the original plan
  • is rattled by the experience so that whether the demo works in the end or is abandoned, the rest of the talk is lower quality

A good presenter:

  • has rehearsed the demos many times, so that most "boom!" moments have been seen before and can be fixed quickly
  • doesn't need as much energy to look after the audience, so is more likely to be able to do it
  • is focused on making the talk work
  • has backup (screenshot of the result, an exe that was built earlier) so that something can be rescued
  • can get through the failure quickly and get back to the flow so that the talk as a whole can go well

I linked a while ago to a picture of Steve Teixeira dealing with a blue screen. Now Brad Abrams has highlighted Bill Buxton (who I quoted a few posts ago) dealing (at Mix) with hardware that refused to co-operate. I aspire to do as good a job dealing with demo failure. Brad includes some other "demo failures at Mix" in his post, too. 

A tip that has served me well over the years: have a stock of optimistic "I am not an idiot" sentences to use while you're either giving up on the demo or doing what you need to do to make it work. "Hey, if it was perfect, we'd be shipping it" is good. So is "told you it would be a short demo". Humour keeps the audience with you, and stock lines don't take up much of your brain, so you can be furiously thinking with most of your brain about how to solve your problem (either how to fix the demo, or what to do with the rest of your talk now that you have ten more minutes to fill.)

Kate

Friday, 10 April 2009 09:17:49 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 08 April 2009

Steve Clayton highlights a neat video that you should probably watch. It's a little corny, but you can't make the world a better place if you're always looking over your shoulder wondering if you're being corny. It's less than two minutes - you can spare that, right?

Kate

Wednesday, 08 April 2009 08:58:37 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 06 April 2009

If you do any SharePoint work, you need SharePoint Designer. If you're a developer, you probably got it through an MSDN subscription. But is there someone in your company who doesn't use Visual Studio and other developer tools, just some designer-oriented ones? Now that person can have a copy of SharePoint Designer - it's become a free product. Why? There's a video interview that explains the team's thinking on SharePoint as a platform, and making it simpler to build around it.

Download it here, and enjoy!

Kate

Monday, 06 April 2009 08:53:08 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 04 April 2009

I spend a lot of time at a keyboard and screen. Most of the time, I'm working. I might be writing code or a document, reading something to better myself, reading something because it's my job to review it, watching a video or screencast, triaging bugs in TFS, or of course processing email. Some of these tasks involve a lot of typing, others mainly mousing, and some involve sitting almost completely still with the occasional page-down or mouse click. Other times, I'm having conversations with family or friends, reading something for fun, or playing a game. These tasks also have the same spectrum of frantic-typing and clicking through to mostly passive consumption with the occasional click or keypress. And at still third times I'm doing what we might call family administrative tasks - seeing when the grocery store in a nearby town closes, checking the school web site for holiday dates, ordering something, renewing something, banking or billpaying - or business administrative tasks - including invoicing my clients. You can't tell, by looking at the back of my screen or listening to my typing and mousing, what I'm doing. You can't tell by where I'm sitting either ... I might be using Remote Desktop to access the computer where our book-keeping software is installed, or a server that needs to be configured, or a client machine so that I can reproduce a production problem.

So what? Well it isn't how work has usually been. Hundreds of years ago, if someone was working you could tell by looking at them. They had a hammer in their hand, or a paintbrush, or some other tool. Even a few decades ago, if someone worked at a desk by writing on paper it was easy to see what desk they were at, what papers were strewn around them. Reading the paper looked very different from checking the invoices. And of course, leisure never involved the same tools or locations as work. Now, not so much. Bill Buxton has an interesting article on just this topic. He's at Microsoft Research, and it pleases me to think that folks there are thinking about this. I look forward to a future time when people can get a better idea of what I'm doing and how interruptable I am, not just "you're always on your computer."

Kate

 

 

Saturday, 04 April 2009 08:45:51 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 02 April 2009

Jeff Atwood has a post on "five dollar words" where he discusses (and briefly defines) these three words.  They're helpful, all the more so if you know the concepts but never knew they had a name. Then in the comments people start to talk about Normalization, Instantiation, Canonicalization, Covariance, Deprecation, Atomic, ACID, SOLID and so much more. Many provide links (how did we ever live before Wikipedia?) and if not, well, you have access to a search engine I'm sure. Having these words lets you have conversations you couldn't otherwise have. Reminding yourself of the definitions every once in a while can't hurt.

Most of these are pretty straightforward to remember if you have some Latin and Greek - enough to know the scientific prefixes. For example idem means "same" and "potent" refers to power - the function always has the same power. Mutable means change-able (think about the word mutant) and im- negates that, so the value can't be changed. (Swapping in im- for idem- in the first word results in another perfect valid word whose meaning can be worked out from its parts.) I learned a lot of Latin and Greek prefixes in high school and university, and I'm really glad I did. I can't write a sentence in either language, but I can work out what a lot of "intellectual" words mean just by going through their parts.

Kate

Thursday, 02 April 2009 16:30:01 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 31 March 2009

I've heard people use the name "elevator pitch" for a concise answer to a question like "What do you do?" or "What is this company that you run?". I don't think that's a good use of the term. You pitch a specific project or idea (which might be "hire me" but might not.)  Answering a small-talk question isn't making a pitch. It does, however, have a lot in common with the elevator pitch - most importantly that you don't have very long at all. Hi, how are you, that's a cool shirt, where do you work, what do you do there - these aren't essay questions.

So you want a concise answer, so that at least you don't talk people's ear off and bore them. And it would be neat if your answer either led the conversation in a direction you'll enjoy, or brought you business, or both. Steve Pavlina has given this quite a bit of thought. It's a long blog post that leads down to 2 or 3 10-12 word sentences, but that's the thing with short statements - they take forever to write.

I've been working on this for a while with gregcons - what's our 10 word answer to what do we do? Generally I say "We solve people's problems. Sometimes we write them software, other times we give them advice on software deveopment or mentor them." If the person looks even vaguely interested I might elaborate, but often that's all the answer they needed. The process of finding this short answer for us, and the process ahead of me to continue to shorten it, does give useful insight into what parts of my job and what parts of this business matter the most to me. I highly encourage everyone whose answer is "all kinds of stuff!" to take the time to find the common thread rather than just listing off a whole pile of -ing verbs until the person who asked slips into a coma. For more on the "what is my real underlying business" (as opposed to the skills you happen to ply in support of that business) you might also want to read a year-ending post from Mike Gunderloy that's just as valid at this time of year.

Kate

Tuesday, 31 March 2009 16:16:37 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 29 March 2009

What do you do if someone blogs about you? It's kind of rude to ignore such a nice thing. I suppose it might be rude (braggy) to draw attention to it, also. In this particular case, I'm very pleased by the specific things they're saying about me, and the occasion is a good one, too, so I'm going to go ahead and brag a little: Joey (I jumped up and down with delight when Microsoft hired him) says I was the first non-Microsoftie to welcome him to the Empire. I can believe that, but only because we were both at a reception the day before the PDC so I got to him before the rest of the community. Julie (a long time friend, and inspiration to me for her ability to remember so many people and what they care about) declares that I am wise, something I truly aspire to be.

Both of them are celebrating Ada Lovelace, who wasn't the first "woman in technology" but was perhaps the first programmer of any gender. It's nice to know our history and to feel a connection that stretches back a little further than 1970. 166 years ago, she wrote out a method for calculating Bernoulli numbers with (the nonexistent) Analytical Engine. Pausing to remember that, and to call out good behaviour when we see it, is a good thing.

Kate

Sunday, 29 March 2009 18:47:01 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 27 March 2009

The WPF team has a home on CodePlex where they release the WPF Toolkit and other goodies. To quote their project description,

The WPF Toolkit is a collection of WPF features and components that are being made available outside of the normal .NET Framework ship cycle. The WPF Toolkit not only allows users to get new functionality more quickly, but allows an efficient means for giving feedback to the product team. Many of the features will be released with full source code as well.

One of the nice things they have added is a set of nine lovely WPF themes you can use in your applications today. Use the link to download them and to see the instructions for theming your app.

The appearance changes dramatically - with no coding on your part once you've hooked in the theme!

Kate

Friday, 27 March 2009 18:27:43 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 25 March 2009

Windows 7 has this neat feature called Libraries. It aggregates together several real folders - perhaps two or three folders on your machine, or perhaps one on your machine and one elsewhere on the network. Within this "virtual folder" you can search, sort, and otherwise explore a large collection of files without having to worry about which real folder houses them. The usual examples given are your photos or your music, but I could also see it being handy for those "project folders" that every developer keeps on the working box, and the shared project folder that some (but not all) of the documents have been copied to. If you set up a Library that represents all those folders, you can read through the documentation without getting caught up in whether a particular file is on the project share, developer A's machine, or developer B's machine.

This blog post by Vinod Unny (a fellow RD) presents another cool use for Libraries - as a temporary creation to help you copy and paste from many different folders (perhaps all those individual developer ones) into another (perhaps that project share.) What a nice explanation!

Kate

Wednesday, 25 March 2009 18:17:10 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 23 March 2009

I've written before about Agile and how we do it (not like other folks) and how I agree it can play well with CMMI. Even with that background, I was a little taken aback to read the title of this Scott Ambler blog post. But he makes an interesting case. He says at level 1 you're doing core Agile things. Maybe you're using Scrum, XP, Agile Modeling, or Agile Data. You're on the way. At level 2, you're disciplined Agile. I might phrase this as saying there's process in your agility and agility in your process. He lists some processes that build on Scrum and XP to provide a little more structure while staying lean. Then at level 3 you've achieved agility at scale. That really is a tough one - a small team with a small customer base has a much easier time being agile today. Perhaps it's a mythical level, or perhaps some folks are operating there.

I'm going to keep reading what Scott has to say on this. It's increasing my own comfort level with what to call our own approach to software development and problem solving.

Kate

Monday, 23 March 2009 18:12:21 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 21 March 2009

I love this story. Seems a fellow was playing a low-stakes slot machine. This thing takes pennies, so if you win the "big jackpot" it doesn't rain pennies on you, it displays a message that says "you have won $xyz, please call an attendant over to this machine so you can collect" or words to that effect. Imagine his delight when it told him he had won 42.9 million dollars! Sadly, when the attendant arrived there was no 43 million dollar payout. The most that machine can pay out is $9,025.

So what happened? Here's the quote from the story:

In a confusing nutshell: Computers speak in a language of bits. Information is represented with zeros and ones. Very often, these numbers – both positive and negative – are stored in 32-bit sequences.

Still with me?

In this system, the number —1 can also be represented as 4294967295. Count that many pennies as dollars and you see 42,949,672.95.

The reporter wants you to know this is difficult. I want you to know it's hilarious. But then again, I didn't write a 43 million dollar signed/unsigned bug.

Kate

Saturday, 21 March 2009 17:59:39 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 19 March 2009

Toronto Code Camp is happening again this year, and this year I will be there speaking. My session title wasn't deliberately chosen to show up first in the list of sessions, I promise. The talk is:

Boost Developer Productivity: Write Extensions to Visual Studio  
Visual Studio is a complex tool used by a wide variety of developers. Customizing your tool makes you more productive, and Visual Studio is highly extensible. In this demo-heavy session you will see how to write your own Code Snippets, how to write and use macros, how to write a simple add-in, and how to create your own templates for projects and project items, complete with wizards. Streamline development to fit your processes and habits by writing a little code to ensure that Visual Studio works the way you do.

I hope you already know the rules of Code Camp: all code, no fluff, and always free. Come on out and learn!

Kate

Thursday, 19 March 2009 17:53:46 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 17 March 2009

Women in Leadership & Technology, a subgroup of IAMCP Canada held their first Canadian “Meet & Mingle” on March 9th. It was a networking opportunity for women in technology and leadership both inside and outside Microsoft. This was a nice opportunity to meet some new people for me and to talk about the issue that seems never to go away ... why do so few other women want to be in this business? Maxine Chung from itbusiness.ca was there too and has posted a slideshow (I am not in any of the pictures though) that includes a summary, plus a longer article. Check it out!

Kate

Tuesday, 17 March 2009 17:45:20 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 15 March 2009

Whenever a new OS or major application is released, there's a gap between when people want to start interacting with the functionality and when the .NET Framework supports that interaction. That's only natural - the framework release cycles aren't synced to the OS release cycles. This happened before with Vista, and is happening now with Windows 7. For Vista developers, the Vista Bridge provides easy access from managed code to the fun stuff like Restart and Recovery, Task Dialog, Power Awareness and so on. Stay tuned for announcements about a similar library for Windows 7. In the meantime some slightly more granular wrappers are available for you to use now, covering Taskbar, Libraries, Sensors, and Multi-Touch. Alon's blog has the details and the links.

Kate

Sunday, 15 March 2009 17:20:56 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 13 March 2009

If you see the things that go around the internet that everyone's seen, then you've probably seen the list of things you should have seen by now, but maybe not? A neat way to see how many of the memes you've picked up. Me, I'm kind of an old fogey at this stuff, but there are a dozen or so here that I have indeed seen (thus saving me, I hope, from being a loser or old or something). Have you?

Kate

Friday, 13 March 2009 17:06:51 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 11 March 2009

Most of the developers I know think of SQL Server Express as something you use while you're developing, if that's simpler than getting a full SQL onto your developer machine. They naturally assume that when you want to go into production, or if you want to use some of the higher-end features, you'll need to buy a license of SQL rather than deploying to SQL Express. Well, you may want to, but you may not have to. For example, you can use Reporting Services with SQL Express. That surprised me. The details on what sets Express apart are at http://www.microsoft.com/sqlserver/2008/en/us/editions-compare.aspx and http://www.microsoft.com/sqlserver/2008/en/us/editions.aspx. Worth a read for sure and SQL Express is a valid choice in many data situations where you need a free product, such as distributing with your own applications or for low volume, low budget projects.

Kate

Wednesday, 11 March 2009 17:03:13 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 09 March 2009

Here is an interesting video featuring Kevlin Henney (a confident speaker I've seen at SD West before) discussing some philosphy around good and bad OO design. I don't agree with everything he's saying, but I sure am glad he's saying it. The examples are in Java but that will hardly kill you. Worth a watch.

Kate

Monday, 09 March 2009 16:50:05 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 07 March 2009

A lot of applications like to know what version of the operating system they are running on. Sometimes (especially older applications) it's so they can flat-out refuse to run if you're still on, say Windows 98. This is now frowned on, by the way, and if you want a Windows 7 logo you must not refuse to run based on a version check. Other times (and this is bad too) it's as part of some arcane roll-your-own strategy. For example someone I know planned to work out the default hard code paths for user documents (C:\Documents and Settings\ ... vs C:\users\... ) based on OS versions. This is insane! There's already a function you can call that will get you that path, and it works even if the user has changed it from the default.

But there are still legitimate reasons for version checking. If you're using Vista or Windows7 light-up features like the Task Dialog, Restart and Recovery, or Taskbar Jump Lists, you'd better make sure you're on an OS that supports those features. It's pretty easy from managed code: just call System.Environment.OSVersion.Version.Major and System.Environment.OSVersion.Version.Minor. From native code, GetVersionEx() does the same job. Then you have to do some comparing. That's where things can get weird.

For example, a huge incompatibility bucket for Vista was applications whose code checked that the version was exactly 5.1. If not, it would pop up a message box saying it only ran on XP SP2 or better. I've seen these apps in the wild and I just can't keep from laughing. The error message itself says "or better", and that was presumably the intent, but the code is checking for equality. The magic of >= fixes this "incompatibility" bug in the code, and often these applications don't need any other fixes to make them work on newer OS versions. (That's why the logo people frown on refusing to run. How can you know you won't work on a later OS that doesn't exist yet?)

Even if you grasp the magic of >=, comparing major and minor versions can bite you. Larry Osterman shows us this code:

// Example in C#.
 
internal bool SupportsTaskProgress() {
    if (System.Environment.OSVersion.Version.Major >= 6) {
        if (System.Environment.OSVersion.Version.Minor >= 1) {
            return true;
        }
    }
    return false;
}

He rightly points out it will return false if the version is 7.0, or 8.0, or any other .0 that's larger than 6. (Yes, Windows 7 returns 6.1 for the version #, that's a long story and well covered elsewhere.)

Version checking is hard. If you can, use a library that does it for you. Vista Bridge, for example, not only wraps up cool new OS features for easy access from managed code, it also does some checking to see if the feature is there for you or not. Don't reinvent wheels. Also, check for the feature rather than the OS if you can. Larry discusses this in his post for Taskbar features. Any feature you plan to use, you should know how to check for. I hope to post some more links and examples on this soon.

Kate

 

Saturday, 07 March 2009 10:45:31 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 04 March 2009

Here's an interesting post from Rick Segal. Even if you don't want VC money, it's an intruiging exercise to see how you look from that point of view. Let's see how gregcons does:

  1. Our website, www.gregcons.com. "Does the web site's home page tell you what the company does?" Yes: "We program in Visual Basic.NET, C#, Visual C++ (Managed and Classic,) Java, ASP, ASP.NET, XML, XSLT, XSL-FO, HTML, Javascript, Perl, and CGI. We mentor, provide architectural vision and inspiration, write, edit, train, develop courses, design web sites and act as general internet consultants. "
  2. Google "Gregory Consulting" and "gregcons". Our site, some sites of other Gregory Consultings in the world (note to self - if I want VC funding, create a sub with a weirdo name with extra vowels or not enough vowels), and some folks linking to blog postings of mine. Not a soul who's actually discussing us as a company. Fine by me but probably an issue if I wanted investors.
  3. Google "Kate Gregory" and "Brian Gregory". You can see who the public face of this company is - not one of the Brian hits is the right Brian, and all the Kate hits are me speaking, writing, and general experting. Interestingly Google (which I never use for my own searches but am using in the spirit of Rick's blog) doesn't find the "other" Kate Gregorys that Live tends to return. I'm not actually the only one on the planet.
  4. The mission statement. Um. Well, we have a tag line on the website "Leading your developers forward" so I'll give that a try. Interesting way to discover who is mirroring your old content chrome and all, but you don't learn much about us from it.

I think we pass the test of being discoverable on the internet, but it's clear people don't talk about us as a company much (they do talk about me from time to time). Fun exercise. Try it yourself!

Kate

Wednesday, 04 March 2009 09:16:49 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 03 March 2009

I've been accumulating some links that might be relevant to folks looking for work. I got a lot of traffic to a post last year about trick questions in a job interview, so I thought I'd share these as well.

These posts are very different, but they all have useful information for you.

Kate

Tuesday, 03 March 2009 09:06:48 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 02 March 2009

Programmers make mistakes, we all know that. But some are worse than others. Say you hardcode a file name, and you make a typo in the name. When you do your own testing before passing it off to others, you'll discover the typo because it keeps the application from working. But if you fix the typo, there's a good chance no-one will notice the other mistake - hardcoding the file name - for a very long time. In fact, if the file never moves, under some circumstances you could claim it isn't even a mistake to hardcode the name. But if the file does move, hardcoding the name is a much worse mistake because it causes a bug that a customer discovers - and that is always bad. Writing your data access code so it brings back the wrong records (say, forgetting to filter by date) will show up the minute you hit F5, but writing your data access code so it's vulnerable to SQL injection is far worse - you'll think the application works, but when you put it into production you'll have opened a large hole into your database for bad guys.

The SANS Institute has created a list of what they consider to be the 25 most important programming errors of all time. There's a lot not to like in this list, to be honest. First, it's not so much a list of errors (John typed this line of code in that application) as it is kinds or categories of errors. Second, a lot of them look like the same error over and over (trusting stuff that people give you as input, for example). Third, the post spends pages and pages on credits, acknowledgements, explaining why they are important, predicting how the world will be made better by this list existing, and so on before finally getting to the errors. Fourth, the names are flat-out weird in a lot of cases. But with those disclaimers in mind, I still think the post is worth reading and the errors are worth thinking about. Here are the 25:

  • Improper Input Validation
  • Improper Encoding or Escaping of Output
  • Failure to Preserve SQL Query Structure (aka 'SQL Injection')
  • Failure to Preserve Web Page Structure (aka 'Cross-site Scripting')
  • Failure to Preserve OS Command Structure (aka 'OS Command Injection')
  • Cleartext Transmission of Sensitive Information
  • Cross-Site Request Forgery (CSRF)
  • Race Condition
  • Error Message Information Leak
  • Failure to Constrain Operations within the Bounds of a Memory Buffer
  • External Control of Critical State Data
  • External Control of File Name or Path
  • Untrusted Search Path
  • Failure to Control Generation of Code (aka 'Code Injection')
  • Download of Code Without Integrity Check
  • Improper Resource Shutdown or Release
  • Improper Initialization
  • Incorrect Calculation
  • Improper Access Control (Authorization)
  • Use of a Broken or Risky Cryptographic Algorithm
  • Hard-Coded Password
  • Insecure Permission Assignment for Critical Resource
  • Use of Insufficiently Random Values
  • Execution with Unnecessary Privileges
  • Client-Side Enforcement of Server-Side Security

The full details are in the linked post and it won't take more than a few minutes to read the description of each error. Pat yourself on the back, or go do a quick code review so you can say you don't do any of these.

Kate

Monday, 02 March 2009 08:48:48 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 01 March 2009

Being a Microsoft Regional Director has a host of benefits, most of which are intangible and hard to explain to someone who's not experiencing them. The number one benefit, for example, is the other RDs. They're such a smart and fun group, and the connections have helped me personally and professionally. The only drawback to being an RD is that so few people know what it means. They think perhaps we work for Microsoft (nope) or that it's like being an MVP (nope, though many of us are MVPs as well) or that we get paid to do it (nope again.)

Recently Joel Oleson had a crack at it. The phrase "unbiased evangelist" is a little tricky, isn't it? And we're not exactly evangelists either ... Microsoft already has people for that. I would say that we've chosen Microsoft technologies (not always exclusively) for our own reasons (that is, not because someone compensated us directly for choosing them) and we're happy to share our reasoning with others. It's that sharing that gets us the nod to become RDs.

Kate

Sunday, 01 March 2009 08:31:33 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 28 February 2009

I've been doing some training lately and of course conference season is on the way, so I'm starting to think once again about the mechanics of talking to audiences. One relatively recent change in audience is the popularity of Twitter. It is starting to create a far more public backchannel, one that even the presenter (or the presenter's colleagues) can read and respond to during the talk.

Private, even secret, backchannels are nothing new. I've been on many a conference call where 5 or 6 of us are on Messenger discussing the call itself (and we probably wouldn't want the speaker to read what we were typing.) I've also been in physical meetings where a small group of people are privately discussing the meeting itself, whether co-ordinating who will say what when, or just aimless snarking and wondering when we can leave.

But a public backchannel, maybe even one you have an obligation to monitor, is a very different beast. Some folks, like Olivia Mitchell on Tamar Weinberg's blog, think it's all-good all-round: better for the audience, the presenter, the world as a whole. Presenters just have to learn new reflexes: when your audience suddenly starts typing and looking at their screens, it doesn't mean you've lost them, just that you're so interesting and the information is so important that they feel the need to share with the world immediately. Ira Basen is not so sure, especially if the tweets are negative and going out in public before the talk has even finished and without asking the presenter any questions.

Different conferences will probably lead to different conventions and habits. I can imagine a lot of tweeting from a keynote where things are being announced or demo'd for the first time. But if I'm doing an hour on C++ 0x features, I can't really see why "OMG Lambdas r AWESOME" can't wait until the talk is over. "Now showing capturing the whole stack by reference" doesn't seem like a likely tweet. I can tell you that I'm not going to have a window open on my screen where I'm following "my channel" and that if you want to ask me a question, it's going to involve speaking aloud, at least for now. That said, it's a good idea to think about the impact of wireless internet in every room and instantly-constructed channels on speaking, on conferences, and on the way we all share information. I think there will be more room-switching early in talks if people learn that someone else is really doing a great job, and attendees may demand more agility in scheduling repeats and extra sessions on topics that were well received. As always, we live in interesting times.

Kate

Saturday, 28 February 2009 11:01:19 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 27 February 2009

Ronan Geraghty has an interesting blog, full of topics that interest me, with lots of BizSpark, WPF, Windows 7 and client development content. In a recent entry he explains that getting the Windows Logo on your software product is going to be a lot easier for Windows 7. Instead of submitting your application to a third party for testing, you can test it yourself and get certification without paying someone else.

Why would you want to certify your product and get the Windows Logo? I can think of at least three reasons:

  • The certification process may raise your quality bar by imposing some constraints on you that you were planning to skip.
    (Have a clean, reversible installation; Install to the correct folders by default; Support Multi-user sessions; etc.) That may feel like a drawback to some, but for those who wanted to put these features in, the logo program may be a good reason to have them.
  • There may be some customers somewhere who are more likely to buy something with the logo on it. There certainly are none who are LESS likely to buy because you took the time to get certified.
  • Having a logo'd product gets you a competency in the Partner Program and makes you a Certified Partner, which comes with a suite of benefits you're sure to want.

So making it easier to get the logo is nothing but good news. Follow Ronan's links for more details.

Kate

Friday, 27 February 2009 14:35:14 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 26 February 2009

Michael Feathers put together a list of ten papers that "every programmer should read". I've seen such lists before, and this one is pretty good. I've read Parnas and Cunningham and draw on that background pretty regularly. I'd heard of some of the rest. But the real fun begins in the comments. People suggest additions (Fred Brooks - definitely! Joel Spolsky - why not?) and then other people start saying that reading, especially reading stuff from 20 years ago, just makes you an academic and not useful. Oh my.

I'm useful. I've written a lot of code that's made people's jobs and working lives a lot easier. I've written systems that have transformed companies and enabled them to survive business model changes they thought would sink them. I've rescued projects and made developers better than they were time and time again. And I'm academic. I have a Ph. D. for heavens sake, I teach at a university (no, not full time, one course a year), and when someone uses the word "academic" or "intellectual" as an insult, and I object, they tell me "you're not that kind of academic, not the kind I meant." Well honey, to paraphrase Gloria Steinem, this is what academic looks like. Reading 20 year old white papers and thinking about concepts and theory is one of the things that makes me useful. Folks who just want to get started and type some code and not bother with that high falutin design stuff tend to write bad code.

Grrr. Read the list, maybe read a few of the papers (as the commenters mention, Michael's links are to a site that will charge you to read them, but if you have the author and the title your favourite search engine will undoubtedly help you find free copies lying around on the web) and think a little about why it would be an insult to say that someone cares about history and theory.

Kate

Thursday, 26 February 2009 08:20:42 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 25 February 2009

Steve McConnell has a training company, Construx, that is not like other training companies, mostly because Steve is not like other developers. As it says on his web site:

Steve is the author of Software Estimation: Demystifying the Black Art (2006), Code Complete (1993, 2004), Rapid Development (1996), Software Project Survival Guide (1998), and Professional Software Development (2004). His first two books won Software Development magazine's Jolt Excellence award for best programming books of their years.

Steve has worked in the desktop software industry since 1984 and has expertise in rapid development methodologies, project estimation, software construction practices, and third-party contract management. In 1998, readers of Software Development magazine named Steve one of the three most influential people in the software industry along with Bill Gates and Linus Torvalds. Steve was Editor in Chief of IEEE Software magazine from 1998-2002.

There are very few authors who have multiple books on my bookshelf that I paid for. Steve is in rare company there. And the courses they offer? We're not talking "Introduction to Silverlight" or "A First Look At Sharepoint" here. This stuff is more university-like: concepts, theory, the big picture. Some upcoming titles:

  • Object-Oriented Requirements Analysis and Design Using the UML
  • Professional Tester Boot Camp
  • Enterprise Agile: Planning, Managing and Scaling Agile Projects Using Scrum
  • Requirements Boot Camp
  • Software Estimation in Depth

These are the kinds of courses that change the kind of developer you are, not just teach some new syntax or tool. And they cost thousands of dollars. But Steve has decided that fully one quarter of the seats in each class will now be available for free to people who have been laid off. If you can get to Bellevue WA, you should arrange to take one of these courses. No question about it.

Kate

Wednesday, 25 February 2009 08:02:48 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 24 February 2009

Here's a list of ways to be a superstar at work, from GL Hoffman. It applies equally to a 19 year old close to me who's starting her first full time job, or to developers who want to work for me. The examples in the article are aimed at a 20-something working in an office full of older people, in a vaguely technical capacity, and is kinda Web 2.0 ish, but the principles are far broader than that. My two favourites: See Work and On Time. But read them all.

Kate

Tuesday, 24 February 2009 08:00:58 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 23 February 2009

No, I'm not speaking metaphorically. Apparently in this day and age, on this continent, people are being held against their will, beaten and abused, and forced to work for little or no pay. There's no evidence of an actual slave trade, with people sold from one owner to another, or of babies being born into slavery, but nonetheless there are North American slaves today. Perhaps it's no surprise that the task they are set to, harvesting crops in the warmest parts of the USA, is what most of us have in our heads when we think about long-ago slavery on this continent.

This well researched article in Gourmet, and the articles to which it links, lay it all out. There is no dispute that at least some agricultural workers were in fact enslaved. The only issue is whether it's really common or an isolated incident. Here's a quote:

But when asked if it is reasonable to assume that an American who has eaten a fresh tomato from a grocery store or food-service company during the winter has eaten fruit picked by the hand of a slave, Molloy said, “It is not an assumption. It is a fact.”

Hm. Another reason to eat locally and seasonally. I do realize that our insistence on the lowest price for everything is one of the pressures that make abuses like this seem a reasonable course to some people. The article concludes with this suggestion if you, like me, like to buy tomatoes in the winter:

... take advantage of the fact that fruits and vegetables must be labeled with their country of origin. Most of the fresh tomatoes in supermarkets during winter months come from Florida, where labor conditions are dismal for field workers, or from Mexico, where they are worse, according to a CIW spokesman. One option during these months is to buy locally produced hydroponic greenhouse tomatoes, including cluster tomatoes still attached to the vine. Greenhouse tomatoes are also imported from Mexico, however, so check signage or consult the little stickers often seen on the fruits themselves to determine their source.

Kate

Monday, 23 February 2009 07:54:57 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 22 February 2009

If you've been to a big conference in the past few years you'll have seen the name David Platt on the speaker list, and usually scheduled into the big room. Dave's superbly entertaining speaking style delivers valuable information about user interface design and genuinely meeting the needs of the folks who use the systems you're developing.

Here's an interview with Dave recorded at Tech Ed, and on the Tech Ed Europe sessions page, if you click through to page 2, you can see the one hour version of his talk.

Since Dave mentions used car salesmen in his interview, I'll share a little joke with you. What's the difference between a computer salesman and a used car salesman? The used car salesman knows when he's lying to you.

Kate

Sunday, 22 February 2009 07:46:57 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 21 February 2009

One of the major reasons to go to Tech Ed is to meet other people in the industry. Everyone says you get the best jobs, the best advice, the best learning opportunities if you happen to know a lot of people, and the way to know a lot of people is to meet people and talk to them. But haven't we all had trouble finding someone to speak to at conferences? I always seem to end up at a table of sysadmins who know more about PowerShell than would seem humanly possible, or some hardcore DBA types who spend the lunch swapping tales of index problems from hell. If they're having a really technical conversation that's over my head, that's a meeting opportunity come and gone.

Over the years Tech Ed has tried lots of ways to help people find like minded people to talk to. Once you're on site, there are Cabanas or Track Lounges or whatever they call the informal place from year to year. These are great. But what about in the months leading up to Tech Ed? This year, there's something called Tech Ed Connect. You enter some details about yourself and are shown a map where people with similar interests appear closer to you. Mouse over someone and you see their user name (looks like many people are using their name, or initials) possibly a picture, and some details.

(I had to put IE8 in compatibility mode to see the map, by the way.)

You also get a "quick connect" card that can help people find you using this site. Here's mine:

Join Me at Tech·Ed Connect 2009!

Give it a whirl!

Kate

Saturday, 21 February 2009 10:11:12 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 20 February 2009

Some time ago, I told you about an issue with the Tech Ed DVDs and Silverlight versions. I also gave you a workaround for how to play the sessions after looking up the session numbers in a PDF document that functioned as an index. Now Laurent Duveau, a Canadian MVP, has gone one better ... he's written a utility that will fix up the index on the DVDs so you can have an all-electronic experience. Nice work!

Kate

Friday, 20 February 2009 09:50:13 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 19 February 2009

Another Dan Griffin sample you might want to look at is the EC2 Console. I think his description from the first post in that category sums up his approach very nicely:

The purpose of the EC2 Console, like the other ones, is to demonstrate an attractive (WPF-based), novel, and useful application on Windows. In this case, we chose as our vehicle a helpful control panel for Windows developers who are new to cloud computing and would like to experiment with Windows Server, ASP.NET, and MS SQL on Amazon’s EC2 platform.

As it happens, Amazon already has an EC2 console (currently in Beta). But we’re going to differentiate ourselves from that in two ways. First, our EC2 Console will be specific to developers targetting Windows, and we can automate many administration tasks given that assumption. Second, our console (again, a WPF client app) will exhibit the kind of superior usability that is very difficult to achieve via the browser.

Client applications have many more advantages than just offline availability. Here's an application that's only useful when you're online, but is going to be a client application anyway. Follow along and see why.

Kate

Thursday, 19 February 2009 09:44:22 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 18 February 2009

Dan Griffin is working on some samples for client development and blogging his progress as he writes them. His SPOS sample combines workflow with access to local hardware (in this case, a fingerprint reader) to create an application where you could approve, say, purchase orders with a fingerprint swipe. It's a good example of the kind of application that is better as a local client application than something web-based and browser hosted.

He's created a Codeplex site where interim releases are appearing, and a blog category where you can follow his progress, read his musings on what fingerprint reader to buy, and so on. This is a sample designed for you to use in your own work, so follow along and see if it can help you.

Kate

Wednesday, 18 February 2009 09:38:47 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 17 February 2009

I have a favourite piece of advice, and I give it even though it frustrates many recipients. If you want to write, write! If you want to get into public speaking, speak in public! If you want to start a user group, start a user group! If you want to be an MVP, do what MVPs do (advise others and solve problems and volunteer for stuff) and you'll start to get the benefit even before you get the award. I'm not quite saying Just Do It but the fact is the barriers to entry are very very small these days and possibly non existent. Technical writing especially - start a blog or get active on newsgroups and presto, you're writing! Listen to feedback (people telling you you're wrong is bad, people thanking you for your answer or quoting you elsewhere is good) and you will get better. Public speaking isn't much harder to crack because the world is full of user group leaders and similar folks who need someone to speak to them month after month. It's also full of Code Camps and other places to get started (they tend to come with coaching and encouragement too.)

Still some people don't like this advice. They feel held back from what they want to do, and they don't like to be told "nothing is holding you back, you can start whenever you want." Alternatively, they don't want to speak or write or lead for free, they want to be paid for it, and they don't like the idea of starting for free and working hard for years to get that overnight success. So here's a rephrasing that maybe you'll prefer: "80% of success is just showing up." It's attributed to Woody Allen, not a guy I would normally take advice from, but it sure is accurate. Go to the meeting, open the document you're supposed to be writing, be there when someone asks for volunteers, go to the whiteboard and draw as much as you know, put your shoes on and go outside, ... not all at once of course, but these are the "just showing up" tasks that get you on the road to success. Try it.

Kate

Tuesday, 17 February 2009 17:06:42 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 16 February 2009

Paul and Kimberly are so romantic! Paul started it with a Valentines Day post about how to be a better speaker, giving lots of credit to his lovely wife. So naturally she followed up with a post of her own. If you've never seen Kimberly speak, you really should, even if you don't know anything about her topics. We're often speaking at the same time but the few times I've managed to get free time and sneak into the back of her room, I've been tremendously entertained and learned more about SQL Server as well. I know, too, how much time sweating demos, rewriting things, practicing, and just plain working hard goes into being so entertaining and accurate. You start to get a sense of that by reading these posts - from the tiniest detail of what to wear to the vital "practise your demos" and "show up for your tech check" you can understand that what matters most is caring. If you want to give a great talk you will do all that it takes to give that great talk.

None of their tips are SQL-specific. Read them and you're on the way to getting better. Get out there and do some talks with this in mind, and you're really starting to get it.

Kate

Monday, 16 February 2009 16:54:45 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 15 February 2009

Well perhaps not all the way to Considered Harmful but Allen Holub is willing to call them Evil. I came across this article because I'm teaching OO Analysis and Design again this year and my students have generally already heard that the way you do encapsulation is you make all your attributes private and then add a public get and set method for every attribute. What's more, they generally feel if you change the type of the attribute then you need to change the return type of the get and the parameter type of the set. This of course gets you pretty much nowhere, and this is what Allen is railing against.

Now I am OK with Get methods as long as you swear you will never change the return type. The example I give the students is a bank account class with a balance. In the original design you keep the balance as a floating point number, 12.34000000 for 12 dollars and 34 cents. You add a GetBalance() method that returns a float, and Deposit() and Withdraw() methods that take (among other things) floats to represent the amount being deposited or withdrawn. Now when implementation time rolls along you discover that floating point arithmetic is expensive computationally, and needs lots of rounding to stay accurate: add 1.00 to 1.00, then add another 1.00 and the time may come when your number ends .01 or .99 ... neither of which banks care for tremendously. So you decide to store the balance as an integer number of pennies. Everything is OK in my book as long as you DO NOT CHANGE the signature of GetBalance(), nor of Deposit and Withdraw. These methods don't need to know what you just did. When Deposit tells you the amount is 50.00 dollars, your code can multiply by 100 to get 5,000 pennies, and add that to the balance. GetBalance() can divide by 100 (and round) to change pennies to dollars. That's a good use of a Getter method.

I am less OK with Set methods. I sure don't want a SetBalance() method. Deposit(), Withdraw(), and their cousins will change the balance. But there's no business rule in which it becomes necessary to announce that account 123456 now has $183.27 in it, and set the balance to that number. Having the method just encourages some code outside the class to do things that belong in the class - calculating service charges, or giving interest perhaps. Locking up access to the value means that if your business rules change, you don't need to look outside the bank account class for code that implements those business rules.

So do I think Get and Set methods are Evil? No, but I do think they should not be your first reflex, one of each per attribute. Make them earn their place.

Kate

Sunday, 15 February 2009 16:47:44 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 14 February 2009

Here's another Channel 9 Video you need to watch: Rico Mariani: Visual Studio Today, Tomorrow and Beyond - Your Questions Answered. I love that in addition to planning for version 10 of Visual Studio, he's planning for 11, 12, and to a certain extent 13. To have the courage to start on a feature that won't really be done for ten years is very impressive. I'm looking forward to "Dev10" for a lot of reasons ... even more after watching this video.

Kate

Saturday, 14 February 2009 16:31:21 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 13 February 2009

You know the blog, now watch the Channel 9 video featuring Damien Watkins, Rick Molloy, and Don McCrady. I like this one because they talk about how they ended up changing their minds over the course of development, moving from a language-based approach to a libraries-based one. They get into why that's better and what C++ 0x features they needed to make it possible. A nice way to spend a little under an hour.

Kate

Friday, 13 February 2009 16:20:06 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 12 February 2009

Yochay has been very busy talking to Channel 9 and preparing Windows 7 material for developers. Here's a blog post from early January that lists some taskbar related videos you will want to watch. Screenshots of the taskbar really don't convince you of how much easier it is to use.

Still I can't keep from trying. Let me show you how I close things now. Imagine I have (among other things) a Notepad instance open on my machine. The "old way" to close it, if it doesn't have focus, is to right-click the icon on the taskbar and then choose close. You can still do that in Windows 7:

That's a right click, let go, move the mouse, left click. We know how to do that, and it's a ton less mouse moving than left click, wait while window paints, go on all the way up to the top right, click the red X. But I like this even better:

If I just move the mouse (no clicking) over the icon of one of the Notepad instances, they all show their thumbnails. One of them (the one I moused over) has a little red x showing in the thumbnail. Without clicking, if I move the mouse onto the thumbnail and pause a moment, I get the "peek" where that window appears (in case I can't tell from these tiny little thumbnails) and everything else goes transparent. If I click the little red x in the thumbnail, the instance closes. It's less clicks, it's noticeably faster and smoother.

These are the sorts of things that are making me so glad I put Windows 7 on the prime laptop. I would not go back!

Kate

Thursday, 12 February 2009 20:47:40 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 11 February 2009

Jennifer Marsman points out her favourite new Windows 7 feature - different default printers when you're on different networks. To bring up the dialog she shows in her blog post, bring up the Devices and Printers dialog (I do that by clicking Start and typing printer), then select a printer. That will give you a printer-related toolbar:

And yes "no network" counts as a network, so I can have the XPS writer as my default when I'm not on the network (if you've ever accidentally clicked a Print icon on a toolbar and then had to wait over a minute while the search for the printer timed out, you'll know why my default isn't really a printer at all) but I can have a useful default printer when I am on the network. Fantastic, and thanks Jennifer for telling us about it!

Kate

Wednesday, 11 February 2009 19:14:29 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 09 February 2009

We all face times when we have a picture and we want the text. Maybe we have a printout we can scan, but we don't have one of those cool photocopiers that scans to a true text format like PDF or XPS. Maybe we took a screenshot during a web cast and don't want to retype all the code. That sort of thing. There used to be OCR in Word, but in Word 2007 it seems to have disappeared. No worries though, it resurfaced in One Note.

Here's a screenshot from a private web cast last summer (the actual content is in a recent Visual C++ team blog, so no worries about revealing super secret info):

Now, I open a new One Note document, paste this jpg into it, then right-click:

 

You can hit paste right in One Note if you like, but it tries to capture formatting etc. I pasted into Notepad and got this:

Some samples
structXfl;
void meow(constX&)cout<<”meowconstX&):Copying.”<<endI;}
void meow(X&&) cout << “meow(X&&): Moving.’ <<endl;}
XfooOIreturn XO;}
const X bar() return X(); }
mt main()
Xa;
constXb;
meow(a); I/Copying
meow(b); I/Copying
meow(fooO); ii Moving
meow(barO); II Copying
}

OK, it needs some spaces, and it's not too smart about {} or //, but it's quicker than typing it all yourself. And if you have a boatload of ordinary typed text (say a paragraph from a printed RFP that you want to quote in an email to various folks, or a powerpoint presentation) then it's even more accurate. And it's probably on your machine already!

Kate

Monday, 09 February 2009 17:58:44 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 06 February 2009

I've been saying for a while that the Vista Bridge is now a living project that gets updated. And here we have our second Code Gallery release already. I think it's worth saying again what I said when 1.3 was released:

Here you can download the latest version, join discussions, and report issues including native APIs you wish were wrapped. Remember, this is a sample library, not a product, so don't expect the kind of support, internationalization, or full coverage a product would have. Do expect useful code for reading (if you care about how to do interop well) or just using (if you want to light up your application with Vista features without knowing about interop.)

I've been doing quite a lot of speaking on this wrapper library and it really makes all the difference in the world if you'd like to adopt the latest OS functionality from your managed (C# or VB.NET) application.

I did a quick search to see who had been writing about our library and was a little surprised to find a Wikipedia entry: http://en.wikipedia.org/wiki/Vista_Bridge. But it turns out that's about an actual bridge, that cars drive on, on Vista Avenue in Portland Oregon. Ah well.

Kate

Friday, 06 February 2009 16:19:58 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 05 February 2009

Should I be interested in a top 100 list I'm not on? Of course I should. Here's a list of developer blogs, painstakingly gathered by Jurgen Appelo. He looked at Google PageRank, Alexa traffic rankings, Technorati authority ratings, how many people link to the blog, commenting rate, and the RSSMicro FeedRank. In other words, an objective gathering of our collective subjective opinions of each other. While I have no clue how to measure any of those things, I can tell you I read 4 of his top ten and 11 of the top 100 at least once a week. If I were looking for more blogs to read, this list would include plenty of excellent candidates. Check it out!

Kate

Thursday, 05 February 2009 16:11:06 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 04 February 2009

I like Scott Berkun's blog a lot. He often shares insightful glimpses of what it takes to achieve. In this entry, he talks about how ratsen fratsen hard it is to write a book. This reminds me that I don't want to write any more books (in case watching Julie finish hers wasn't reminder enough) and also connects to the trouble I sometimes have with other long term unstructured projects. Deciding to work on what needs to be worked on is how you show your character. Day in, day out. Don't like the character you're showing? Decide differently, starting today.

Kate

Wednesday, 04 February 2009 16:03:27 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 02 February 2009

The WPF team have released an interesting document called the WPF Application Quality Guide. You can download it as a .doc file from that page, or just read it on line. It's an intruiging combination of handy links (Getting Started with WPF), overview diagrams, philosophy and advice around testing and development that would apply to non WPF projects as well, and very WPF-specific practices (should I derive from Control or UserControl?) aimed at testers and developers alike. The Word version runs to almost 80 pages but not all the sections will apply to every reader. You should take a look at it, for sure.

Kaet

Monday, 02 February 2009 09:44:02 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 01 February 2009

While I was in Redmond I met Alon Fliess, who like me is a C++ MVP and is exploring Windows 7 (and Vista before it) from a native point of view as well as a managed one. About two months ago he mused about the "rebirth" of C++ in these times, not just because some of those operating system APIs are easier to get to from native code, but also because of new native capabilities (the continued MFC updates, the native Web Services library, the concurrency services) that just keep being added to the arsenal available to C++ programmers. (He has some helpful links in the blog post - you could also search through here if you like.)

I think it's a good point. If you know C++, now's a good time to use it. If you don't, then hang around (at least virtually) with those who do - we can point out some cool things. And thanks to the magic of interop, wrappers, and C++/CLI, perhaps we can make some of those cool things a little easier to get to from managed code.

Kate

Sunday, 01 February 2009 09:12:13 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 31 January 2009

Rands has some cool advice for being a fantastic manager in a pretty big company leading a pretty big team. It isn't all applicable to managing a whole company and having no boss, as I do, or to leading a smallish team without hire and fire power, as many developers do when they first move to management. But a lot of it is. Try this for a start:

... at the end of the day when you ask, “What did I build today?” The answer will be a troubling, “Nothing”. The days of fixing ten bugs before noon are gone. You’re no longer going to spend the bus ride home working on code; you’re going to be thinking hard about how to say something important to someone who doesn’t want to hear it. There will be drama. And there be those precious seconds when there is no one in your office wanting… something.

If that resonates with you, read the whole thing. You'll be glad you did.

Kate

Saturday, 31 January 2009 10:55:28 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 29 January 2009

The Visual Studio site has been completely revamped.

It's fun and a good source of information even for those of us who already know our way around Visual Studio. Check out the Community tab for videos and links to blogs.

Kate

Thursday, 29 January 2009 10:33:16 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 28 January 2009

I love hand-edited blog aggregations. You get relevant technical material without the cute cat pictures. I have a gadget that shows me headlines from the blogs of my fellow Regional Directors, but anyone can have it. Here's how it looks on my sidebar:

If I click a headline, it pops out with a summary:

Click the more link and it goes straight to the post on the original site.

You can get the gadget from Live Gallery and install it on your own machine very easily. Alternatively you can see the aggregation in a browser at http://www.microsoftregionaldirectors.com/. I've said before what a smart group of people this is and how very much you can learn from following their blogs. It's all the more true when someone else does the monitoring and editing for you. Enjoy!

Kate

Wednesday, 28 January 2009 15:27:43 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 27 January 2009

Brian Marble reports that the session selection process is almost complete. I submitted a few talks, of course, and I also know of at least one talk submitted by someone else in Microsoft with me as the speaker. The dust hasn't quite settled yet (the session titles should be on the web in February) but I do know that at least one of my sessions has been accepted. Yay! I'll add more details when it's official, but for now ... see you in LA in May!

You can register now, by the way, and get a nice discount and snag a good hotel room...

Kate

Tuesday, 27 January 2009 16:11:35 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 26 January 2009

You know the deal when you demo beta (or worse, pre-beta) software. That stuff has audience detectors in it! Sure, it works on the plane, but just wait until you get in front of people. I’ve had my share of demo deaths, but I don’t think I’ve managed to look this cool about it:

Steve Teixeira tells the story in this blog entry.

Kate

Monday, 26 January 2009 22:31:17 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 25 January 2009

I attended more events than usual in 2008, and I spoke at roughly the same number as usual, for me. But many people are saying they plan to attend fewer events in 2009 than usual, and what’s more they’re saying that might not be a bad thing. In a time when sessions are online, when you can search the web for the blog of the person who wrote the feature you’re interested in, why would you pay for a plane ticket and a hotel room, not to mention a substantial admission fee? I can think of at least three reasons why I do it: for the time spent with likeminded attendees, for the time spent with speakers, and as an oasis from my other obligations that’s devoted to this particular topic. There’s a fourth that you won’t notice unless you go to conferences that are well-curated: somebody is taking the time to select sessions, to select speakers, and even to get the sessions delivered in a sensible order. For more on this point, you should read Andrew Brust’s blog entry on the importance of track chairs in the 21st century.

Kate

Sunday, 25 January 2009 22:27:31 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 24 January 2009

Short answer: yes, you can open up Visual Studio 2008’s Team Explorer and point it at your not-upgraded-yet 2005 TFS server and be happy. If you are curious about other levels of mixing and matching and compatibility, check Grant Holliday’s chart.

Kate

Saturday, 24 January 2009 22:17:34 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 23 January 2009

I was working on a service recently (pretty cool actually, it is a Windows Service that hosts a WCF Web Service) and I was fiddling with it and installing and uninstalling it, and I was getting frustrated. I couldn’t install the new version because it already existed. I couldn’t uninstall it because it was “marked for deletion” whatever that means. I found a knowledge base article which suggested rebooting my machine. Sure, that’s no trouble at all. Grr. Then I found Avner Kashtan’s blog entry. I can’t believe the simple fix he provides. And it WORKS! Go on, read it there. You’ll thank me.

Kate

Friday, 23 January 2009 22:16:36 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 22 January 2009

Leon Bambrick, aka Secret Geek, reveals the true differences between small businesses and enterprises. Like Dilbert, it’s only funny because it’s true.

Kate

Thursday, 22 January 2009 22:15:31 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 20 January 2009

Anyone who blogs on technical topics soon notices they get a lot more hits if they wander into non technical areas for a post or two. That’s just because there are more non technical people out there, searching for tips on stain removal or coupons for TGI Fridays, than there are people who want to know how to get a manifest on an executable or how to write a C++/CLI wrapper for native code or what’s coming in Visual Studio 2010. That’s why my top ten posts last year are:

1 - XPS Document Viewer – Nov 19th 2006
I guess people are still getting XPS documents and don’t know how to read them. OK. Not sure why my page would be the one that over 7000 people find, but what the heck, the information is still valid.


2 - Reading Office 2007 files – Nov 23rd 2006
Also from two years ago but people still need to know this. I send people this link whenever I get one of those “I can’t read your attachment because I’m not on Office 2007 yet” replies to an email. I didn’t send it out 4000 times though, so I guess a lot of people are searching for this stuff.


3 - Try Www.mappoint.com – August 18th 2004
I read recently that people don’t seem to realize they can type URLS into the address bar on their browsers, and have their home pages set to search engines, and actually type entire URLS into search boxes so they can click the result. I would deny this could happen, except many years ago I had a client who did just this, so I know there really are people who do this. I also can’t think of any other reason why over 2500 people would read a four year old post comparing MapPoint to MapQuest given that everybody these days uses either maps.google.com or maps.live.com.


4 - Introduction to Workflow in SharePoint 2007 – June 22nd 2006
Yep, workflow was a hugely important addition to SharePoint. We’re loving it in the SharePoint project we’re doing now. Again this is a topic that must surely be better covered somewhere else though. Still almost 2500 people stopped by to learn about workflow – I hope they followed the link to learn more, and learn something a little more recent – say from after the product was released?


5 - How to earn a million Aeroplan miles – Oct 1st 2005
Now this is really non-technical, but it caught my attention and I guess plenty of other people’s too. I have some other blog entries from time to time about Aeroplan miles, but I don’t really cover how to earn them. For that I highly recommend Flyertalk’s Aeroplan forum.


6 - Batch-convert Visual Studio 2005 projects to Visual Studio 2008 – Dec 17th 2007
The most recent entry yet in this top ten. It makes sense that something that gets hits all year does better than something that wasn’t even around for the first half of 2008. And this is a useful tip I haven’t seen many other places. All those searching people should just subscribe to John Robbins – searching only helps you if you know something exists and want to find it. Smart blogs like John show you things you hadn’t imagined existing.


7 - Another Way to Get the Shield on a Button (or Anywhere Else) – Jan 30th 2008
Finally, something from 2008 in the 2008 top ten! And this is a good tip from Daniel Moth. Remember, the shield on a menu item or button doesn’t bring up the UAC prompt any more than putting ... on a menu item brings up a dialog. And nothing puts the shield there for you if you trigger a prompt any more than something puts the ... for you when it sees you have code to show a dialog. All of this is just sensible developer tradition that helps users feel comfortable with the software they’re using. So please play along and help people know what to expect.


8 - Don't compile MFC apps with /clr:pure – Jan 17th 2007
This one seemed like a no-brainer – MFC includes native stuff, /clr:pure means I don’t have any native stuff, but I was getting emails asking for help and this kept turning out to be the issue. So I blogged it. A lot of my blog topics are the answers to random emails I get from people who are looking for help. This way an extra 1500 or so people saw the answer in 2008.


9 - Hot Laptop? Here's a tip – May 14th 2006
It’s still good advice for working with an overheating laptop. I’m not sure if the searchers all had that problem or were using “hot” more metaphorically.


10 - Adding a manifest to a Vista application – Oct 3rd 2006
This is mostly a link over to Catherine Heller’s Visual Studio 2005 instructions, except that I really wanted to call out how much less work it was for Visual C++ compared to C# and VB.NET. Anyway it’s all a ton easier with Visual Studio 2008 these days.


What else can I tell you from my stats? I got almost a million visits over the year, and they averaged 2.71 requests – meaning most folks clicked around a bit once they arrived. That’s heartening. In 2008 I set myself a goal to blog every day. I didn’t achieve that – there were several long gaps in there – but I did post 135 times. I still like the quote from my post on June 1st, resuming after a four-month gap: “Blogging, like speaking at a Quaker meeting, is something one must do only if the spirit moves one.” I’m looking forward to having my spirit move me hundreds of times in 2009.

Kate

Tuesday, 20 January 2009 22:07:58 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 02 December 2008

So is there anything you hate more than the old "Unknown Error" when you're doing Sharepoint development? I found this tip on Madhur Ahuja's old blog (he moved it earlier this year) and it's short enough I can paste it here:

Find the web.config for the site you normally use as your development site. Locate this tag:

<SafeMode ... CallStack="false">
and change it to CallStack="true".

Set <CUSTOMERRORS mode="On">to mode="Off".

Set <compilation debug="false" batch="false">to <compilation debug="true" batch="true">

Now you will get the full stack trace as soon as the error is raised.

Works like a charm! Well done Madhur, and thankyou!

Kate

Tuesday, 02 December 2008 19:22:26 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 30 November 2008

This has been a very busy fall for me, with more travel than usual. So it was timely to read this article about what got through airport security and what didn't. I actually wasn't worried that the flags, tshirts and pamphlets expressing pro-terrorist views got through ... the mandate is supposed to be to keep out bad items, and your chances of killing someone with a tshirt aren't dependent on what's printed on it. But the 80 ounces of liquid (by using a silly Beer Belly pouch under your shirt) or ordinary water bottles with hand typed Saline Solution labels make me resent every bottle of water, can of coke etc that's been taken from me. And the ID triangle thing was new to me ... in Canada the security people don't check your ID but the airline does, a lot.

You go along, of course you go along. A security type took my passport from me while my stuff was going through the Xray. I asked for it back. She said "you can have it on the other side." I said "you are allowed my boarding pass, but not my passport." She said "you wanna argue or you wanna catch your plane?". Sigh. She gave it back on the other side, but what if she hadn't? They would have all said "oh no ma'am, our staff never take your passport, only your boarding pass."

The article is definitely worth a read.

Kate

Sunday, 30 November 2008 10:45:32 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 29 November 2008

Whenever I go to a conference I run into people who make software so differently than I make it. I also run into people who do the same things I'm doing, but they have a name for it and I don't. Someone asked me recently if I "did Agile." I always answer that we're not "formally Agile" which frankly I find very funny. We do have a client though, for whom we ship a new release every month. They ask for things (typically with emails) we design and estimate, together we draw up a list of what will be in the next phase and when it will release, and then we mostly do that. I say mostly because sometimes over the month they change their minds, or their customers impose a business change on them, and we tweak the list a little, but just about every month they get a refresh and their software has evolved to meet their new needs.

So there are plenty of people who will tell me, since I ship every month, I'm Agile. I guess so. But we don't do scrum. We don't do burn lists. We don't do pair programming. We don't have a daily anything. We manage all this with TFS and with a Word document called "phase 13 as approved.doc" that has a table in it listing work items, their descriptions, and their status. We don't really use any of the deliverables or artifacts that are considered Agile today.

So, with that mindset (what makes you Agile) I have two links for you.

First, http://martinfowler.com/articles/newMethodology.html. This is Martin Fowler on agility, the essay he first wrote in 2000. It talks about how requirements change, how people are not all the same, how customers adapt, and so on. To my great surprise it lists the Rational Unified Process as an Agile technique. His conclusion is a damn good one:

So where should you not use an agile method? I think it primarily comes down the people. If the people involved aren't interested in the kind of intense collaboration that agile working requires, then it's going to be a big struggle to get them to work with it. In particular I think that this means you should never try to impose agile working on a team that doesn't want to try it.

Second, http://www.agilemanagement.net/Articles/Papers/CMMIandAgileWhynotembrace.html. Unfortunately the paper is only available as a PDF, but this page has a link to it. The abstract:

Agile development methods and CMMI (Capability Maturity Model® Integration) best practices are often perceived to be at odds with each other. This report clarifies why the discord need not exist and proposes that CMMI and Agile champions work toward deriving benefit from using both and exploit synergies that have the potential to dramatically improve business performance.

OK, so it isn't written in a conversational style, but you know, it makes some really good points. I've just started a project in which we're using the CMMI templates for TFS, just to see what it's like, and we're being our usual "get the detailed requirements and do the design at the last responsible moment" on it (we have sensible phases which makes this possible) and you know what? It's working pretty well.

So, you think you know your methodologies, but I recommend you read both of these papers and then see how you feel. You may be surprised. You may be pleased (I was.) And you may start working more effectively.

Kate

Saturday, 29 November 2008 09:11:54 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 28 November 2008

So maybe Bill never said "640K ought to be enough for anybody" or maybe he did. Truth is there was a time when we had far far less than 640 to play with, when we had 64 or so and didn't complain, and there are still people and languages that are left over from that time, who treasure every byte and are careful with their allocations. That's mostly just a vestige and not a useful habit, but there is one place where that approach is still right - when every byte of your code will get downloaded every time it is run. In other words, code on a web page that will execute client side. Everything old is new again as you know.

So, how much cool can you pack into a tiny payload? Or as the Mix folks ask,

What could you create for the Web if you only had 10 kilobytes of code? It's time to exercise your minimalist creativity and get back to basics - back to optimizing every little byte like your life depended on it.

Yep, it's a contest, with real money prizes ($1500) plus a fully-paid trip to Mix for one winner. The rules:

  • Source files and embedded images for your web application cannot exceed a size of 10 kilobytes (not compiled); only the xaml, cs, vb, or "language of your choice" files and embedded resources are counted against the 10 kilobyte limit. Build instruction files are not counted against the limit (for example, Visual Studio Solution and Project files).
  • Your web application must either use Microsoft® Silverlight™ or Windows Presentation Foundation, as a XAML Browser Application running in Partial Trust or as a ClickOnce application.
  • Your web application cannot include external libraries or assemblies. Data from web services is permitted, provided that you have obtained all consents, approvals, or licenses required to use the data as part of the web application that you create. Although data can be requested, you cannot use services to provide extra functionality.
  • Entries will be judged on originality, graphic design / user experience and functionality.

Gonna enter?

Kate

Friday, 28 November 2008 08:57:23 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 27 November 2008

I'm a very positive person, as anyone will tell you who has met me. I actively work at keeping a happy attitude in a variety of circumstances. And it is work, more than just smiling no matter what happens. For example, who you choose to spend time with makes a big difference - spend a conference with someone cynical who keeps saying "what a waste of time this is" and you will skip most sessions and go home saying the conference was a waste of time. Spend your time with someone excited about the material who joins in conversations about what this might mean and where that could take us, and you'll go home excited and rewarded for your week away.

In that spirit I identified immediately with this quote I saw on Scott Berkun's blog:

I hate a song that makes you think that you are just born to lose. Bound to lose. No good to nobody. No good for nothing. Because you are too old or too young or too fat or too slim or too ugly or too this or too that. Songs that run you down or poke fun at you on account of your bad luck or hard travelling.

I am out to fight those songs to my very last breath of air and my last drop of blood. I am out to sing songs that will prove to you that this is your world and that if it has hit you pretty hard and knocked you for a dozen loops, no matter what color, what size you are, how you are built, I am out to sing the songs that make you take pride in yourself and in your work.

Scott has a few more paragraphs, and identifies the speaker, so just to make you click over, I'm not going to. I'll give you a hint though: I saw his son just last month, which I suppose is no coincidence.

Kate

Thursday, 27 November 2008 08:44:55 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 26 November 2008

I mentioned Andy's blog a few entries ago. Now he is selling some funny shirts to raise money for two deserving charities: one that treats and prevents blindness and another that provides low cost prosthetic feet. Excellent causes.

  

You know you want one...

Kate

 

Wednesday, 26 November 2008 10:39:09 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 25 November 2008

It seems like every year I read about how something we think is new and exciting, or at least fairly recent, has been kicking around for a long time. (I mentioned video games a while back, for example.) Recently on the same day I read a Jeff Atwood blog entry and a Wired article about Ray Ozzie. Here are some quotes:

From Jeff:

From On December 9, 1968, Douglas C. Engelbart and the group of 17 researchers working with him in the Augmentation Research Center at Stanford Research Institute in Menlo Park, CA, presented a 90-minute live public demonstration of the online system, NLS, they had been working on since 1962. The public presentation was a session in the Fall Joint Computer Conference held at the Convention Center in San Francisco, and it was attended by about 1,000 computer professionals. This was the public debut of the computer mouse. But the mouse was only one of many innovations demonstrated that day, including hypertext, object addressing and dynamic file linking, as well as shared-screen collaboration involving two persons at different sites communicating over a network with audio and video interface.

and from the Wired article, talking about 1973:

Users had direct contact and direct feedback—not just to computers but to one another. "They had this thing called Personal Notes, which you would call email," Ozzie says. "They had this thing called Talkomatic, which is like real-time group chat. And they had this thing called Term-Talk, which was like instant messaging." It was also a way-before-its-time Valhalla of computer gaming. Programmers on the system had gone far beyond the tic-tac-toe and hangman that were popular in other computer centers to pioneer multiplayer online games, notably the Star Trek-inspired Empire. In retrospect, looking at the Plato community was like peeking through a wormhole and viewing the 21st-century Internet—but without the spam, fraud, and commercialism that would come with the real thing 35 years later.

I wonder what technology we're using today that only kinda sorta works and just a few visionaries (eccentrics?) are using it, but 30 or 40 years from now when it's ubiquitous, we'll all be "hey! we had that in 2008! I think I have a screenshot around here somewhere..."

Kate

Tuesday, 25 November 2008 10:31:23 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 24 November 2008

Rudi Grobler has released a pack of WPF themes for you to use to make your applications convey the atmosphere you want to convey. Applying them is as simple as one line of code in your application as a whole, or window-by-window, or you can do it in XAML.  Rudi's blog tells how. It really makes a difference to the mood of your application and lets you stand out from the crowd.

 

I shrank the images because people object when the chrome on the right gets messed up by big images. You can see the originals on Rudi's blog - I just want you to see how very different the same application looks when you change themes. BTW, these themes were originally released for Silverlight and Rudi converted them for WPF. Pretty slick!

Kate

Monday, 24 November 2008 14:54:09 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 23 November 2008

Because Visual C++ is a great tool for making Windows applications (and has been for well over a decade) a lot of the Visual C++ users I meet are Koolaid drinkers like myself. We use Microsoft tools to write software for a Microsoft platform, and a fair number of us use Word and Outlook and Powerpoint and rarely touch an application that didn't come from Redmond. But one of the cool things about C++ as a language (contrasted to VB and C# for sure) is that it is also used by people who don't use any Microsoft tools, or who use Visual Studio but nothing else, and people who are not developing for Windows. These people are not drinking the Koolaid and their opinions can be very helpful. They keep track, for example, of which standards features have been implemented in which compilers.

I came across this article on the future of C++, and the article itself didn't have much extra information for me (though the insight into the "bias" of StackOverflow was interesting.) But the comments! Wowza. I'll be reading Andy's blog from now on, and I recommend you read at least this post. It's a good one.

Kate

Sunday, 23 November 2008 09:14:21 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 22 November 2008

Soma is blogging about C++ again. I liked this quote:

Over the years, we have heard a lot of C++ developers refer to the old days of Visual C++ 6.0 as the glory days of Visual C++ tools.  Many of the comments reminisce about the snappy and productive IDE.  With Visual C++ 2010, we strive to create a new benchmark for Visual C++ IDE productivity.  We will couple this IDE with our superior support for the C++ language and significant improvements to the libraries.

He talks about Intellisense, the build system, tools for exploring a large codebase, the native Parallel Patterns Library (PPL), lambdas, and MFC updates. There really is a ton going on in Dev10. A lot of it was covered at PDC so if you haven't watched those videos yet:

https://sessions.microsoftpdc.com/public/timeline.aspx search for "C++", "MFC", and "native". Enjoy!

Kate

Saturday, 22 November 2008 09:05:57 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 21 November 2008

One very powerful question to ask yourself, if you run a business of any kind, is "what business are you in?" Another way to ask it is "what needs do I meet?". It's easy to say "I'm in the software business" or "I'm in the consulting business" but more people are saying "I hate the way we <something in their business>" than are saying "I wish I had new software" or "I wish I had a consultant."

This Harvard Business School article even says people don't really buy drills, or that isn't the need they are meeting when they go buy a drill - they buy holes. They want holes, and they buy a drill as a way of getting them. The only way you can sell them your drill is to relate it to holes. Being lightweight, for example, doesn't matter to someone who only plans to make a few holes at a time. But it's really important to someone who is going to make a lot of holes and has to slow down the pace because their arm aches from holding the heavy drill. Being cordless only matters if you can think to say "make holes anywhere!" to the purchaser. And so on. The rest of the article helps you try to understand what needs your product or service meets, and therefore how to adjust it or sell it so that you sell more of it.

I've said for years that we're in the problem solving business. We solve people's problems. We're more likely to use software to solve them than to come over to a client's house and build a shed in the backyard or mow the lawn - but we're not so much in the software business as in the problem solving business. If I write great software that doesn't help the problem, I've failed. Often our advice on process is as valuable as the software we write encapsulating that process. And of course when we're mentoring and advising other developers, we need deep technical chops but we need to remember that the mentee or advisee has a problem (our UI looks stale, we have to exchange information with a new business partner and don't know how, our application blows up under certain circumstances and we don't know why) and we are there to get that problem fixed.

As the economy worsens you are more likely to stay in business if you are sure what business you are in. It isn't obvious.

Kate

Friday, 21 November 2008 08:57:02 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 20 November 2008

It's so hard to remember, while you attend a conference, that the convention centre is essentially a blank canvas on which your conference is drawn. Between shows most of the space is a giant empty room with concrete walls and floor. All the lighting, draping, signs, and screens are installed for the show itself - even the chairs are temporary. This amazing timelapse video shows you the keynote room at PDC over the days before, during, and after the show. One of the things I like is that you can see how often the keynotes were rehearsed in the actual room on stage with all the screens going. Full-on dress rehearsals are vital to a good presentation.

It's about 6 minutes long and parts of it are a bit dull (imagine what they would have been like at normal speed) but I'm glad I watched it.

Kate

Thursday, 20 November 2008 08:43:01 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 19 November 2008

Recently, as a meeting wrapped up, one of us was taking on an action item to adjust the due dates on a large list of work items. We had gone through the meeting saying "put that for the end of next week" or "put that for middle of next month" and there was a good chance that too much stuff had been put into some of the buckets. He said "I'll go through on a first pass and put the dates as we agreed them, then I'll send them out for everyone to review." Makes sense. He continued, "Once we see them all at once if we need to postpone some, or prepone some, we can." And part of my brain went "prepone? What the -- oh yeah, I get it."

It's quite useful really. People say that "move ahead" and "move forward" are perfectly clear and you can't get confused by them. The problem is, half those people say it's clear that moving forward means to an earlier date and half say it's clear that moving forward means to a later date. Oops.  "Move earlier" is ok, but I quite like prepone. I'm going to see if I can use it with a straight face. BTW I did a quick search, and it's an accepted and generally understood word in South Asian English. I'll see if I can do my part to spread it to the rest of the world.

Kate

Wednesday, 19 November 2008 08:26:23 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 18 November 2008

For a long time now, Google has been interested in what we search on. I remember reading an article in late 2001 that described a visit to a Google building with a screen on which search phrases scrolled by in real time. To my great surprise one of the phrases the author listed was a search I had performed myself in that time frame. Today, someone has had the insight that people search for certain keywords because of things that are happening around them.

Public health authorities the world over try to measure the frequency and severity of various infectious diseases in order to spot epidemics and pandemics in time to do something about them. For the flu, they ask doctors to report what percentage of the cases they see each week are Influenza Like Illnesses - as this percentage rises it is safe to conclude the amount of flu in the community is rising, even though not everyone with the flu goes to the doctor and not everyone with an ILI has the flu. These numbers take about two weeks to gather and are released publicly so various levels of government and quasi government can react to them.

So the Google insight was that people search for words like "fever" or "joint pain" when they or someone they know has an ILI. (I actually don't know what search terms Google is counting - it might only be the word "flu" for all I know.) These aggregated counts are available immediately with no waiting while people tally and report, tally and report up the chain. Take a look at the correlations:

Wow! That's a pretty amazing relationship between those lines. And instant results instead of waiting two weeks could make a real difference in treating an outbreak. But I am not sure how I feel about it. It's almost creepy, yet at the same time it's very cool. How can you be sure this ability will always be used for good?

Kate

Tuesday, 18 November 2008 16:51:08 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 17 November 2008
This month's meeting is November 25th. Chris Dufour will speak on Building Silverlight 2 Data Applications. The meeting is at the Whitby library, but please register so the food count will be accurate.

Kate

Monday, 17 November 2008 22:05:02 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 16 November 2008

Also on Code Gallery, in addition to the Vista Bridge, you can find an interesting bit of guidance for those developing Windows 7 applications. This is 43 pages of "what is special about Windows 7" written for developers. Curious about touch and multi touch? Ink? The new taskbar, ribbon, jump lists? Libraries? How to handle previews and thumbnails for your file type? Wondering what Windows Web Services are and how they differ from WCF? (quick answer - WCF is managed, Windows Web Services is native C++ - expect more on that from me when life calms down a little.) It's all in here, with plenty of screenshots. From here you will know where you want to drill more deeply, and you will know the names of features, which is usually key to figuring out how to use them.

http://code.msdn.microsoft.com/Win7DeveloperGuide is a good starting point, and you can join discussions and so on. The Downloads tab will get you the document in Word or XPS format.

Kate

Sunday, 16 November 2008 07:51:18 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 15 November 2008

Friday night wrapped up with a reception in the speaker room where we'd been working all week. Some of us (including me) were a little slow to switch from workin-on-my-laptop mode to hangin-with-my-speaker-buds mode.

That's Rob Windsor in the foreground and Brian Harry next to him. I went with Cava, Rob with beer. There really are no wrong choices :-). In the background you can see the big screens that show the top ten speakers and also randomly display comments from any and all sessions. A number of these were very funny out of context.

Earlier Friday I took this picture from my hotel window:

Always you can see Sagrada Familia, I noticed this from the cable car and the castle also. It just rises up out of the sea of lower buildings.

Barcelona was, as predicted, warm and beautiful. Crime was not an issue this year - the police presence was intense and I heard no stories of pickpockets, muggers, or cutpurses this year at all. I discovered the best tapas in the city at Ciudad Condal - which doesn't have its name on a sign so you need to know the address, 18 Las Ramblas. Three of us arrived here - it doesn't take reservations - and fought our way inside through the crowd to reach the maitre-d', who asks "inside, outside, or at the bar?" and then told us it would be 30 minutes for our inside table. The next step is you go to the bar, ask for "tres cervesas por favor" and then point at something from the dozens of plates of gorgeous tapas and montaditos (thingies on toast) and say "tres". Presto - three beers and three (in our case) smoked salmon on toast and you go stand on the sidewalk with the rest of the city. Heaven. The beer was good, the salmon divine, and it didn't even feel like waiting. In no time we had our inside table and then the fun begins. Not a false note - and we gave them lots of opportunities because we ordered a lot of plates. Highly recommended, and actually cost less than some other dinners we had here even though we could barely move by the time we'd finished eating it all.

Will I be back? Well I guess it will be a while till Tech Ed brings me back - we move to Berlin for next year. So I'll have to bring myself back, because I'm really going to miss coming here otherwise.

Kate

Saturday, 15 November 2008 08:07:08 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 14 November 2008

Tech Ed draws to a close and the website of videos gets updated. This is a general-access-no-login-required highlights site. The mechanism for extracting individual links seems broken, so I'll show you what to click on:

Thursdays wrapup includes footage of the Norway country party (North American speakers typically pick a country to visit for country drinks, and my gang chose Norway) and the Speaker Idol finals (I was recruited as a last minute replacement judge for the finals only.) Speaker Idol impresses me every year because it shows all of us (speakers, track chairs, etc) people who are really good but have not spoken at Tech Ed before. How good? I have a session in the top ten this year, and one of the very few people who is outscoring me is last year's Speaker Idol winner, Jeff Wharton.

The afore-mentioned session in the top ten is here, the full video. Doesn't seem to be downloadable, so set aside 80 minutes and learn about shared_ptr and lambdas. The abstract is inaccurate - I didn't do anything on STL/CLR or marshalling - that was last year. The attendees didn't seem to mind that I tossed out half my planned talk and replaced it with content that had been announced at the PDC :-).

There are 63 videos all told (though 5 are from last year) and they range from a few minutes long to, well, 80 minutes. See what you missed, and maybe see you next year!

Kate

Friday, 14 November 2008 07:39:38 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 13 November 2008

Just in time for my Tech Ed Day 4 talk, we have the long awaited arrival of the Vista Bridge Samples Library, version 1.3, on the MSDN Code Gallery:

Here you can download the latest version, join discussions, and report issues including native APIs you wish were wrapped. Remember, this is a sample library, not a product, so don't expect the kind of support, internationalization, or full coverage a product would have. Do expect useful code for reading (if you care about how to do interop well) or just using (if you want to light up your application with Vista features without knowing about interop.)

Enjoy! I've been waiting a really long time for this!

Kate

Thursday, 13 November 2008 07:24:47 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 12 November 2008

Check this out. If you go to DevTeach - and you certainly should - you will be getting more than you bargained for. First and foremost you'll be getting great sessions by great speakers. 136 sessions to be precise, plus a keynote by Ted Neward. Because of the small scale (8 simultaneous tracks instead of dozens) you will get a chance to meet and talk to many speakers and your fellow attendees during breaks and meals.

Now I happen to think that is well worth the $1250 attendance fee plus your travel and hotel. You would pay double to go to Tech Ed. Montreal the first week of December is a delightful trip, and you will learn the things you need to learn to stay current in this world, and get face time with a dazzling array of people who are not usually this accessible.

But, in case that's not enough, they've negotiated their way to giving you about a thousand dollars worth of software and learning. Seriously. I quote:

We believe that all developers need the right tool to be productive. This is what we will give you, free software, when you register to DevTeach or SQLTeach. Yes that right! We’re pleased to announce that we’re giving over a 1000$ of software when you register to DevTeach. You will find in your conference bag a version of Visual Studio 2008 Professional, ExpressionTM Web 2 and the Tech-Ed Conference DVD Set. Is this a good deal or what?

It's a very good deal. Oh, and one other thing. Did you go to TechDays? Did you get a $100 coupon? They've decided to retroactively make that a $350 dollar coupon. So you can attend for just $900.

Register now!

Kate

Wednesday, 12 November 2008 10:52:59 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 11 November 2008

Barcelona is a marvelous city, beautiful, warm, possessed of amazing food and drink, and lovely things to see. Having done some Gaudi things on previous years, a bunch of us resolved to do some non Gaudi things this year.

Step 1: decide where you are going. There is a cool cliff and cable car that you can see when you come along the highway from the airport. We decided that was what we wanted. Here Joel Semeniuk is taking a picture of the web page so we will have the directions with us en route. Yes, that is what we are like. Our destination is called Montjuic. (BTW, this picture is taken in the speaker's room, so you can get an idea of what it is like in there.)

Step 2: take the subway (it's so cool that the organizers give us subway passes) to the Montjuic Funicular which is clearly labelled on the subway maps and signs.

Step 3 - take the cable car from the top of the funicular to the base of the castle. Looks like I didn't take any cable car pictures.

Step 4 - explore the castle and enjoy astonishing views over the city and harbour.

 

  
  

Thanks to Stephen, Joel, and Goksin for an afternoon that most definitely did not suck.

Kate

Tuesday, 11 November 2008 10:36:24 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 09 November 2008

These are fun:

I got them from Knom's Developer Corner, a consistent source of goodness.

Wondering why they appear to be on my desktop? Because even in Vista gadgets can be on your desktop. Just drag them there. If you use Windows+D or Alt-Tab your way to the desktop you won't see them, but bring up the sidebar with Windows+Space and the gadgets you put on your desktop will wake up too. Neat trick I learned from a Windows 7 guy :-).

Kate

Sunday, 09 November 2008 10:07:54 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 06 November 2008

Jesse Kaplan gave a GREAT talk at PDC called Managed and Native Code Interoperability: Best Practices. I really enjoyed it, and it actually covers a great deal of ground. Sure, some of the diagrams expressed concepts I have expressed before, but that's a vote of confidence as far as I'm concerned.

This is a dense talk that assumes a fair amount of background knowledge, but well worth the hour to watch. And then he plugged my marshal-as site, too!

Dude, you had me at "interop boundary" and it just got better from there. But this was a great finish!

Kate

Thursday, 06 November 2008 08:10:34 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 05 November 2008

Microsoft has announced BizSpark. If you know what DreamSpark is, then you might guess what BizSpark is. I was really surprised myself - essentially unlimited free licenses of developer software and hosting software such as Windows, SQL Server and SharePoint. Yes, free Team Suite for everyone in the company! You must meet three criteria:

  • Be a startup, less than 3 years in business
  • Have not much revenue, less than a million a year (stricter in some markets, mostly in Asia)
  • Be software developers, not consultants or resellers

You prove that you meet these criteria, not to Microsoft, but to a network partner. Ideally your network partner is more than just your gateway to free software, but someone who can advise and help you on the path to success. Since the network partner has to know a bit about you, not many will just email you a key if you email them. You can look through the partners on the BizSpark site and see who would be a good match for you to establish a relationship with. Be sure to get the user guide and read the FAQ as well.

Plenty of coverage of this elsewhere on the web:

etc etc.

So, if you fit the description and want the free software, what should you do? Go to the BizSpark site's Find a Network Partner page. A lot of them are venture capitalists and investment companies. If you were hoping to find such a firm, this is a cool way to know one that is in favour of your using the Microsoft platform and won't try to make you change development tools to get funded. If you weren't planning to work with an investor, scroll through looking for a firm that offers consulting and mentoring. You can send an email and see about working together. If you can't find a firm in your geography that looks as if it could help you, try a nearby geography. For example, I'm only listed under Canada, but Americans could engage with our firm too.

Kate

Wednesday, 05 November 2008 15:32:38 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 04 November 2008

All three from Steve Clayton's blog which I admire tremendously. The monster (Blue Monster updated to Azure Monster)matches the logo to my eye and they're both lighter and greener than the hex from the shirt. Btw I pronounce Azure with the emphasis on the first syllable :-)

Kate

ps: No clue what Azure is yet and wish someone would post about that instead of colours and pronounciations? Try http://blogs.zdnet.com/microsoft/?p=1671 for Mary Jo's take.

Tuesday, 04 November 2008 15:10:22 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 03 November 2008

More PDC goodness.

Steven Sinofsky is the senior vice president for the Windows and Windows Live Engineering Group at Microsoft. He was awesome in the Day 2 keynote. Then he walked down to The Big Room and did a half hour Open Spaces talk with attendees. I recognized fellow RDs Tim Huckaby and David Yack among them. The sound quality varies but the recording is well worth watching to see how comitted he is to the Engineering 7 blog and to communicating with developers.

Then there's Joey deVilla. I've been reading his personal blog for ages and his technical blog once in a while - he was an open source guy so it wasn't always relevant to me. I love his sense of humour and spirit of community. I was delighted to learn that he would replace the departing Jean Luc David (our loss is Redmond's gain.) While at PDC, he interviewed Don Box, Miguel de Icaza, John Lam, Phil Haack and some of the .NET Micro Framework team. Great ways of learning some of what happened at PDC and getting to know Joey a little better.

But he wasn't the only one! John Bristowe was also busy with the camera. He interviewed Joel Semeniuk (another RD) and some people from Windows Home Server. This is a product I am hearing a lot of praise for that I really should install on a spare machine.

I love these videos because they start to capture some of the non-session parts of the conference. If you're wondering why on earth you would go to a conference and not go to sessions, look at these conversations. Also look in the background at the other conversations and interactions. Face time is why we all come to the same place. Sessions are a bonus.

Kate

Monday, 03 November 2008 12:14:32 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 29 October 2008

Even those of us who are here can't see all the sessions we want to. I have three and four stacked across in most timeslots - and then I might end up spending that timeslot getting some vital "face time" with an RD or blue badge I don't otherwise get to see. But never fear, they're online within about 24 hours of happening! And what's more, you don't have to be registered to see them!

So, that Parallel native C++ talk that put me in the overflow room? http://channel9.msdn.com/pdc2008/TL25/ - watch the video, download the deck. The terrific Boris Jabes talk I lined up for? http://channel9.msdn.com/pdc2008/TL13/ - same deal. The MFC talk that hasn't even happened yet? The page is waiting at http://channel9.msdn.com/pdc2008/PC26/ and the video should probably show up Friday.

Want to find some more? https://sessions.microsoftpdc.com/public/timeline.aspx. This is just an amazing thing to do. It really increases the value for me of being here because it lowers my stress and worry about choosing the right session. It lets me concentrate on going to talks where I want to meet the speaker or ask the speaker a question, on going to the Labs and Lounge area to meet product team folks, and on enjoying the experience instead of frantically taking notes (or snapping pictures of demos).  I think this makes me MORE likely to attend future PDCs, believe it or not.

Kate

Wednesday, 29 October 2008 10:57:45 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 27 October 2008

Now the fun begins.

If you were there, or watched it streaming, did you wonder about the shoes?

 

Azure and its subsystems had a number of code names, one of which was "Red Dog" and the team got red shoes (dogs being a slang term for feet) in honour of the name.

If you missed the keynote, you can watch it at http://channel9.msdn.com/pdc2008/KYN01/

I had heard some of this before, but not all of it, and I need to digest it a bit, but I think the key difference between Azure and hosting, between Azure and the Amazon offerings, is this: it's one thing to offer you a machine (real or virtual) and tell you "feel free to remote desktop into this and do what you need to do, install things, configure things, it's a machine" but it's a completely different thing to publish your app to the cloud and to configure the cloud rather than your target machine. I like it.

Kate

Monday, 27 October 2008 12:54:46 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 24 October 2008

Here's a brand new blog, written by someone I work with from time to time at Microsoft. Well, that's who's name is in the URL, but the first post has talk of "we" so perhaps it's a team effort. The mission is

...this blog will be a “one stop shop” on the road to get yourself familiar with what Windows 7 has to offer for developers and how you can “Light-Up” using Windows 7 features in your application.

Nice. I'm reading!

Kate

Friday, 24 October 2008 19:36:37 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 23 October 2008

Actually I know what it is ... it's a large code base, fully available, very graphical, and with reasonable performance demands. So many years ago, Vertigo ported Quake II to managed C++ to show how performant the app was and how easy it was to integrate something that is quick to do in managed code - a partially transparent bad-guy locator if I remember correctly. That was five years ago, before C++/CLI, so it was a thicket of underscores and general hard-to-read misery.

About a year ago, Greg Dolley did it to C++/CLI. And then in January of this year he did Quake III Arena.

Well, now Julien Frelat has done it in Silverlight! He was apparently inspired by someone who did it in Flash. This is Quake I, but he has plans for II. Adam Kinney has an interview and video.

What else can Quake be ported to?

Kate

Thursday, 23 October 2008 19:29:20 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 22 October 2008

Rico, who like me wonders from time to time "am I old?", muses about how things tend to come on around again. Is C++ too old to bother learning now? Rico says no. But he also says:

...the real need facing C++ programmers is somewhat the same as what faced COBOL programmers say 25 years ago.  It's not that the language is out of joint -- it isn't.  I mean, ok maybe you like or don't like COBOL syntax but that doesn't doom a language and surely C++ syntax is not the zenith of wonderfulness.  But that isn't what's holding C++ programmers back.  The biggest problem, at least in my opinion, is one of accessing new/modern runtime features that may have a different programming environment from the context of an existing environment.

Now, what does that translate to in terms of action items for you? Good question.

Kate

Wednesday, 22 October 2008 19:01:38 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 21 October 2008

As you know if you attended the talks at Tech Ed USA and Tech Ed Europe, or listened to me on DotNetRocks, MFC now supports a Ribbon user interface. You can take some MFC application you haven't touched for a decade or more, add a few lines of code, leave all your command handlers and such untouched and -tada!- you can have a user interface from this century.

But it's one thing for me to demo for you what a tiny amount of code it takes to add a ribbon, and another for you to design a sensible ribbon that will lead your users effortlessly through your UI. Some guidance has now been released. For example, they are very clear that this is a bad ribbon:

There are tons of images and annotations to help you devise something your users will enjoy using. Please read it before doing any Ribbon work, whether in MFC or not.

Kate

Tuesday, 21 October 2008 17:09:44 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 20 October 2008

WPF lets you build truly beautiful user interfaces and user experiences. To do a good job, you need to think differently than a typical "grey boxes on a grey background" form based UI. Once you do that some ideas may come to you - wouldn't it be nice if you didn't have to write a lot of code to achieve the things you think up? Using effects is one way to jazz things up without doing it all yourself. Jaime Rodriguez blogged about the release of a library of effects on Codeplex. His blog includes still pictures, but really you need to see these on video. There's also a Channel 9 interview. Take a look and start to think about how users process information from your applications.

Kate

Monday, 20 October 2008 15:11:36 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 19 October 2008

Word is starting to spread about the Vista Bridge. Greg Duncan's blog entry on it links to the SDK blog entry and includes a screenshot of the demo. Nice to see awareness growing on this. Interesting link on the side to a buzzword bingo game for Zune. I really need to take a few minutes and get some games onto my Zune to make those plane rides go a little faster...

Kate

Sunday, 19 October 2008 14:53:29 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 17 October 2008

The concept of "a whole bunch of thingies" is a vital one in just about every programming language. Some languages support it right in the language itself. For example in C++ you can have an array of integers, or Employee objects, or Customer pointers. And when you use an array, you know that it's a continuous block of memory, and it's possible to interact either with just one element of the array or with the entire array. VB has arrays, and so does C#, and while the syntax is different between them, the essential concepts are not.

The thing is, an array is only the simplest and most accessible way to say "a whole bunch of thingies". It's important that you learn other ways to express that concept - typically by using a class of some sort that someone has written to represent it. There are a ton of these depending on whether order matters to you, does insertion speed matter more than traversing/iterating speed, and so on. Some folks, having learned one way to say "a whole bunch of thingies", look at all the other options, roll their eyes up into their heads, and stick with the one way they know.

This is bad. Not just because your code could be faster, neater, and easier to write, but also because arrays are really poorly suited for certain tasks. They especially hamper parallel programming - and you know that the future is concurrent, right?

Eric Lippert has written a cogent and compelling explanation of why arrays are rarely the right choice, and what you should do instead. It's written, naturally, from a C# perspective, but it's applicable to C++ and VB too. It boils down to this: Object Oriented Programming is the norm. Start trusting object writers. Use a class that someone else wrote and provided with your compiler, and you'll be a happier developer. And if you don't have some neurons fire over the phrase "considered harmful", here is a history lesson on that.

Kate

Friday, 17 October 2008 14:07:24 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 16 October 2008

With every year that goes by, I of course get older. But I tend to feel older in bursts that are further than a year apart. Like when I first had a student in a class of mine who was born after 1977, which is the year I started university. Or when someone asked me where to get that special .NET utility "xcopy" so they could take advantage of "xcopy deployment". (Hint: it came in very very early versions of DOS. Pre Windows.)

But it turns out some technologies are not only older than when I started in this business, they're actually older than when I was born. Video games are 50, and I am not.

The circular inset shows an oscilloscope that was hacked up to let people play "tennis".  But not like Pong, from above - this was from the side. From the CBC article:

Several weeks before the annual visitors' day in 1958, Higinbotham decided to liven things up. While reading through the instruction manual for one of the lab's analog computers, he found a description of how the machine could calculate ballistic missile trajectories.
With some minor programming modifications, he discovered that he could turn the ballistics demonstration into a manually-controlled game resembling tennis. Higinbotham had Dvorak hook up the computer to an oscilloscope, a five-inch screen used to display electric voltages, and add a pair of box-shaped controllers, each with a knob and a button.
The resultant game resembled a tennis court, as seen from the side. A horizontal line represented the court while a short vertical line in the middle was the net. Players could control the ball's direction and speed with the knob on the controller and hit it with the button.
"Tennis for Two," as it was dubbed, was a simple reworking of the analog computer's basic functions. To Higinbotham, it was no big deal.
"He didn't think there was anything new in there because he just used the circuits that were explained in the manual that came with the computer," says Peter Takacs, a physicist currently working in Brookhaven's instrumentation division. "He just took those circuits and figured out how to wire them together that would allow two people to hit a ball back and forth across the net. He didn't really think that was such an innovative thing."
Dvorak Jr. says the whole point of the game was to simply show off the capabilities of the hot new technology of the day.
"The whole idea was to show the public what a computer was, what it could do," he says. "From the perspective of society, he had no idea what he was doing."

Really cool.

Kate

Thursday, 16 October 2008 13:50:54 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 15 October 2008

Normally I read Joe Duffy's blog for the concurrency goodness. But like most people, he has opinions that range quite a bit broader. His take on "what is an architect?" is really interesting reading. It's several pages long: here are the subheads:

0. Inspire and empower people to do their best work.
1. Oversight, but not dictatorship.
2. Taste is a hard thing to measure, but is invaluable.
3. Write code and get your hands dirty.
4. The power of the dyad: know your weaknesses.
5. It's for the customer, not you.
6. Admit when you're wrong, fall on your sword, and then fix it.

Joe concludes "Being an architect, in the end, is all about helping others to succeed. If you’re a really good architect, you’ll inspire people and rub off on them. You’ll gain a certain level of respect that is unmistakable and priceless. And that, in my opinion, is far more fulfilling than anything you could accomplish on your own working in a vacuum."

You may agree or disagree about whether these leadership skills are architect skills but I find this a great summary of what I'm trying to be in my firm and how I want to relate to my developers, testers, designers, and so on. Take the time to read it through.

Kate

Wednesday, 15 October 2008 13:39:20 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 13 October 2008

Believe it or not, this code (snipped from something larger) compiles:

  unsigned int c = ( o-----o
                     |     !
                     !     !
                     !     !
                     o-----o ).area;
  assert( c == (I-----I) * (I-------I) );
  assert( ( o-------------o
            |L             \
            | L             \
            |  L             \
            |   o-------------o
            |   !             !
            !   !             !
            o   |             !
             L  |             !
              L |             !
               L|             !
                o-------------o ).volume == ( o-------------o
                                              |             !
                                              !             !
                                              !             !
                                              o-------------o ).area * int(I-------------I) );

Not only does it compile, the asserts succeed. What's more, o is not some instance of a class, and neither is I. As you might imagine, there's some bizarro stuff behind this. Templates, operator overloads, ... it's all reasonably silly and impressive at the same time. Needless to say, the ! and -- operators do not "do as the ints do" in this case.

The files you need are at http://www.xs4all.nl/~weegen/eelis/tutorial.cpp and http://www.xs4all.nl/~weegen/eelis/analogliterals.hpp. There's an explanation of sorts at http://www.xs4all.nl/~weegen/eelis/analogliterals.xhtml but my IE7 refused to load it, so I saved it on my machine and renamed .xhtml to .html. To test the code I used VS 2008, made a Win32 console app and just pasted the body of Eelis' main into my generated main, and the body of the header into an empty header file. No strange settings required and no warnings on compile.

Try it yourself!

Kate

 

Monday, 13 October 2008 07:52:20 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 10 October 2008

Well, I already knew I was an outlier. And I knew that my number of open windows was part of that eccentricity. But just how much? According to the Engineering Windows 7 blog entry on the taskbar, pretty much everyone peaks at less than 15 open windows, and most people at less than 10:

Here's my taskbar at a typical moment:

It's routinely three high. I've never gone to four high, but I have had more open than that. 40 doesn't seem unusual to me (that's 42 there) and I can find my way around in them easily enough. I am a big-time Alt-tabber of course.

Curious how the taskbar, launch pane, start menu, and so on will be different in Windows 7? Want to understand why some features are the way they are (hint: customers are all different, except in the ways they are the same)? Read the blog!

Kate

Friday, 10 October 2008 08:45:16 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 09 October 2008

The Engineering 7 blog is really something. These guys are sharing a TON of information about how they decide what will and won't be in the next version of Windows, how it will work, how they will know they're done, and so on. I enjoyed this summary of UAC issues - what they learned from Vista and what they intend to do in Windows 7. Interesting points:

  • Intuitively we all know the number of UAC prompts you see should go down over time, because once you have things installed and configured, you don't run the admin apps any more. But they also go down because you used to run old versions of apps that weren't UAC-aware (think Visual Studio 2005 and having to run it elevated most of the time, especially for ASP.NET work) but later you install a newer version that is aware and doesn't have to run elevated (Hello, Visual Studio 2008!)
  • The number of different applications that cause UAC prompts "in the wild" is down to about one-fifth of what it was when Vista first released. That's a great success for persuading software vendors to get new versions UAC-aware.
  • They plan to add information to the dialogs in Windows 7 so you will understand more clearly what you are being asked to approve.

Can't wait to get to the PDC and learn even more about what Windows 7 will have in store for us!

Kate

Thursday, 09 October 2008 08:33:27 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 08 October 2008

I know, I know, what could we possibly learn about C++ in 2008 by reading yet another interview with Bjarne? Well, as it turns out, I did learn some new things, so you can too. Like that the name was chosen to be short because some folks were calling C "old C" to distinguish it from "C with Classes" which was too long to say often. And after quite rightly disclaiming that "what would you do differently if you could do it over" is an unanswerable question, he answers among other things "I would have developed templates (key to C++ style generic programming) before multiple inheritance (not as major a feature as some people seem to consider it) and emphasized exceptions more." Wow! Or how about this quote:

If you look at some of the most successful C++ code, especially as related to general resource management, you tend to find that destructors are central to the design and indispensable. I suspect that the destructor will come to be seen as the most important individual contribution -- all else relies on combinations of language features and techniques in the support of a programming style or combinations of programming styles.

Another way of looking at C++'s legacy is that it made abstraction manageable and affordable in application areas where before people needed to program directly in machine terms, such as bits, bytes, words and addresses.

I do love destructors and deterministic destruction, can't deny it. The article is definitely worth a read!

Kate

Wednesday, 08 October 2008 08:24:43 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 07 October 2008

Greg Low, Australian RD, has recorded a four-part webcast on Speaking at Large Events such as TechEd. These are full of good advice.

My advice to those who want to speak is pretty simple: start speaking. Your user group, code camps, heck start with your dog if you can't get invited anywhere. In fact, start with your dog for rehearsals even if you do get invited somewhere. Just hearing yourself get all tangled up and lost 5 minutes into the talk will impress upon you the need to have an outline and a plan, to rehearse, and not to try to memorize every sentence. Every time you give a talk you will get better, and every time you hear one you will get better, so go to things. A lot of things.

Greg covers some nice practical details that I won't repeat - watch his videos!

Kate

Tuesday, 07 October 2008 07:58:34 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 06 October 2008

Strange Maps has, well, a strange map of the island of San Serriffe. Here's a snip of it:

Semi-colonial, indeed!

Kate

Monday, 06 October 2008 14:41:26 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 05 October 2008

We have Team Systems hooked up to our Active Directory, which is great. It knows who created a work item (or closed it, or edited it) by who is signed in. The dropdown of who to assign things to is prefilled based on who works here. I love it. But recently we removed someone from AD, because she has left the company (to go work in a business owned by one of her family, not that the reason matters to AD or VSTS.) And that led to a problem when I went to save a work item she'd created.

Of course I can fix the "Assigned To" - after all, if I want to see this work item completed, it's pointless to leave it assigned to someone who doesn't work here any more. But "Activated By" - not so much. I can't edit that field and I wouldn't want to anyway, the value has historical meaning.

So, what to do? Neno Loje explains. You change the work item definition so that once something has been validated, that is allowed as a value going forward. You might not want to use it on the Assigned To field, but I sure want it on Activated By.

Kate

Sunday, 05 October 2008 14:15:10 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 04 October 2008

I guess I haven't opened a CHM (compiled help) file in a really long time. So when I downloaded one (an installation guide) and it didn't really work properly, at first I didn't know what to do:

So, off I went searching and I found this fix. Some folks blame Vista, others say it's been that way since XP SP2, still others say it's about your browser (IE 7) not your OS. Whatever. Bill Evjen has had the fix on his blog for YEARS. I right-clicked the file, looked down at the bottom for an Unblock button, and clicked it. Presto!

I've said for a long time, an enormous benefit of the RD program is getting introduced to other RDs. Thanks Bill!

Kate

Saturday, 04 October 2008 14:36:17 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 03 October 2008
This pair of podcasts snuck onto the web over the summer. This was a single interview that's been split into two parts, both pretty large files (over a hundred meg.) I talk about C++, Vista, the marshaling library and marshal-as.net, the MFC update, and plenty of other things I've blogged about here before.

Let me know what you think!

http://www.informit.com/podcasts/episode.aspx?e=3a744e05-7893-408d-91de-d73b77ddb832

http://www.informit.com/podcasts/episode.aspx?e=fc209a80-bdd7-42b4-b555-514ce882178b

These are MP4 files. The web page bugged me to install QuickTime and I did and that's what played them. You may have your own preferences - there are download links on each page.

Kate

Friday, 03 October 2008 09:20:07 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 02 October 2008

Gizmodo provides a lovely video showing all the planes in the air over a 24 hour period. I really like watching the line between night and day move across the planet and the swarms of planes appear as their airport curfews open. It's cool!

If you like this sort of thing, also look at Earth at Night which doesn't move, but makes it night everywhere at once (by gluing together pictures taken at different times) so you can see how we tend to live on the coasts and on rivers.

This one really demonstrates how settlement happened in my corner of the planet.

Kate

Thursday, 02 October 2008 16:53:12 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 01 October 2008

At times I have to use a low bandwidth internet connection. No matter what my speed, though, I'm annoyed when I can't interact with a web site (say, scrolling down or following a link) because my browser is busy rendering some complicated chrome I don't care about, like a tree view navigation aid. Well, to be honest, I occasionally care about that chrome, just not very often.

Try these two links and see which loads faster for you:

http://msdn.microsoft.com/en-us/library/zkch586s.aspx

http://msdn.microsoft.com/en-us/library/zkch586s(loband).aspx

Even on my highspeed setup, I feel a HUGE difference between the two versions of the page. My one complaint about the low bandwidth view is that you can't see the title of the page you're on in the body itself, where it's truncated, though it appears in full in the title bar. Clicking persist low bandwith view puts you in this mode until you get yourself out of it. (The link changes to read switch off low bandwidth view.) This has the advantage that your searches and whatnot will come up faster from now on. Darn right I'm persisting low bandwidth view. I can turn it off if I want more navigation help than the breadcrumbs give me. Here's a glimpse at another page:

What are you missing when you use this view, besides the tree view? A chance to rate the page and add your own content, the collapsing zones (that I never collapse), the language filter ... everything except what you came for - the article or the explanation of the function/object/keyword you wanted to use. If you want the chrome, just turn off the low bandwidth view.

Kate

Wednesday, 01 October 2008 16:38:38 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 29 September 2008

Let's see ... 50% early bird discount from an already low price (500 for 2 days, 250 for 1, discounted to 250 and 130 for the next two weeks so act fast), a full version of Visual Studio Professional, a full version of Expression Web, the DVD set from Tech Ed 2008, and a coupon for $100 off a DevTeach registration. That's not counting the eval versions of VSTS and Expression Studio. Holy Smoke, this would be a cost effective thing to attend if you didn't even go to any sessions! But the sessions are listed, and they are good ones. Need to know how to build a real application in WPF? Use the ASP.NET AJAX extensions in your web app? Use controls and styles in Silverlight? Lock down your SQL server? This is the conference for you. Local, inexpensive, timely, ... and a bag of goodies.

Plan to be there. And that includes doing a little reading first ... these sessions don't start at "what is this Visual Studio you speak of?" so there's a resource list to get you ready to attend.

Monday, 29 September 2008 12:12:39 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 28 September 2008

Richard told me about this "get" a while back but I missed the release of the show. Soma is the senior vice president of the Developer Division at Microsoft, and leads the teams responsible for providing tools and developer platform technologies targeted at developers, designers and teams involved in software development. This includes Visual Studio for professional developers, Visual Studio Team System for software development teams, Visual Studio Express and Popfly for non-professional developers and hobbyists, and Expression Studio for designers. That's a lot of responsibility, and if you use Visual Studio then Soma's opinions matter to you. He talks to Carl and Richard about how he got to where he is now (he's been at Microsoft almost 20 years, and part of the attraction was the Seattle weather, which makes sense if you know he was in Buffalo when he took the job.) The interview is full of behind-the-scenes glimpses into how decisions get made ... a fascinating conversation. Read and enjoy!

Kate

Sunday, 28 September 2008 11:48:30 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 27 September 2008

Tim Stall wrote an interesting post about test harness code that exposes your possible multithreading bugs, and the performance costs of preventing those bugs with the C# lock keyword. And he linked to quite an old article by Mike Stall (don't ask me if there's a connection between the two, I've never met either of them) that I really liked. It buckets threading bugs according to how difficult they are to reproduce, understand, and fix. My favourite entry in the list is the last one:

10) Stuff that's provably unsolvable, but for which customers demand a solution anyways.

Been there, done that, alas no Tshirt.

Kate

Saturday, 27 September 2008 09:21:37 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 26 September 2008

The PDC site is full of announcements (and there will be more in the days to come, based on some emails I've received) so there are even more reasons to attend than before. The number one reason to come to PDC is to LEARN. Well some topics just don't fit into 75 minutes, and attending 3 different 75 minutes sessions by 3 different speakers who may or may not have co-ordinated their coverage is a strategy that might work if you're lucky, but might not work either. Enter the PDC Symposia - co-ordinated coverage of the two MUST LEARN topics this year - concurrency and cloud computing. Don't worry, you don't pay any extra or anything, just choose to attend these sessions on the last day.

The second reason to go to the PDC is to GET THE BITS. PDC has always been the place to get the fresh-out-of-source-control latest build of something that won't see beta for a long time yet. It's already been announced that those bits will include Windows 7 and will come on an external drive, not a big stack of DVDs. Cool!

The third reason to go to the PDC is to MEET PEOPLE. An utterly astonishing array of executives and wonder-brains are giving the keynotes. As well, the speakers are essentially all internal Microsoft people who've been working to create the technologies they're showing you. And the attendees are a cross section of developers and architects who really care about staying ahead of the curve and learning what's coming before it comes. A single lunch with any of these folks could change your life, or at least your job.

Register while you can! And if you see me there, say hi!

Kate

Friday, 26 September 2008 09:13:49 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 25 September 2008

Steve, a former C++ guy and current PCP guy, tells stories very well... just three of the reasons I like him. He blogs very infrequently, but when he has an update it's worth reading. This one is funny and informative. Plus, it features links to videos of presentations about the Parallel Computing Initiative. I've linked in the past to videos in English that are hosted on a page in French, so I know you can all handle it. Consider it Canadian Content even though the videos are from Paris. Go, read, watch, you'll enjoy it.

Kate

Thursday, 25 September 2008 08:47:15 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 24 September 2008

Billy is one of my heroes. He knows how to solve problem with software and he knows how to speak his mind. Here he is talking about WPF and Silverlight - shiny new ways of making applications, that work best in the hands of someone who's been making applications a long time and knows a thing or two about users and user interfaces. If you missed him on DNR TV, here's that episode. This one lets you see what he's talking about - highly recommended.

Kate

Wednesday, 24 September 2008 12:54:45 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 23 September 2008

I love reading Internet histories. Some say it's because I was around for most of it :-) but not so! The Internet was 20 years old when I started using it almost 20 years ago. Here's a nice summary that starts with the idea of packet switching and goes through iTunes, PayPal, MySpace and YouTube. It's a good read.

Kate

Tuesday, 23 September 2008 12:11:50 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 22 September 2008

FreeRice is a strange little game that asks you what words mean. Does rejuvenate mean bewilder, pierce, evade, or restore? As you play, it assigns you a score, the higher the better, and also tracks the number of grains of rice that will be donated to the United Nations' World Food Program.

If you get a question right, you are asked harder and harder questions. The first time I tried this, I got the first 25 words in a row correct and then missed flagitious. I noodled around for a while and my score was around 49. They say over 48 is rare. Months later, with some time to kill online, I tried it again and my score topped out around 53. Wow.

They say "FreeRice has generated enough rice to feed more than two million people since it started in October 2007" although I guess that means two million people one meal each, it's still pretty impressive. And they've added subjects like Math and Chemical Symbols, though I haven't tried those. Give it a whirl, it's fun!

Kate

Monday, 22 September 2008 09:24:02 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 21 September 2008

One of the most mind-clearing features of C++, C#, VB, and their ilk are exceptions. Rather than constantly checking a cascading series of return values, looking for false, -1, null, and whatever other error-signalling values you made up on the day you were writing the code, you can write relatively clean and neat code knowing that catastrophic errors (we have no more memory, the file you just chose from a list no longer exists, apparently I'm not allowed to write to the hard drive at all) will be handled. In C++, the "unwinding the stack" aspect of exceptions, with the memory cleanup and destructor-calling done for you, is a big part of writing clean code that is also memory-leak-free.

But have you ever thought about what happens to half-constructed things when an exception goes off? That is, when the constructor throws an exception before its work is done? I have had people tell me "oh simple, never throw an exception in a constructor." Wrong! A major motivation for the existence of exceptions is the existence of methods (like constructors) that don't have a return value to check. The rule you're half-remembering is "never throw an exception in a destructor" and the reason for that is to prevent weirdness when an exception triggers an unwinding and some destructors and then one of them throws another exception.

So what does happen to a half constructed object when an exception is thrown in the constructor? Who better to ask than Herb Sutter? He shows how C++, C#, and Java all answer this question... and his commenters toss in some other languages too.

Kate

Sunday, 21 September 2008 08:17:44 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 19 September 2008

Microsoft Canada is trying something different this fall and winter. A paid conference featuring material from this year's TechEd USA, delivered by excellent local speakers and coming to a city near you. Some cities have two day events, others a single day.

  • Toronto, October 29th and 30th
  • Montreal, November 6th and 7th
  • Ottawa, November 27th
  • Winnipeg, December 4th
  • Calgary, December 10th and 11th
  • Halifax, December 17th
  • Vancouver, January 21st and 22nd

What will the talks be like? What will it cost? Will there be cool swag? The web site doesn't really say right now, but I've been told the talks will be actual TechEd talks, the speakers will be industry leaders (my friends and colleagues, maybe me if we can make the dates work), and there will be 5 or so tracks, meaning over 30 sessions, so something for everybody. The early bird discounts will be substantial, so watch that web site for updates!

Kate

Friday, 19 September 2008 16:54:42 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 16 September 2008

Here’s a free and useful add on for Office 2007. It enables “save as PDF” from a variety of Office products. Here’s what Save As looks like in Word 2007 now that I have it installed:

No muss, no fuss. No products that make my computer hang :-).

Kate

Tuesday, 16 September 2008 07:23:38 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 14 September 2008

This year we FINALLY get a PDC. I have been looking forward to it for a long time, but booked my attendance and my flights during one of this year’s blogging hiatuses (hiati?). If you are responsible for any kind of strategy or planning, if you are starting a project that will take several years to finish and you want to use the latest technology while you’re building it, or if you just love making software and can’t wait to see what’s next, then the PDC is for you.

http://www.microsoftpdc.com/

It’s the last week of October, in Los Angeles (the only thing about it I don’t really like) and it will just cram your brain with information you actually can’t use to write code quite yet -- but that you really need to plan your own roadmap over the next few years. If you want to know something about a product that is already shipped (say, Visual Studio 2008) then this is not the conference for you. Even if your area of interest is software that is mostly written, maybe has a CTP out already, and will be released during 2008, then again, PDC is not really going to help you. PDC is about stuff that is just starting now. PDC is about getting a big headstart on those who waited till a product was released or a public beta was available. Here’s the list using their own keywords (the numbers are how many sessions are on that topic)

Ad Platform [2]
ADO.NET [3]
ASP.NET [9]
Cloud Services [27]
Dynamics CRM [3]
Entity Framework [3]
Expression [2]
HPC [1]
Hyper-V [2]
Identity [8]
IIS [2]
Internet Explorer [2]
Languages [8]
LINQ [4]
Live Mesh [5]
Live Platform [11]
Office [4]
Oslo [6]
Parallelism [7]
SharePoint [3]
Silverlight [11]
SQL Server [14]
SQL Server Data Services [6]
Sync Framework [2]
TFS [3]
Unified Communications [3]
Velocity [1]
Virtual Earth [1]
Visual Studio [13]
VSTS [6]
WCF [6]
WF [8]
Windows 7 [5]
Windows Home Server [2]
Windows Mobile [2]
Windows Server [1]
WMI [1]
WPF [5]
XNA [1]

Wow - 27 sessions on cloud stuff? Pay attention.

I also chose a random session so you could get an idea of the level of conversation PDC is for:

Unified Communications: Futures

Kyle Marsh, Chris Mayo

In this session we unveil the future of Microsoft Unified Communications (UC) technologies. Be among the first to see the UC roadmap, watch the new features in action, and walk though the code that makes it all possible. Come see how you can deliver breakthrough applications by embedding rich presence, build click-to-call features including voice and video, create communication workflows using speech and IM, and integrate Microsoft Exchange 2007 features and data.

Tags: Advanced, Unified Communications  

This is one of the few conferences in the world that I get myself to (that's right, my own money) as an attendee. I'm not there to speak, work a booth, or be on a panel. I'm there to learn, and you should be too. See you there!

Kate

Sunday, 14 September 2008 11:39:29 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 13 September 2008

Or put another way, is VB just C# without semi colons? Well, yes and no. If you work in the big wide world of many different programming languages, frameworks, libraries, and operating systems then C# and VB are so close as to be almost indistinguishable. They both have great support from Visual Studio, they both produce managed code that runs on the CLR, they call the same framework functions, they have keywords for the same CLR concepts, and they both have a community of support, sample code, tutorials and the like. But those communities aren’t twinned – some samples are available only in VB, and others only in C#. For historical reasons there are a lot of C# programmers inside Microsoft, and perhaps that’s why VB samples can be a bit thin on the ground.

This less-than-100%-overlap between the samples, tutorials, and so on for the two languages results in people who are proficient in one language trying to read (or worse, write) in the other. Sometimes a great C# developer will be asked "where’s your VB sample? Quick, translate your C# one right away!". Other times a great VB developer will be trying to write their own VB code while reading samples or tutorials written in C#. It can go in the other directions, too.

But although these two languages have a great deal in common, they are different, and in more than just syntax. There are features in each that aren’t in the other. There are natural idioms, too. Idioms are a way of writing things that are natural to one language or identifiably belong to one language. Choosing an example not from the VB/C# world, but from C++ or C, it used to be just so normal to write

if (p=SomeFuncThatMightReturnNull())
{
//do something that relies on p not being null
}

That’s C++, and a deliberate single equals sign. I am assigning p the return value from the function. Then I am testing that value. (Quibble: I am testing what the = operator returns, which is the value just assigned for all well written = operators.) If it’s not null, we’ll do the stuff in the braces. Sometimes I used to come across this instead:

p=SomeFuncThatMightReturnNull();
if (p)
{
//do something that relies on p not being null
}

Or even

p=SomeFuncThatMightReturnNull();
if (p != null)
{
//do something that relies on p not being null
}

Now these other ways of doing it aren’t wrong, they will compile and work, but they demonstrate a lack of familiarity with C++ idioms, with a C++ way of thinking. They are usually written by people who aren’t very comfortable with pointers.

Similarly, in VB, I have seen more than once this sort of thing:

        Dim retval As Boolean = False
        If x > y Then
            retval = True
        Else
            retval = False
        End If
        Return retval

Again, that’s not wrong exactly, but it’s not what I like to write. I prefer just:

        Return (x > y)

Sometimes people say I write C++ in VB, because that's a very C++ way of writing things. But I find it not just easier to read -- it's less bug-prone. (Copy and paste errors like having True in both clauses, for example, will make you crazy.) I know that it’s kind of a C++-ish way to express myself, but it feels natural to me and it works. People who are less comfortable working with Booleans tend to prefer the first, more verbose way. They can see the whole thing laid out for them. It’s not wrong, just different.

Well, it turns out those who try to write VB when they’re proficient in C# are likely to run into a lot of differences in thinking and expression when they take on that task. It might be syntax tripups, missing the use of a helpful VB feature that isn’t in C#, or just writing code that doesn’t use the VB idioms. Kathleen Dollard has amassed a huge list (77 at the moment) of things you should know if you want to write VB code. Required reading for C# people who have to write VB, entertaining for those who like VB, and what's more, plenty of experienced VB developers could learn a thing or two from it (I did.)

Kate

Saturday, 13 September 2008 11:26:18 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 12 September 2008

Vista gets a lot of bad press it doesn’t really deserve. For example, it crashes way less than XP for me. Some applications behaved oddly at first (primarily because of UAC and Virtualization) but I have either learned workarounds, such as running the app elevated, or upgraded or replaced the apps that were causing trouble. The slow file copy thing drove me insane, but SP1 took care of that. I really have very few complaints left about my computer, and the ones I have are aimed at specific applications (yeah, Outlook 2007, I am looking at you when I say that, and Adobe, don’t think not meeting my eyes will keep you out of my bad books) rather than the operating system.

Still, who wouldn’t want to make their operating system run faster and smoother? Here are some helpful thoughts and guides:

Windows Vista Performance and Tuning. A downloadable paper from Microsoft. Simple stuff here like choosing the right power management plan, using ReadyBoost, tweaking your search settings, and so on. Worth a read.

Vista Annoyances Resolved. Despite being annoyingly spread over 9 pages (see what taking ads does to you?) it has some good stuff. You’ll see explanations of SuperFetch, ReadyBoost, restore points, and more.

Roundtable with Mark Russinovich. An upcoming special roundtable on Vista Performance. Send your questions in ahead of time, then tune in for answers.

Learn a little, enjoy your daily computing life more.

Kate

Friday, 12 September 2008 19:21:46 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 11 September 2008

The Tech Ed Online folks have kicked off a Women in Technology page. They’re aggregating blogs, videos, news, profiles and more. Take a look around – I’ve added it to my favourites.

Kate

Thursday, 11 September 2008 10:23:01 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 10 September 2008

Take a look at this map from Jeff LaPorte:

I wonder if this shows some sort of era-of-adoption effect, where folks in the US had widespread Internet access so they got started with AIM and never switched, then Canada and Australia picked up Messenger, and other places see a popularity of even more recent clients? Or perhaps it’s an artefact involving what kind of people use a messenging-interop solution? Whatever the mechanism, I’m a typical Canadian I guess since I use Messenger.

Kate

Wednesday, 10 September 2008 10:19:43 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 08 September 2008

Check out http://www.easyduplicatefinder.com/  - it has tracked down all the identical demos, powerpoints etc all over my C drive in quite a short time. I haven’t let it do the deleting yet, but the finding is worth a lot to me (I can delete for myself once they’re found.) Three gig of duplicates and that’s without looking on the networked shares where I store things when I’m done!

Kate

Monday, 08 September 2008 10:05:35 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 06 September 2008

Imagine you have a bug that happens only in production. You connect to the production server and do a whole pile of exploring, and now you think you know what you need to tweak on your dev box to reproduce the problem and get started on fixing it. Or perhaps you are half way through figuring something out on your own machine and you need to hand over to another developer. Maybe you just want to switch to your laptop because you’re leaving the office. There are many reasons why you might want to copy breakpoints between computers. As you may know, they are kept in a .SUO file (Solution User Options I believe) in your solution folder.

But heavens above, do not try to copy that file from one machine to another! As John Robbins says:

The .SUO file is the bane of your existence. Nearly all the problems you encounter with Visual Studio are the result of a corrupt .SUO file. Sadly, it seems all it takes to corrupt the .SUO file is your heart beating. In other words, whenever you have Visual Studio crash, refuse to debug, or behave strangely it's the .SUO file's fault. Whenever anyone asks me about strange Visual Studio behavior, my instantaneous response is "Delete the .SUO!"

So John took care of this with his own add-in. You can save a set of breakpoints into a little file. You can then move the file between machines and use it to set all those same breakpoints on another machine. Or, probably even more fun, you can set aside the 20-some breakpoints, tracepoints, conditionals and so on that you painstakingly set up for bug A, save them and then clear them all, set different ones for the drop-everything-urgent bug B, and then when B is fixed you can get all your old breakpoints back and return to working on A. John is giving the add-in away, it works for both native and managed code, so go on, get it now.

Kate

Saturday, 06 September 2008 10:01:09 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 05 September 2008

One of the persistent myths of managed code is that you can’t have a memory leak if you’re a C# or VB developer. You really can. In this intriguing post, Sasha Goldshtein asks "Is it a managed or a native memory leak?" and then shows you some clues to lead you towards an answer.

Kate

Friday, 05 September 2008 09:58:05 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 04 September 2008

While I was at Tech Ed Developers (US) this summer, I spoke with Craig Shoemaker for his Pixel8 podcast. We talk about UI, and Vista, and the usual things. I have some distinguished company in this interview but if you don’t want to listen to Ted Neward you can zip ahead to the 18 minute mark for me.

Kate

Thursday, 04 September 2008 09:56:06 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 03 September 2008

In case you were worried that Microsoft efforts like the Parallel Framework (PFX) would be aimed only at managed developers, leaving native developers sitting at the little kids table again, take a look at the Parallel Programming in Native Code blog. It hasn’t been updated terribly often, but perhaps some feedback would encourage them (or is it just Rick?) to keep it current :-). The one downer: "this is technology we're currently exploring and I don't have any ship or CTP dates to announce." Stay tuned, I suppose.

Kate

Wednesday, 03 September 2008 09:52:03 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 02 September 2008

Tech Ed Developers (Europe) is spotlighting a number of the top sessions from last year, free for anyone to watch. Mark Russinovich (on Wikipedia, his blog) knows more about the internals of Windows than anyone else who’s allowed out in public, and in this session, The Case of the Unexplained... (rated 5 stars out of 5 by attendees), he covers various mystery bugs and how he tracked them down. I’m slightly disappointed that some of the stories ended "so I logged a bug with that team" – I would have loved it if these were all fix-your-config stories, but still to see the techniques is very cool, and if your own code is causing the mystery CPU spike or resource leak, you will really benefit from the tools and approaches Mark shows. Sure, it was at the IT Pro half of Tech Ed, but developers need to know this stuff too!

I would like this stage someday. It's the Barcelona keynote stage, used for wildly popular breakouts also.

Kate

Tuesday, 02 September 2008 09:41:47 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 02 July 2008

I enjoyed meeting some friends from the C++ team at Tech Ed and taking a turn in the booth. Li Shao and Marian Luparu were there when I was, and plenty of customers came by. Now you can read a nice summary of the customer conversations on the C++ team blog. The comments keep the conversation going. They are reading, so go ahead and join in!

Kate

Wednesday, 02 July 2008 12:21:01 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 01 July 2008

If you have some native code that you have sweated long and hard to create, and now you want to make a shiny new user interface using managed code (WPF probably) or expose the engine to web services (WCF probably) or the like, I hope you know how to do that. Most of the interop discussion out there is focused on that direction. But what if you have a native application and you want to use some cool capabilities from the .NET Framework? Most people really only know how to do it through COM. Your native code can pretend the .NET object is a COM component. But there are other options.

I've referred before to reverse P/Invoke - this is when a .NET delegate is made into a native callback function and handed to native code. It works, but in a way it's still managed-calling-native since the managed code has to start things off by making the delegate and handing it over.

There is a third way. It's a little complicated, but I bet it's faster performing than COM interop, and parts of it could be automated. Essentially, you wrap a C++/CLI managed class around some C# or VB managed class, and then you wrap a native class around that using gcroot<>. It's all explained with diagrams and samples by Sasha Goldshtein. Take a look!

Kate

Tuesday, 01 July 2008 11:24:58 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 30 June 2008

Justin Etheredge made an interesting point about code readability. He asks us to compare these two functions:

public static int GetNextSize(int i)
  {
    //multiply it by four and make sure it is positive
    return i > 0 ? i << 2 : ~(i << 2) + 1;
  }
 
public static int GetNextSize(int i)
  {
    return Math.Abs(i * 4);  
  }

They do the same thing. One might be faster to execute if there was no such thing as an optimizer. But bit twiddling is notoriously hard to read and maintain. In the comments you can see people saying "don't those two actually return different values?" And that's really his point. Human beings have to read your code and maintain it. They have to understand it. And if you pre-optimize, if you decide that bit shifting is faster than multiplying, you make like harder for everyone after you. Since that might include you yourself, a few years from now, think twice about it. Write readable code. Let optimizers optimize. People time is way more expensive than CPU time.

Some folks think this is a good rule for staff, but that consultants who charge by the hour should go with the clever code. Generally they have two reasons for this. First, they worry that if they write the simple code, someone will look at it and ask "how much an hour did I pay for that!?!?!".  I don't fuss about that, I just think "one dollar for hitting it with a hammer...". Second, they look forward to being brought back every time any changes need to be made to that code, since they're the only ones who understand it. I think that's shortsighted. Once the client realizes you've done that, you'll never get to work on any new projects for them. I'd rather work on a steady stream of new stuff than be stuck bugfixing old stuff for people who resent that I tricked them with my cleverness. And when I do have bugfixing to do, I appreciate being able to read what I wrote :-).

Kate

Monday, 30 June 2008 09:57:31 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 29 June 2008

Lately some people I know have been revisiting the "why are so many Microsoft samples in C#" question. They are VB programmers, and they're just not feeling the love. Man, I know how that feels :-). Several recommendations of Instant VB reminded me that I had been meaning to try Instant C++. This is a $139 product that converts C# to C++/CLI (there is also a version to convert VB to C++.) There's a demo available, and it serves as an excellent example of what is both good and bad about code converters. Here's a comparison of the source and converted code for a demo I use to illustrate UAC in Vista programming:

Sure, it's boring as all get-out to change string to System::String^, though I would probably have done a using for the namespace and just said String^. (In fact, there's a using namespace System; in there already, but the converter doesn't seem to take advantage of it by omitting namespaces.) But there is so much here I don't like. First, I'm a String^ s person, not a String ^s person. Then there's how it handles the using. Hello? Stack semantics anyone? No? And where's my project file? I pointed this at a .csproj file, but I don't seem to get a .vcproj file in return, so I'll need to create a project and add the converted code into it. That's probably ok if I just want to convert sample code to paste into my real project, slightly less ok if I wanted to convert the sample project and test it.

Still, if you're using a relatively new technology, and you need to get to it from C++/CLI because you're writing a wrapper for legacy code or the like, and you get SOOOOO BOOOORED going through samples changing . to :: and new to gcnew and adding ^, then this is a cool tool to save you hours of that kind of thing. Just don't skip the step where you actually make it read like proper C++ code.

Kate

 

Sunday, 29 June 2008 09:38:12 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 28 June 2008

Because I graduated from the Faculty of Engineering at the University of Waterloo, I got an email about their participation in Go Eng Girl!, a province-wide initiative to show girls in Grades 7 through 10 what engineering is all about. If Waterloo isn't the closest university to you, go ahead and see if something nearer is also participating. I suspect, though, that many of us would like our daughters to take engineering at Waterloo if they're to take it anywhere - the reputation is excellent. (Remain calm if you support another institution; I also have a graduate engineering degree from Toronto and have worked alongside excellent engineers from a variety of universities, so let's not go there. And no, I haven't forgotten the weather in Waterloo.)

Looks like you can register online just before school starts again in the fall. Bookmark the site and check it out closer to the date.

Kate

Saturday, 28 June 2008 21:59:19 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 27 June 2008

Seriously, once you have installed SP1 of Vista, if you have any more troubles with it, you can get technical support for free.

Free unlimited installation and compatibility support is available for Windows Vista, but only for Service Pack 1 (SP1). This support for SP1 is valid until March 18, 2009. Chat and e-mail support is available only in the United States and Canada.

(Phone support I guess is available worldwide.)

If something still won't work for you on Vista, drop them an email or open a chat session, and get it sorted out. It's free, so why not?

Kate

Friday, 27 June 2008 21:52:02 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 26 June 2008

This delightful article by Maria Blees slipped by me during my most recent blogging hiatus. It presents a handy framework to run unit tests on native code, some macros to hook you into VSTS code coverage, and some excellent guidance on the reality of testing and refactoring. It also recommends some nice resources. (How fun is it to read a plea (in a pdf she recommends) for designing to be testable and not to put real code in your event handlers, then realize it's from six years ago?) If you write C++ code, go read this article now. It has plenty of real meat in it, and concludes with this paragraph:

My goal has been to show that unit testing native C++ can be easy, fun, and you can get started right now. To give you an idea of the power of WinUnit, take a look through the TestWinUnit project, where I used WinUnit to test itself. Those examples are completely real world and will show you advanced usage you can apply to your own unit tests. If you've been struggling with your native C++ unit testing, WinUnit makes it easy—and any time you can make testing easy, you're far more likely to actually do it.

Mission accomplished, Maria!

Kate

Thursday, 26 June 2008 21:44:07 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 25 June 2008

Before Vista, you could right-click a shortcut, executable, or whatnot and choose Run As ... to run that item as another user. 99 44/100 of the time you wanted to run it as your administrative account, if you were one of the 3 people on the planet who had an administrative account. Occasionally, you were borrowing someone's computer and wanted to run something that relied on Windows integrated security, for which you wanted to be yourself. And more relevantly for me, you might want to demonstrate how Windows integrated security worked, say by having 3 or 4 browsers open that were all authenticated (to Windows itself) as different users.

So if any of that rings a bell for you, you want ShellRunAs. It's free, it's from Microsoft, and it works on Vista.

Kate

Wednesday, 25 June 2008 21:31:10 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 24 June 2008

P/Invoke (aka DllImport) signatures are not the world's most fun things to create. You start with a native declaration, and then hand-map native types to the equivalent (you hope) managed types. If at all possible, you head to www.pinvoke.net and look up the API you are calling and paste in whatever some kind soul put on the wiki. If not, well you have some mechanical work to do.

But now the Interop team has a little tool for you! Look up the API you want, choose a language, click the Generate button and -tada!- your declaration is ready to be copied and pasted. (Even has doc comments explaining the params.) Not calling a well-known API (maybe it's your own code from a native project?) No problem, paste in your native C++ signature and translate. Need to go the other way around (what native signature corresponds to a managed one?) No problem.

Sweet. The code it generates isn't pretty (for example it doesn't add any using/Imports statements, so everything gets the full dotted name every time, and everything is explicitly declared) but then again, who reads generated code? Stick a comment in front of it saying you generated it and leave it alone. Even if it needs a little hand tweaking now and again (and I honestly don't know whether it does or not) it will still save a TON of time. It's on CodePlex, so go get it.

Kate

ps: The list of APIs is in a XML file, and I noticed the Vista-only ones I tried (restart and recovery related mostly) weren't found, so if you wanted to make a contribution to the project...

Tuesday, 24 June 2008 19:56:13 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 22 June 2008

So imagine you have some managed code, and it calls some other managed code, and that lower level code tries to do something that requires a certain level of code access security. Maybe it wants to write to the files system, or open a network connection, for example. You probably know that there is a stack walk to make sure that everyone has the appropriate permissions. But what if that stack includes some native entries? Managed code called native code (maybe with P/Invoke; maybe with IJW-style C++ interop) and then the native code called managed code (probably with COM interop though there is also "reverse P/Invoke" I suppose. What happens then? Shawn Farkas knows. The whole blog is good reading if Code Access Security and the way the runtime actually works are things you should know more about, but haven't investigated. Bite size pieces of intruiging questions, along with definitive answers. Nice.

Kate

Sunday, 22 June 2008 13:54:08 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 20 June 2008

Well, to be honest, the BBC probably didn't sit down and say "We hear Herb Sutter and the gang are going to show Bill Gates all about their plans for lambda functions in C++0x, we have got to get on a plane and capture footage!" They were probably like everyone else "blah blah retiring blah blah career retrospective blah blah dig out those embarrassing old photos" but they happened to capture this meeting. And I actually quite liked the entire episode, really. It's an hour long, stuck up on YouTube as 6 ten-minute segments and a 6 minute one (As each ends you'll get links to the next.) The review meeting with the C++ team gets splonked in repeatedly in between the stuff you've heard a million times about the founding and the dropping out and the early big sales and so on. But there are things I hadn't heard, like just when that picture of everyone looking impossibly young, geeky, and hairy was taken, or how they re-enacted it years later. It's an entertaining and informative recap.

I spotted Herb, Soma, Bill Dunlap, and Ronald Laeremans in the meeting. Any sharper-eyed people who can provide more names?

Kate

Friday, 20 June 2008 22:29:37 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 19 June 2008

Jim Bolla has a list of questions to ask someone you're thinking of working for. Some of them are just kind of warmups to get everyone in the mood, and honestly I would expect the employer to volunteer stuff like "what our organization does" and "how IT helps us do that more effectively" in the little speechy bit at the beginning. But absolutely, if you get to the "do you have any questions" part and you still aren't clear on what the company does, it would be very wise to ask. After that we get into some really good stuff. If you're unfortunate enough to be interviewed by HR you may not be able to push hard on their source control or continuous integration strategy, but you will want to. These are the details that add up to whether you will like the job or not. I know because I come in to mentor these people when they are unhappy and unproductive, and these are the things I end up telling them to change :-).

Kate

Thursday, 19 June 2008 22:18:03 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 18 June 2008

Recently, a young man who has just completed his post secondary education (programming etc) asked me for help connecting to local communities. He's looking for work and he knows from experience that networking and connections are vital. But out of the college atmosphere, it's not always clear where to find people. I suggested user groups, of course. For those of you who live vaguely north-and-east of Toronto, as I do, I suggest:

  • The East of Toronto .NET Users Group. I founded it because I didn't like driving all the way to Mississauga for user group meetings. Chris Dufour runs it brilliantly. Expect speakers from Microsoft, INETA speakers from all over North America, me once or twice a year, plus pizza for everyone and door prizes for a handful of folks each meeting. Meetings are generally in Oshawa or Whitby.
  • Durham Personal Computer User's Club. More consumer focused than developer, but industry speakers do come and you will meet geeky people in the area. I recognize several names on the speaker list as possible employers of new graduates. They meet in Courtice.
  • The Kawartha section of CIPS. Enterprise focused in many cases, IT Pro material as well as developers, and excellent networking opportunities. Meetings are generally in Peterborough and once a year (in January) they specifically hold a meeting for upcoming graduates to talk about employment topics.

It's quite likely that there are Java or PHP or Ruby user groups nearby; if you know of any please leave a comment. Unfortunately most groups suspend meetings for the summers, so it may be a while until they are meeting again. Still, meeting other people is the best way to find a job you will love. Remember, when someone is looking to hire, they aren't doing you a favour - they're meeting their own needs. They will count themselves lucky they met you, or were introduced to you.

Kate

Wednesday, 18 June 2008 22:09:47 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 16 June 2008

So you have your app on Vista now and it's working great. It needs to elevate maybe? Or part of it does? And do you cringe a little when you see that An Unidentified Program Wants Access To Your Computer super-scary version of the UAC consent prompt? Would you like to stop being called Unidentified Publisher? Well then you need to sign your application. But how do you do that? How much does it cost? Isn't it hard?

I seem to only have questions in this particular post. Well John Robbins has answers. Check it out. Try it. Let me know if it worked for you.

Kate

Monday, 16 June 2008 23:47:47 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 15 June 2008

This fall there will be a PDC. Yay! What will it be about? Some hints are starting to emerge. I predict you will hear the word Cloud a lot. I predict things I blog about pretty regularly will get some serious coverage. I predict I will be there. That one's a sure bet actually ... I'm registered and everything.

http://microsoftpdc.com/

Yeah, I know, LA again, but hey! It's the PDC! How bad can that be?

Kate

Sunday, 15 June 2008 23:35:01 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 11 June 2008

If you've ever watched Star Trek: The Original Series you know it had a trope or a meme where an "away team" would beam down to the planet and suddenly one of them would be killed. Usually vapourized or dragged off by a yeti or somesuch. And as my four year old once said to me "Red people fall down. Not red people don't fall down." This is also known as the redshirt phenomenon. To this day, when I see three main characters (on any show) plus some guy we've never seen before, someone is sure to call that guy out as a red shirt just as the suspenseful music starts to rise.

Well, Matt Bailey has run the math. Are red-shirted crewmen more likely to die than yellow or blue shirts? Indubitably. But - is it good news or bad news, redshirt-wise, if the episode also features what I've always referred to as Kirk putting his boots on, though strictly speaking he does that after the plot point Matt refers to as "meeting" alien women. See how some solid data analysis and well chosen visuals can truly illustrate the redshirt phenomenon on Star Trek, at least for TOS. The powerpoints alone are worth the click.

Kate

Wednesday, 11 June 2008 18:53:20 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 10 June 2008

Have you seen the Deep Zoom example with the Hard Rock Cafe artifacts? It's pretty darn cool. If you don't have Silverlight and would like to see why it's cool, there's a video on the Mix blog. But I love the zooming into Virtual Earth example I was just sent. It's a CodePlex project, so you can be part of it. It can take a while to load so be patient. I showed it to someone who said that Google Earth did that, but requires downloading and installing an application. If you already have Silverlight, you don't need anything else to use this. I like that.

Kate

Tuesday, 10 June 2008 18:43:49 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 09 June 2008

I've been carrying this link around for a while and it seems like a good time to share it. Rico Mariani knows a LOT about performance and why it's important. And he knows that many of us no longer care. We trust optimizers and runtimes and frameworks and auto-caches and such to take care of things for us. Sometimes, we're right to do that. Other times, we're not. Thinking about games will naturally make you think about performance.

Kate

Monday, 09 June 2008 18:24:50 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 06 June 2008

In addition to the talks with C++ in the title (3 of them) and with C++ or a related word in the abstract (3 more) I listed in an earlier posting, I spotted this in a Tech Ed deck:

Heh. That sure isn't C#. What talk is it?

MBL302 Building Windows Mobile Applications That Work with Windows Vista Sync Center

The new Sync Center in Windows Vista will become the hub for all data synchronization between the PC, Mobile Devices, and online services. Take a closer look at the development framework, as well as the end-user experience that Sync Center helps create. This session dives into the code you need to write in order to plug your application into the Sync Center user interface. If you're writing an application for Windows today that has any synchronization components, you should not miss this session.
 
The speaker has a blog entry that states his pro-C++, pro-COM position unambiguously:
This is easy, this is Windows software development like it has been for at least 10 years. It is well defined, well known and well supported...go and learn C++ and COM, it is how many of the Windows Vista features are exposed to developers and with good reason. If you are not prepared to learn how to program your computer then you should question why you are in the software development business.
I think easy might be an overstatement, but I do certainly agree that "old style" programming techniques still have real value in the Vista universe. Keep your skills sharp!
 
Kate
 
Friday, 06 June 2008 09:20:52 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 05 June 2008

How many C++ talks are there at Tech Ed this year? Well if you just run your eye down the titles, you'll see these:

MBL202 Maximizing the Usability and Compatibility of Your Mobile Microsoft Visual C++ Application

This session is targeted towards native (C++) developers. The next version of Windows Mobile will have a radical new look, with lots of new common controls and UI capabilities. This session helps you understand what you can do today to minimize backward compatibility issues. We also share many tips and best practices for improving the usability and overall quality of your mobile applications.

TLA327 Parallelize Your Microsoft Visual C++ Applications with the Concurrency Runtime

Introducing concurrency into native Visual C++ applications has long been the domain of true experts and gurus. Yet, as the hardware industry shifts toward multi-core and manycore processors, all developers will need to be able to write robust and scalable parallel applications. As part of its work on Visual C++ and Visual Studio, the Parallel Computing Platform team is building a key set of technologies that will enable the development of such applications. In this talk, we explore libraries for expressing concurrency, a set of messaging APIs that allow developers to consistently build parallel applications that are robust and resilient, and a shared user mode runtime for scheduling and for coordinating system resources. Come learn about these exciting new technologies that will help bring concurrency to the masses.

TLA403 Microsoft Visual C++ 2008 for Unrepentant C++ Developers

Visual C++ 2008 is packed full of changes for those who prefer the C++ language syntax and power. This session covers STL/CLR, the new extensible marshalling library, and changes coming in the C++ standard, specifically TR1. If templates don’t scare you, Boost has intrigued you, and you’re the one everyone turns to for mixing managed and native code, this session is for you.

But there are others, they just don't have C++ in the session title.

TLA321 Microsoft Visual Studio 2008 IDE Tips and Tricks

Harness the power of the 2008 IDE using new tips and tricks used by top Microsoft MVP developers and Microsoft employees. We look at new keyboard shortcuts, new options, the powerful "Quick Command" system, macros, tweaking IDE performance, and more that will make any developer using Visual Studio instantly more productive. The entire session is hands-on inside the IDE and applicable to any language, including Microsoft Visual Basic, Visual C#, and Visual C++. If you've been using Microsoft Visual Studio 2005 or have never touched Visual Studio, you're guaranteed to walk away a VS power user.

WIN312 Windows Presentation Foundation and Legacy Code

Yes, legacy (MFC/Win32) applications can interoperate with a Windows Presentation Foundation (WPF) user interface. Companies that have large Microsoft Visual C++ codebases can modernize their legacy applications by giving them a contemporary user interface. They can do this without having to rewrite the core of their codebase. This talk presents "best practices" for how to modify an application so that the native code operates correctly with a new WPF-based managed user interface. The talk covers such questions as "Can MFC applications move to use WPF," "Does it make more sense to rewrite or upgrade the UI," and "How do you design an interop solution between MFC/Win32 and WPF?” As the talk unfolds, it includes a number of "do's" as well as "don'ts."

TLA326 MFC Updates for Microsoft Visual Studio 2008 and Beyond

This session demonstrates the new features added to MFC in Visual Studio 2008, including support for Windows Vista Common Dialogs, Vista Common Controls, the 2007 Microsoft Office system look and feel (including support for an Office Ribbon-style interface), Office and Visual Studio-style Docking Toolbars and Tabbed Documents.


If you're here and you missed one of these, grab the slides on CommNet and see if you can find the speakers on site. If you didn't come to Tech Ed this year, consider ordering the DVD of all the sessions.

Kate

(note to self: add "C++" to abstract of any future MFC talk I deliver :-).)

 

 

 

Thursday, 05 June 2008 09:05:40 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 31 January 2008

The keynotes for SD West have been announced. Can you guess which title got the biggest reaction from me?

  • Agility at Scale: Applying Agile Software Development Techniques on Real-World Projects
  • Beautiful Code
  • Is Agile Really Working for You?
  • Object-Oriented Programming and Generic Programming and What Else?
  • Parallel or Perish!! - Are you Ready?

The abstract for the last one starts, "A software revolution is underway, triggered by the shift to multi-core hardware architectures. " It sure is!

Kate

 

Thursday, 31 January 2008 16:20:21 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 30 January 2008

Daniel Moth alerts us that a new icon has been added to System.Drawing.SystemIcons in SP1 of the .NET Framework 2.0. It's the shield - the one you put on a button by sending a BCM_SETSHIELD message with true as a parameter. Now there's another way to put the shield on things and alert people that what they are about to do will trigger a UAC prompt. Cool!

Kate

Wednesday, 30 January 2008 12:00:44 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 25 January 2008

Larry O’Brien continues his musings on what makes a good developer and a bad one. Now he’s bringing methodology and your code base into the mix. You just have to read it, that’s all.  Best quote: “To me, a good programmer is one who contributes to the practices that maintain a silver codebase -- no matter how quickly they write code! Bad programmers are those who don't care about the quality of the codebase.”

Kate

Friday, 25 January 2008 11:41:25 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 23 December 2007

You know something is mainstream when it starts to get named. I've been talking about concurrency matters for over two years now. And now it seems almost every day somebody comes out with something you just have to read or watch on this matter. An attendee at Tech Ed Developers in Barcelona asked me "isn't it confusing and wrong that people are doing such different things in this space?" I don't think it is. Some folks are trying things with libraries, with compiler directives, with new language keywords, with whole new languages, with frameworks, with the operating system, with the hardware, ... with everything you can think of. And I don't know which things will work out and how the various things will work with each other. None of us do! But it sure is fun to watch it happen, and it's probably the only way to do it.

So, some links for you, accumulated over the fall:

Herb's advice is good. He says "Expect at least dozens of major product announcements and releases across the industry, before the toolset expansion phase is fully underway and approaching some maturity. We the industry have undertaken to bring concurrency to the mainstream, and as with OO and GUIs it will take multiple years, and multiple major releases, across the industry on all platforms." Bring it on!

Kate

Sunday, 23 December 2007 19:33:00 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 21 December 2007

Raymond Chen asked why QuickEdit mode isn't always on for command prompts. Then he gives a cogent explanation of why, but he left me wondering what QuickEdit mode is and why I never knew about it. I copy things out of command prompts (or DOS boxes as I usually call them) all the time - usually file names, but sometimes results from things I ran or commands that I am pasting into instruction manuals. As you may know, this generally involves getting into "mark mode" first:

But there is such a thing as QuickEdit for a command prompt, and it basically means you're always in Mark mode. You can change the properties for the shortcut (on my Vista machine, the Visual Studio 2005 command prompt is in C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Visual Studio 2005\Visual Studio Tools and that's probably where it is on yours too.) Here's the option:

You have to consent to using your admin powers when you save this change, and then that command prompt is in quick edit mode every time you launch it.

It may not save much time but it saves so much frustration! Hope it helps you too.

Kate

Friday, 21 December 2007 17:13:32 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 20 December 2007

Long ago I blogged about a motto of ours: Fail Fast. Some people replied with comments like "why fail at all?" but that misses the point. Mottos are short and pithy; a more accurate version of the motto would be "if you're going to fail at all, get it over with at the beginning." Here's another take on the concept ... how a week's stall while a decision gets made can cost a company thousands of dollars in hard costs. It's my experience it costs far more in reduced morale and productivity over time.

Kate

Thursday, 20 December 2007 16:54:56 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 19 December 2007

Are you going to Mix? Still trying to decide? Maybe The Signal can help you decide ... or get you warmed up if you're already committed to attending.

Kate

Wednesday, 19 December 2007 13:58:29 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 18 December 2007

Soma blogged this before Tech Ed Developers and I actually snagged a few bullet points to add to my slides, but I never posted a pointer to the original. It's nice to see some firm numbers and as always nice to see "higher ups" remembering C++.

Kate

Tuesday, 18 December 2007 13:48:14 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 17 December 2007

So, you're the proud owner of a ton of Visual Studio 2005 projects. And you've heard that converting them to 2008 projects is pretty much a flawlessly easy thing to do ... just open the project, let the conversion wizard run, and save it. Done! Except that if you have a hundred projects, that would be a crummy way to spend your time. Who has a hundred projects? Well a book might, or a course, or a presenter with tons of demos kicking around (I resemble that remark), or a development team with a lot on the go, I suppose.

Anyway, even if you only have dozens, wouldn't you like to be able to deal with them practically instantly instead of opening each in VS, watching the wizard do stuff, clicking Next and Finish on relatively pointless dialogs that essentially mean Are You Sitting Comfortably? No problem. John Robbins has a cool tip for you, but it's so short I can include it here in its entirety.

Open a Visual Studio Command prompt. CD your way to the folder with your project in it. Issue this command, subbing in your own sln file name:

devenv /upgrade MySoln.sln

Move on to the next folder. That's gotta be faster than watching wizards work! Remember, typing is a valuable skill even for the developers of today.

Kate

 

Monday, 17 December 2007 16:32:34 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 15 December 2007

I can't remember where I heard about this now... I had thought it was Steve Clayton but I just searched without success. So, unattributed then, here is a cool thing:

Thats's from http://www.google.com/trends?q=c%2B%2B%2C+c%23&ctab=0&geo=all&date=all&sort=0

The top pair of lines is searches (blue C++, red C#) and the bottom is news references. You can run this on a single thing to track it over time or on a set of things to compare them, whatever works for you. Here's what you might demonstrate with a single term:

http://www.google.com/trends?q=katrina&ctab=0&geo=all&date=all&sort=0

I bet you those blipups are anniversary articles. Anyway, imagine what you can do with this! Have fun!

Kate

Saturday, 15 December 2007 10:25:49 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 14 December 2007

I've mentioned before that sometimes when I search for information about topics that matter to me, the search results frustratingly include mostly things that I wrote. That's annoying when you're trying to learn more! But from time to time that same search turns up things I've forgotten, like this interview from over four years ago with Stephen Ibaraki. He's a good interviewer and it's interesting what the interview covers. People ask me all the time "how can I be a speaker too?" or "what does a Regional Director do, anyway?" There are some answers to those, and some tips about writing, interop, porting a project over to .NET, running small business, and more too. It's pretty cool!

Kate

Friday, 14 December 2007 09:13:53 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 13 December 2007

In Barcelona I was lucky enough to meet Lynn Langit who told me about a number of important initiatives she's working on. I mean how can you resist "we're saving lives with Visual Studio Team Systems" as an elevator pitch? She means it, too. Lynn also does geekSpeak webcasts - no slides, no detailed agenda, just show the people something, wait for a question, show them the answer to the question, repeat for an hour. It sounds like terrific fun and I watched a few to make sure it would be, then I said yes, I would do one.

MSDN Webcast: MSDN geekSpeak: The Windows Vista Bridge for .NET Programmers (Level 300) 

Event ID: 1032362711

Language(s): English.
Product(s): .NET.
Audience(s): Developer.
Duration: 60 Minutes
Start Date:
Wednesday, January 16, 2008 12:00 PM Pacific Time (US & Canada)

Event Overview

In this installment of geekSpeak, Kate Gregory, C++ expert, unravels the mystery of the "Windows Vista Bridge." This webcast has little or no C++ content and is aimed at Microsoft Visual Basic and Visual C# programmers who want to access cool Windows Vista stuff without the C++/CLI approach. If you have a question or comment you would like us to address during the webcast, visit the geekSpeak blog and submit it now.

Presenters: Kate Gregory, Regional Director, Gregory Consulting

Register now! Ask questions in advance on the geekSpeak blog!

Kate

Thursday, 13 December 2007 09:01:01 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 12 December 2007

Recently Eileen Crain, who used to manage the RDs, linked to a video we made "way back when" to try to explain the program. It's kind of a hard program to explain, but you might like seeing some of us try.

Kate

Wednesday, 12 December 2007 11:23:45 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 11 December 2007

At Tech Ed Developers Europe, one of my talks was on STL/CLR and the marshaling library. There are three super cool things about the marshaling library that all C++ developers need to know. The first is that the random boilerplate code we used to write to convert between two kinds of strings is now taken care of for us:

char* stringfromnativelibrary;   //gets set somehow
ManagedFunctionExpectingSystemString(marshal_as<String^> stringfromnativelibrary);

The second is that it's just templates, meaning it is fast at runtime and intuitive for a C++ developer. The third is that because it's templates, we can write our own specializations, and convert between any two types we feel we will be using - typically on either side of the managed/native border, though that's not a requirement at all.

This last part is really exciting to me. Imagine you have some library you wrote ages ago that takes a RECT and does something with it related to your business logic. But you've replaced your UI and now you have a System::Drawing::Rectangle to represent what your user selected. Wouldn't it be cool to write:

oldfunction( marshal_as<RECT> RectangleFromWinForms);

That's not a problem as long as someone has written that specialization. You can do it, or you can try to find one someone else already wrote.

Date and time, arrays, anything related to screen position, these are going to be types everyone uses. Why not share the effort of writing these conversion functions? That's the thought that hit me at the end of my talk. So I came home and set up a site -  www.marshal-as.net - to use for just this purpose. I've had a few submissions from Jason, who was at my talk and was there when I thought of it, and a wish list from a "little birdie". The C++ team knows what I'm up to and they are excited too. Now what I need is submissions and lots of them!

So, drop me an email, comment on this post, or (better) comment on the first post over at www.marshal-as.net. I'll post the specializations one per post and we'll build a library. I'm inspired by pinvoke.net and would like to see this as the destination for finding a specialization instead of writing one. Can you help?

Kate

Tuesday, 11 December 2007 07:38:37 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 10 December 2007

Harry Waldron has an interesting post. He's been doing some testing, and he can show that a longer password is harder to crack than a short complex password. We've been using passphrases for some time in our offices - collections of words and spaces like It's Almost Time to File Taxes that are actually quicker to type than the short complex password you might create from them (try it - compare that sentence, which to my knowledge has never been a password on my network, but could have been, with Iattft, a short password made from the first letters of each word.) I actually went to passphrases for this reason - they're quicker to type and easier to get right. Now I know that they're also harder to crack. Nice!

Kate

Monday, 10 December 2007 21:18:07 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 09 December 2007

On Tuesday, December 11th, I’ll be presenting Developing as a Non-Admin in the Ignite Your Coding series of webcasts. I’ll be showing Visual Studio 2008 and Vista and my focus will be on understanding the UAC consent dialogs, and how to keep your application from needing them. Register for it now, or later use the same link to come back and view the recording. But if you attend live, you can ask questions, and that’s often the best part of a webcast.

Kate

Sunday, 09 December 2007 16:19:29 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 07 December 2007

Last year at Tech Ed Developers in Europe, I had a very impromptu Channel 9 interview. A “shop talk” conversation broke out in the lobby of the Hilton, and Charles decided to film it. This year we planned it in advance and I sat down with Steve Teixeira and Ale Contenti of the C++ team. Watching the video, I love watching the two of them get visibly happier as they start to talk about the product and the big changes and news they announced at Tech Ed. Steve was really quite sick and depending on throat lozenges to be able to talk at all. Despite that, it turned out to be a really fun interview.

Kate

Friday, 07 December 2007 16:15:53 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 05 December 2007

The Virtual Side guys do a great job of capturing some of the fun and buzz from Tech Ed day by day. Here’s a roundup video that features a little bit of me judging Speaker Idol.  12 MB, 2 minutes.

Kate

Wednesday, 05 December 2007 16:12:43 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 04 December 2007

Have you been missing your fix of Ale Contenti at the whiteboard?  Are you unclear on the differences between try and __try? Or between exception handling and structured exception handling? Watch two guys who really understand how all this works and learn why not handling an exception can be as important as handling one.

Kate

Tuesday, 04 December 2007 16:10:53 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 03 December 2007

Everyone has UI woes. Users want more controls on the dialogs, or they want them simpler, or smaller, or larger, or combined, or split. The thing you think makes perfect sense they refuse to understand.  But it could be so much more complicated. Take this insightful post on the Shell Blog about one of the games that has come with Windows for as long as anyone can remember: Minesweeper. Some folks who use Windows don’t actually think that mines are funny things or that avoiding them is a game. Well, probably if you asked them, most people would agree that mines are bad, but for some people it's a far more personal and upsetting reality than for others. (BTW the mines in Minesweeper are apparently water mines, not land mines, but that doesn’t really increase the fun factor.)  So they changed it to give you an option to find flowers instead:

Be sure to read the whole post to understand why that was only the start of the work involved.

Kate

Monday, 03 December 2007 16:07:11 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 02 December 2007

There are plenty of webcasts on “what’s new in ProductName 2007” or “Introduction to XYZ Security” or various other technical topics. I’ve done my share and will continue to do so. But this is something a little different:

  • Becoming a Better Developer
  • Building Your Skill Set
  • Discovering Your Trusted Resources
  • Becoming Your Own Boss
  • Creating Your Own Start-Up Business

Some of the high flyers of the Canadian developer community are here... you want to watch these. The webcasts are available on demand and there are plenty of handy links as well for you to use as you’re following along.

Kate

Sunday, 02 December 2007 15:59:31 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 01 December 2007

I recently started reading Rands In Repose, a business blog of sorts that is full of advice I will never need (how to enjoy a gambling trip to Vegas) and plenty more that I find very useful. Take The Laptop Herring, for example. He argues strongly for the banning of laptops in meetings. Oh dear. I take my laptop to essentially every meeting. But he then goes to on to direct some good thinking towards WHY a person would sit in a meeting room and surf the web or check their email. Either you’re in the meeting or you’re not, right? Well, no, because most of us don’t have the power to say “that hour would be a waste of my time” so we have to go. I had a client whose meetings always lasted exactly an hour. People found a way to use up that time even if the decisions were all made at the 37 minute mark. Grrr. But whether or you not you can refuse to attend meetings that are a total waste of time, there is value in realizing that laptop use is a dramatic indicator of what people feel about the meeting they are in.

And from his comments, here’s a challenge for the brave. You want your laptop in the meeting because you’re taking notes / assigning work items / running queries / checking that against the requirements? No problem. Put it on the projector. That’ll keep you off email / IM / YouTube, won’t it?

Kate

Saturday, 01 December 2007 15:56:11 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 30 November 2007

My last post before my hiatus was Give Before You Take. Steve Clayton expressed a very similar sentiment while talking about making yourself, as an employee, high value and hard to replace. Worth reading, and follow his link over to a nice categorization of employee values and behaviours. It’s not enough to provide high value to your employers or customers – if you provide “commodity service” that others can also provide, you’re replaceable. And who wants to be replaceable?

Kate

Friday, 30 November 2007 15:52:53 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 29 November 2007

I’m a big Larry O’Brien fan, and a big DotNetRocks fan, so when you put the two together, I’m in! Then tell me they talked concurrency – one of my fave topics for a number of years now and I’m sure for a number of years yet to come. That makes this one a don’t miss for sure!

Kate

Thursday, 29 November 2007 15:41:47 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 28 November 2007

Nick Wienholt took over my column at CodeGuru several years ago, and has written roughly as many columns now as I did. Yet the URL for the column still has my name in it, a discrepancy he pretended to complain about in an August blog post. He has a nice look at the marshalling library ... something you’ll be hearing more about from me too.

Kate

Wednesday, 28 November 2007 15:40:15 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 27 November 2007

Eric Lippert talks about some choices that were made in creating C#. He emphasizes repeatedly that C# is not “C++ with the X parts taken out” – where X might be “stupid” or “complicated” or “reserved for smart people” depending on who you talk to. And I agree with him. C# is its own language with its own strengths. It enjoys a big advantage, too: it came from a blank page and wasn’t constrained by an existing code base. For example, one subtle source of bugs in C++ applications is that the order of subexpression evaluation is not enforced by a standard. If I write x=f(y) + g(z); it’s possible that one compiler (or one version of a compiler) might evaluate g(z) first, while another evaluates f(y) first. If these functions have side effects, this matters. I’ve always advised developers that if your functions have side effects, and you care what order they go in, split these expressions up into lines that happen in the order you want: x1= f(y); x2 = g(z); x = x1+ x2; for example.

Eric asks, “is there any benefit to the user of having this order of operations be unknown?” and of course there is not. The reason the order is unspecified in C++ is because there were compilers (from more than one vendor) before there was a standard. That’s not a constraint the C# team faced, so they laid down the law – subexpressions are evaluated from left to right. [Yes, I know some people claim it is a benefit to the user that the compiler is free to optimize by adjusting the order of evaluation. I just fail to see an optimization available by doing things in a different order.]

Two morals of this story. First, new languages can do some things older ones can’t, and that’s a good thing about those languages. Second, you really need to know how your language works, or some day it’s going to bite you.

Kate

Tuesday, 27 November 2007 15:36:58 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 26 November 2007

Michael Easter posted his own personal and opinionated list of the seven most wonderful programming languages of all time. Generally he gives points for changing the world and influencing generations of developers. Perhaps you would choose your wonders based on what you can do with them today, in which case I guess Fortran wouldn’t make your list. But the wonders of the ancient and modern worlds didn’t have to hold up to scrutiny like how many bathrooms they have or whether they’d be hard to clean, and I think that should be true for languages too.  If they’ve inspired us, why not recognize it? Michael chose Fortran, Lisp, Smalltalk, C, Python, Java, and JavaScript. His commenters add plenty more!

Kate

Monday, 26 November 2007 15:26:08 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 05 August 2007

I am generally loving Vista and have no intention of going back. I keep a few VPCs of older OS'es around, for various reasons, and some of the machines in my firm haven't been updated, mostly single-purposes boxes like a file-and-print server that isn't hurting anyone, or a machine dedicated to running our accounting software. But I won't pretend there haven't been annoyances - there have. And one of them has been opening a folder full of files and getting these weird columns like Date Taken and rating and the like:

Scott Hanselman showed me how to fix it. Do this in the root of C if you like, and apply to all subfolders. I have a "working" folder, with subfolders under it for each client, and I did it there. Aaaah, relief.

Kate

ps: Still filing Scott under RD for a little while until the assimilation takes full effect :-)

Sunday, 05 August 2007 08:06:07 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 04 August 2007

Jon Udell posted recently about a compelling graphic in the New York Times:

This is a very intruiging graph that immediately gets you thinking about survival rates, about whether new cases are rising or falling, and the obvious contrasts between, say, prostate and pancreatic cancers. But Jon then goes on to link to a post about how to make graphs like this yourself featuring your own numbers (sales? expenses? bug rates? time spent?) in Excel. I am consistent amazed at what Excel will do for people who know what they're doing. Check it out.

Saturday, 04 August 2007 07:54:08 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 02 August 2007

Another tip from Steve Clayton, this one about Hotmap, which aggregates local.live.com searches and maps, letting you know what places people are asking for maps of - where they want to go. Steve did an England map, but I did Ontario and surrounding areas. The darker red squares have had more map requests:

To a certain extent it just correlates with population, but also with Internet use, how visited a place is, and perhaps a certain Microsoft-vs-Google demographic as well.

Kate

Thursday, 02 August 2007 21:10:39 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 01 August 2007

The transparency from Microsoft these days is getting frankly astonishing. Here's something I've never seen before, courtesy of Steve Clayton, blue-monster-spreader:

When you understand where a company gets revenue from (and where it doesn't) then things are more likely to make sense to you. Steve's comments about SharePoint are interesting too and follow his link back to Todd Bishop's take on this.

Kate

Wednesday, 01 August 2007 21:04:16 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 31 July 2007

A former Softie friend of mine IM'ed me about this job. Sure, you need C++ skills, but there's more to it than that. They need a variety of skills because you'll get to do a variety of work... off the top of his head he listed:

  • multiplayer game infrastructure
  • chat and presence application
  • drm / installer
  • IE toolbar
  • flash applets
  • a bunch of other stuff

There's a Craiglist ad, which includes application instructions. This is in Seattle, by the way.

Kate

Tuesday, 31 July 2007 17:30:21 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 30 July 2007

Long Zheng has a lot of Microsoft-watching going on. This image comes from a slide he highlighted from Steve Ballmer's presentation for FAM (I already highlighted Craig Mundie's comments to the same audience.)

The comments are interesting too. Read the post.

Kate

Monday, 30 July 2007 17:05:30 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 29 July 2007

If you want to get started in C++ development, or try some parts of it you haven't tried before (remote debugging, perhaps?) then you should take a look at these little video lessons on MSDN. They're adding more as they go, so keep an eye on it...

Kate

Sunday, 29 July 2007 18:47:49 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 27 July 2007

You know this is one of my hobbyhorses. But I didn't write this quote, and neither did Herb Sutter or Larry O'Brien:

And so the world is going to move more and more away from one CPU that is multiplexed to do everything to many CPUs, and perhaps specialty CPUs. This is not the world that the programmers target today. This kind of complexity was historically reserved only for the wizards who wrote the core operating system; or, in the world of supercomputing in science and engineering, people who had the ultimate requirement for computational performance built big machines like this and have used them to solve some of the world's tough computational problems. That was always a niche part of the industry.

This presages a change where the industry at large, the whole concept of applications, will ultimately have to be restructured in order to think about how to take advantage of these machines, because they won't just get faster every year. They'll get more powerful, but in fact only if you're able to master these problems of concurrency and complexity.

The concurrency is a real challenge, because the way the industry has grown up writing software - the languages that we chose, the model of synchronization and orchestration, are actually not things that lend themselves toward either exposing parallelism or allowing large-scale composition of big systems and it's in part why we and everybody else, as the software grows in scale, you know, deal to a greater and greater degree with the difficulty of perfecting the software, making it absolutely secure, being able to predict every aspect of its operation. And so today we face the dual challenge of having the prospect of meeting even bigger, more sophisticated pieces of software to do the powerful things that we want, and to do it in an environment where to get that performance at the client on an individual application will require the mastery of parallelism.

This is Microsoft's Chief Research & Strategy Officer, folks. And he says what I say: concurrency is hard, and the future is concurrent. I know we all get by in this crazy churning world of constant new releases by ignoring stuff, but you can't ignore this.

Kate

Friday, 27 July 2007 22:40:15 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 26 July 2007

I'm in! I went for the VPC. Get yours!

Kate

Thursday, 26 July 2007 22:23:56 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 25 July 2007

Hey, this is fun! Want to write an application? In C++? For Vista?

Maybe it should have a split button:

Or a drop down with a cue banner:

Or ... well how about you read the article? It's by Kenny Kerr. It's the start of a new column for him -- look for it every other month in MSDN Magazine.

Kate

Wednesday, 25 July 2007 21:11:34 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 24 July 2007

I like to tell the "C++ is still sitting at the grownups table" story whenever I can. Sometimes that gets hard -- people ask why there's a C# wizard or designer for something, and a VB one, but no C++ one. For example, in Visual Studio 2005 the class designer could understand C# and VB code, but not C++. Well that one at least is somewhat fixed. I'm sure you can guess that C++ code is harder for a diagramming tool to understand, so perhaps that's why it had to wait a version.

Please take the survey from the Visual C++ team blog!

Kate

Tuesday, 24 July 2007 20:21:05 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 23 July 2007

There has long been a kind of mystery around getting hotfixes from Microsoft. Maybe you read a KB article or a blog or something and you learn that the fix to your problem is in a hotfix. Then there are all kinds of disclaimers about how you shouldn't get the hotfix unless you're totally sure you need it, and on top of that in order to get it, you have to phone someone!

In the last year or so I've obtained two hotfixes. One was sent to me by a friend who'd already gone to the trouble of getting it (something you're totally not supposed to do, but people do it anyway) and the other I got myself - it took less than ten minutes and was no trouble at all, but it was intimidating to do it for the first time. Well now there's an easier way ... hotfixes on the web.

https://support.microsoft.com/contactus2/emailcontact.aspx?scid=sw;en;1410&WS=hotfix

I don't exactly look forward to needing a hotfix, but it will be cool to try this eventually.

Kate

Monday, 23 July 2007 20:10:20 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 22 July 2007

A lot of people are so into Agile that they object to writing down requirements. Take this article on why fixed bid projects are bad - one of the major reasons given is that in order to produce an accurate bid, the developers will run around trying to write requirements and keeping track of changes to them, and making people get together and agree when they change them. We do a lot of fixed bid projects and they are generally a success - finish roughly on time, cost roughly what the customer was expecting to spend, and solve the problem the customer was facing. Those "we don't know what we want but we'll pay you by the day until we have it" ones can sometimes become a complete nightmare. We like requirements. So I really liked this article by Eric Sink on Requirements. I agree with so much of what he says. What do you think?

Kate

Sunday, 22 July 2007 20:25:58 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 21 July 2007

I should have pointed this out before, but I wasn't blogging at the start of the month. Herb Sutter has a new column at DDJ on, of course, concurrency. In his first outing, he talks about all the different words and concepts that show up in a concurrency conversation, and presents an organization of those concepts that can give you a framework for deciding what you're going to do about the future.

Words like blocking, coupling, background, asynchronous, responsive, isolated, scalability, threads, locks, race, mutable shared objects, transactions, and so on are actually applicable to different parts of the concurrency space. If you try to think about all of it at once, it's too hard. And make no mistake, concurrency is hard today. Anything that makes it easier is welcome, and in this case it's rearranging your head a bit.

http://www.ddj.com/dept/cpp/200001985

Kate

Saturday, 21 July 2007 20:08:11 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 20 July 2007

Recently I told you how to get a virtual image of Vista for evaluation purposes. Now you can try a variety of operating systems, applications and server products, preinstalled onto evaluation VHDs. Try Vista, Office 2007, Visual Studio Team System, SQL Server 2005, Office Sharepoint Server 2007, and more. Some of these products are a little tricky to get installed and ready to go, so a virtual image is just what you need. Even if you have an MSDN subscription, you might like to use these VHDs just for that convenience factor.

http://www.microsoft.com/technet/try/vhd/default.mspx

Kate

Friday, 20 July 2007 19:46:05 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 19 July 2007

Did you know there is no entry for gullible in the dictionary? Really! You can check and everything!

If you needed to check, you may not get a perfect score on the McAfee phishing quiz that Roy pointed to. I managed to get 10 out of 10 - and some of them are pretty hard. Try it yourself.

I hate spam, phish mails etc. The other day I got a Nigerian-style letter from Spain. And when I say letter, I mean on paper, in an envelope. Came with cool stamps on it, which I kept. The letter, I tossed.

Kate

Thursday, 19 July 2007 15:21:50 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 17 July 2007

So you were thinking about entering the Gadget contest, but then you didn't get around to it? Well lucky you, you get another chance. Here's what I heard today: the deadline has been extended a month. You have to get your gadget into the Gallery to enter, and it's a process with a few steps to it:

Process to Enter Competition

 

Developers will need to perform the following actions:

 

1.       Post their Gadget on the Windows Live Gallery (approval process can take a few days)

2.       Return to the Gadget Vs. Gadget site and select ‘Enter Contest’ tab and use their Live ID to login

3.       Complete the entry form to submit their Windows Vista gadget for review

 

Winners will be announced September 4, 2007.

Same cool prizes, same great exposure, so go for it! http://www.microsoft.com/canada/msdn/gadgetvsgadget/default.aspx . Remember, Canadians only!

Kate

Tuesday, 17 July 2007 16:38:39 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 16 July 2007

Steve Clayton reports on a British university that offers a B.Sc. in .NET ... well in Computer Science but with a deliberate emphasis on .NET technologies. Interesting approach since here in Canada universities like to distinguish themselves from colleges and trade schools by teaching theory and concepts and not worrying too much about what tools the students learn how to use along the way. The belief is that learning to use tools in general and learning the commonalities behind them (what is a compiler, what is a renderer, what are the aspects of identity management) has greater long term value than learning one particular tool or toolset. In general, I agree with that belief, and I've hired people from a wide variety of backgrounds over the two decades we've been in business. But on the other hand, if you're going to teach all that general stuff, why not teach it in the context of some tools that happen to be immediately useful in the work world?

Kate

Monday, 16 July 2007 16:56:17 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 15 July 2007

Roy Osherove is looking for a Test Driven C++ trainer who lives in Israel already. He can make you a better trainer, he can get you the TDD background you need, but you need to have the C++ chops already and to be in the area. If you're interested, read his blog entry and make yourself known to Roy directly.

Kate

Sunday, 15 July 2007 16:48:25 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 13 July 2007

Speaker Idol is happening again at Tech Ed Developers in Barcelona this fall. You have months to sign up, but only the first 30 are accepted, so if you already know you're headed to Barcelona (and not speaking, live in EMEA, don't work for Microsoft, etc ... full eligibility rules on the contest site) then you want to give this some serious consideration. Speaking as a judge at this year's US event, I can tell you that the experience of trying to do 5 minutes on a topic you know well can only be good. In order of the worst-possible-thing to best, here's what can happen:

  • You can do your talk, do OK, not win, and learn nothing from the judges while still failing to impress anyone with your speaking skills. I think this is pretty unlikely, but anyway it would leave you where you were before you tried - no loss
  • You can learn some very specific tips on being a better speaker, both from observing other speakers whose content you don't understand, and from the judges giving you ideas
  • You can show your skills in front of people who choose speakers - and not just for Tech Ed either
  • you get some publicity and bragging rights just by being selected
  • You can win a speaking slot at Tech Ed

To enter, you need to make a 3 minute video of yourself presenting on a technical topic, so don't dawdle!

If you are sure you don't want to enter, either because you're already a Tech Ed speaker or because you'd rather die than speak in public, be sure to at least plan to watch. I found it highly entertaining.

Kate

Friday, 13 July 2007 15:34:19 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 12 July 2007

Why, you call 911 of course. I imagine it would be a challenge for the 911 operator not to laugh out loud, but it was true...

http://www.theglobeandmail.com/servlet/story/RTGAM.20070712.welephants0712/BNStory/National/home

http://www.cbc.ca/canada/toronto/story/2007/07/12/elephant-stroll.html

http://www.thestar.com/News/GTA/article/235173

My favourite part is the elephant who didn't particularly notice they'd escaped and went to sleep just outside the pen. She's the one at the far left not being sprayed with the hose.

Update: The National Post provides this delightful picture, and links to the 911 call and dispatcher conversation. "Outstanding elephant" indeed. And what a nice police department to host the mp3s - not all would.

http://www.police.york.on.ca/Press/07-160928%20Comm.mp3

http://www.police.york.on.ca/Press/07-160928%20Dispatch.mp3

Kate

Thursday, 12 July 2007 17:19:57 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 26 June 2007

In a talk on IDE tips and tricks for Visual Studio, I asserted that good programmers are ten times as productive as ordinary ones. I didn't remember where I'd read that, but I knew it was true. I've just worked with so many folks who need a week to do what some superstars can do in a morning. The ordinary guy needs half a day to find some samples that are similar, half a day to tweak them so they fit into the current situation, a day to test and realize they aren't quite right, a day to adjust them and then fix the things that broke while adjusting them, half a day to get distracted and lured into scope creep by some comments during user testing, then another day to fix up what they did that they shouldn't have, and finally a half a day to clean things up and make documentation. The terrific guy only spends an hour finding samples, stays focused, documents and tests along the way, and makes short work of a specific small task. And I find this holds over months and years as well as over the course of a week.

Now I bumped across a proper cite of that, and not surprisingly it's from the Mythical Man Month. The quote and some related musings is over on Phil Haack's blog. Worth reading and worth thinking about. There are many ways to be productive ... write code that solves the real problem, don't write buggy code, don't write brittle code, and so on.

Kate

Tuesday, 26 June 2007 04:06:47 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 25 June 2007

One of the things that people comment on when they work with me is how much of a keyboard shortcut person I am. In fact I really like the fact that Vista supports my typing-preferences and doesn't make me mouse so much. But when I'm presenting, I try to use the mouse as much as I can and stay away from keyboard shortcuts. I just find such presentations hard to follow myself, when I don't know what the demo-ing person is typing and what shortcuts they are using. It's easier to see what they are clicking on.

This became a bit relevant during Speaker Idol when I mused aloud about whether to dock Mark Miller for using CodeRush while demo-ing. Anyone else I would definitely have told not to, but perhaps Mark has a dispensation. I just find that many attendees can't follow along with the blazing speed that CodeRush enables and really lose track of the demo.

Roy Osherove has put together a little utility that displays your shortcuts as you type them. His first post on the topic suggests its value to presenters, while his second one focuses on using it to become more keyboard oriented or to train a coworker to be more keyboard oriented. If you really can't switch to the mouse while presenting, consider using this utility so that people can see what you're doing.

Kate

Monday, 25 June 2007 03:12:41 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 24 June 2007

Can you lose weight by coming to Canada? Yes you can, but not mass, just weight, because apparently gravity in parts of Canada differ from elsewhere in the world. And this is some sort of slow rebound from the retreat of the glaciers...

http://www.livescience.com/environment/070510_odd_gravity.html

Kate

Sunday, 24 June 2007 03:01:44 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 22 June 2007

There is a lot of confusion about writing your own exception classes. I see far too much code out there that just catches "Exception" anyway, that I hate to complain about someone who has set themselves up to have different catch behaviour for "The server is probably offline" than for "you probably don't have permissions on that file you just told me to use". However those who write their own exceptions have generally derived them from ApplicationException. If you ask why, they say things like "well" and "er" and "um" a lot because there's no extra stuff in an ApplicationException compared to an Exception. It just made it possible for you to catch "ApplicationException" and know it would be one of yours and not from some framework code.

Only thing is, that didn't really work out -- some framework code throws exceptions that derive from ApplicationException. And really, catching ApplicationException is just as generic as catching Exception. What can you meaningfully decide to do when all you know is "some code I wrote is unhappy in a way that the built-in exceptions (invalid argument, access denied and so on) cannot properly express" ?

So the word is out. Don't inherit from ApplicationException. Got it.

Kate

Friday, 22 June 2007 18:38:01 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 18 June 2007

Here is a neat thing i actually learned about from people complaining about Vista performance. I haven't been having performance problems to speak of (except for that darned copying thing) but I was intrigued to hear about a background process that keeps track of how stable your system is. The Reliability and Performance Monitor is tucked away under a zillion menu options (this blog post leads you there) but I just click the marble and type reli and there it is:

The first thing you get is a performance monitor-type view, to do with as you will:

But if you click reliability monitor, you get something really quite new:

Here you see things the system feels were instabilities in my system in late May and early June.  Mind you, it has a very persnickety bar when it comes to those red Xs.

On June 1st, Visual Studio blew up on me. I bet I know what that was, too -- from time to time it blows up when I drop down a list of methods in those bars across the top of the code editor, especially if I try to scroll in the dropdown -- and not only was that recorded, but it contributed to a lower "stability index" for the day. As you can see, the system also records everything I installed (including updates through Windows Update) and everything that failed. It's a pretty neat way to remind yourself what you've been going through. You can also validate wild claims like "Project blows up at least once a week" by scrolling back and counting them. Ah, evidence :-)

Kate

Monday, 18 June 2007 13:28:42 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 17 June 2007

I was helping a mentoring client translate some sample code from VB to C# - he has written a lovely library and a customer wanted to see C# code that called it. The original samples had been written by someone who wasn't in the room, so I could have a bit of a vent. They had made heavy use of the Microsoft.VisualBasic namespace (nothing wrong with that) so as to access familiar (to a VB6 programmer) string manipulation methods. The problem was, these methods were being used to do things like finding the extension given a file name, or extracting a file name from a long path. This work should never be done with Left, Right, and Mid - and using Substring doesn't make it better. There are all kinds of methods in System.IO that manipulate paths and file names in a more robust and localized way than you can possibly do by hand. For my client's code, I ripped out a whole pile of hand written code (including a loop that looked character by character at a string testing to see if each was '\' or not) and replaced it with calls to library methods.

Phil Haack lists a bunch of these (and his commenters even more) in a very useful post. Developers who know what's in System.IO and the other meat-and-potatoes parts of the .NET Framework will write code more quickly, and that code will be better. Never assume you're the first person who wanted to parse a file path, check if a string is a good date, or any of a thousand other general tasks. Trust me, what you want is in there ... look for it.

Kate

Sunday, 17 June 2007 10:24:06 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 16 June 2007

I brought home a paper copy of MSDN magazine from Tech Ed and found this as one of the cover stories: An Inside Look At The Next Generation Of Visual C++. It's by Tarek Madkour and definitely worth a read. Were you wondering if MFC's wrapper for the new file dialog would be tweaked so you get the all-singing all-dancing new Vista common file dialog? Yes it will. Will there be a class to represent a Command Link? Yes. And a split buttton? Yes. Pretty much all the new controls and dialogs are in the new MFC. There's also resource editor support for PNG, for 32 bit images, and for large icons.

As I mentioned in my blog post about Sarita's Channel 9 Video, UAC support is also a lot easier. Then there's the marshaling library and STL/CLR. Toss in faster builds, and make developers everywhere happy. Roll on, release day.

Kate

Saturday, 16 June 2007 10:08:09 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 15 June 2007

Herb Sutter reports on the April meeting of the ISO C++ standards committee. They are now consistently referring to C++ 09 not C++ 0x (with a hope that x would not be hex, which seems to be turning out ok.) The meeting added features to the draft standard for the language itself (template aliases aka typedef templates, variadic templates, and unicode) and for the standard library (variadic templates, unicode, and rvalue references.)

The next meeting is July 15th - 20th in Toronto. I am trying to plan to be there.

Kate

Friday, 15 June 2007 09:53:54 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 14 June 2007

Have you tried writing a gadget yet? They're really simple and can have an immediate impact on your productivity. If you're a Canadian adult, you can enter your gadget into Microsoft Canada's contest and win some serious hardware.

The contest site has plenty of links to get you started and give you some inspiration. You have till July 16th, so get creating!

Kate

Thursday, 14 June 2007 09:19:43 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 13 June 2007

I like to let Hugh MacLeod's gapingvoid cartoons rattle around in my brain for a while before I decide if I like them or not. It's a fine line between pithy and banal, after all. This one is working for me:

Keeps my focus where it belongs, even when making custom software or mentoring the folks who are making the software. Forest and trees, don'tcha know.

Kate

Wednesday, 13 June 2007 07:30:01 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 12 June 2007

Have you ever heard the career advice that you should consider doing some volunteer work in your field to gain experience? Sounds like a lovely plan, but how does someone without contacts find volunteer opportunities anyway? Or maybe you have the job you want, but you want to put your time and effort to a good cause, if only you could find one. If you're in Canada, MatchIT.com is just the ticket. Sign up, fill out a form, and get matched with needs from nonprofits. There's lots of folks looking to have their websites redone, or a registration system written, or their servers looked after. It's a chance to make a real difference, so please look into it if you have some time to spare.

Kate

Tuesday, 12 June 2007 16:20:53 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 11 June 2007

Recently I had some major issues with a VPC somebody prepared for me. It came from a DVD and I just could not get it to run on Vista, though it ran great on XP. I was fairly sure that it would run OK if I could just launch VPC elevated and then open the .vmc file, but when I launched VPC (elevated or not) the only evidence of its existence was a taskbar entry (there was no window to be seen) and even that disappeared if I right-clicked on it.

I solved the first problem by granting Users access to the .vmc and .vhd files (I went with Full Control since I had them on a non-shared drive) and then the VPC ran perfectly. That was a better fix than elevating VPC every time anyway. But along the way I discovered how to fix the disappearing console. This post by Steve at EssJae.com shows what you need to do: find the options.xml file in C:\Users\%current_user%\AppData\Roaming\Microsoft\Virtual PC and open it -- make sure the console is not up and you're not running a VPC. Scroll down and find the <console> section  and you will see some very large numbers for left_position and top_position. Change them to something normal, like 10 or 100, and save the file and you'll be back in business.

Kate

 

Monday, 11 June 2007 15:59:03 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 10 June 2007

During my blogging gap, some good channel 9 videos came out. I wanted to highlight Ale Contenti: VC++ Safe Libraries and More. Ale is the new Martyn Lovell and he wants to show you the safe libraries and how to write sensible C++ code. If you like to see C++ code written live on the whiteboard (no intellisense, no compiler to find your typos) this is the video for you :-)

But wait, there's more. How about a C++ program without pointers? Well, without explicit use of pointers. Check it out.

Kate

Sunday, 10 June 2007 15:28:53 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 09 June 2007

Visual C++ is hiring a development manager. They have some reasonably high expectations on experience, proven track records, and so on. If you think you want the job by all means check it out. If you don`t think you want the job, but just want to keep on making C++ code and know there will be a product and a team there for you, read this quote from the job description (bolding by me):

The top 1,500 ISVs generate over 80% of worldwide software revenues. In addition to driving the global Windows ecosystem, these companies are directly responsible for $5B-$7B of yearly Microsoft revenue. Central to the success of these customers, as well as Microsoft's own internal development, is Visual C++. Given the strategic importance of the ISV segment, the Visual C++ team is on a mission to revolutionize our toolset in providing a much more productive and successful native developer experience.
We are looking for a strong Visual C++ Development Manager to drive adoption and satisfaction among professional C++ developers. We are in the starting phase of a major reinvigoration of the experience for C++ and native development targeting very large and complex development projects. The added demands of security and the advent of many-core processing create significant challenges and opportunities to create market leading technologies and tools.
The Visual C++ team is working hand in hand with the Windows division on enhancing the appeal of Vista and Windows 7 for ISV developers and with the CLR team to create a technology stack that allows layering of services to provide a seamless spectrum from native code over type safety and garbage collection to the full .Net stack.

Responsibilities
The Visual C++ DM position features leadership opportunities across multiple areas, including Technology and Architecture Leadership and Execution, Team Building and People Leadership.
You will lead a world class C++ compiler team and C++ IDE team embarking on a virtually top to bottom re-architecture of the tools stack. In addition, you will lead a libraries team that is re-inventing the MFC and client libraries for the next decade together with the Windows WEX and Developer Division UIFX teams. You will grow a strong cross-PU architect team and a development organization.
The Visual C++ DM plays an important role in cross-team relationships (Windows, CLR, UIFX, Office, SQL) and cross-company relationships (Intel, AMD, C++ standards work).

Wow! Looks like we`re all in for a great ride. If you really know your stuff, go help. If you just like to use it, hang on!

Kate

Saturday, 09 June 2007 15:01:12 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 08 June 2007

Microsoft Canada is putting on an all-day event Saturday June 16th at the Metro Toronto Convention Centre. Of course it's free, and you'll see plenty of Microsoft and external speakers in multiple tracks.

I'm doing session #1 in the Developer Track in the afternoon: What's New for Web Developers in ASP.NET and Visual Studio 2008. If you're thinking "Visual Studio 2008???" that's Orcas - the new name was announced at Tech Ed in the keynote. Register while there are still spots!

Kate

Friday, 08 June 2007 16:37:59 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 07 June 2007

I have spoken a LOT (too many times to link back) over the last year or more about getting your applications to work on Vista. When I ask for a show of hands to see who has tested their apps on Vista, I typically get less than a quarter of the room. When I ask why I hear things like "a copy of Ultimate is too expensive just to test with" or "I don't have a spare machine with the horsepower to run Glass" or even "I don't have a spare machine".

Fear not. How about a FREE evaluation VHD image of Vista, that you can run with the FREE copy of Virtual PC on the machine you have now? It might be slow, it might not do Glass, but you can find out for FREE if your app even runs, if it works under UAC, what happens if you put a manifest on it, and so on. Come on, what's stopping you? Jean-Luc David of Microsoft Canada has all the links for you.

Kate

Thursday, 07 June 2007 16:27:04 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 06 June 2007

I sincerely hope that this year's Tech Ed USA hasn't featured any of these "worst practices":

http://www.youtube.com/watch?v=qZOL878CwfM

I like to advise up-and-coming speakers to watch as many sessions as they can, so they can see what NOT to do as well as what to do. Watch and learn, and giggle a little.

Kate

Wednesday, 06 June 2007 16:20:47 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 05 June 2007

My Tech Ed USA talk this year was "Vista and C++/CLI - a Natural Fit". A lot of Vista goodness is hard to get to from managed code. In the precon I showed you how leveraging other people's work (specifically the Vista Bridge and the Preview Handler Framework Stephen Toub wrote for MSDN Magazine) can eliminate some of that difficulty. In my C++ talk I drilled a little further, into things like property handlers that can only be in native code (same for thumbnail providers though I didn't show one) and flukes of the IDE that (for Visual Studio 2005 anyway) make adding a UAC manifest easier for C++ developers. The slides should be on CommNet for registered attendees, and if you want the code samples you can drop me a line. The property handler sample is straight out of the SDK so I don't need to send you that.

Kate

 

Tuesday, 05 June 2007 16:11:58 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 03 June 2007

I am very much a keyboard person. Why would I mouse all the way over to something when I can Ctrl-S or Alt-Tab or Windows-D to get what I want? This entry on the Vista team blog lists a few, and the comments list plenty more. Windows-space was new to me. Perhaps you'll find a few goodies too.

Kate

Sunday, 03 June 2007 09:27:08 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 02 June 2007

A while back the blogs went nuts with the FizzBuzz game. It all started with a discussion of asking people to write code in job interviews. I do this, and I feel it really helps me to hire good people. However I ask something that appears to be much simpler than FizzBuzz, and I get interviewees who completely and utterly mess it up. I don't just mean that they write code the compiler would reject -- they write things that are too complex or that aren't in the language we just agreed they were going to write it in -- and when they look over what they've written on the whiteboard they don't see a problem.

Why the blogs went nuts is that commenters to the original post just couldn't resist trying to submit a solution. The general form was "man, you're an idiot, that problem is way too simple, it's just four lines of code! Like this:" immediately followed by a solution that DID NOT WORK. This unintentional hilarity continued with people trying to correct each others solutions and often failing. Then as that started to wind down, the language zealots came along to prove that FizzBuzz solutions posted by random commenters only had errors in them because of the languages the commenters chose, and that a Ruby version or the like would be much easier. Some of those had errors too. Assembly language, Cobol, Perl, ... I'll let you search out those solutions (quality varies) yourself.

But one in particular I really like for its spectacular uselessness while demonstrating great strength with the tool. Can you believe FizzBuzz in C++ compiler error messages?

 T0=boost::mpl::int_<0>,
 T1=boost::mpl::vector<boost::mpl::int_<1>>,
 T2=boost::mpl::vector<boost::mpl::int_<2>>,
 T3=Fizz,
 T4=boost::mpl::vector<boost::mpl::int_<4>>,
 T5=Buzz,
 T6=Fizz,

Take a look at what Adam Petersen has done. Would I hire him? You betcha.

Kate

 

Saturday, 02 June 2007 09:19:01 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 30 March 2007

About six months ago, I posted a few UAC screen shots and compared the text on them, the icons (the four colour shield vs a shield with a big exclamation mark) and the colours of the area where the title appears. Now Raymond Chen summarizes those four colours for people who have trouble remembering them.

The more you understand what UAC is saying, the less frustrating you will find it.

Kate

Friday, 30 March 2007 12:09:45 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 29 March 2007

Nikola Dudar has posted his talk and demos from the MVP Summit and SD West. If you would like to put the STL/CLR through its paces this is a great starting point.

Kate

Thursday, 29 March 2007 12:03:37 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 28 March 2007

Apparently your project hash table can get corrupted, and if this happens to you, during a build you will go to 100% CPU and Visual Studio will stop responding. Yuck! There's a hotfix if you need it.

Kate

Wednesday, 28 March 2007 11:59:43 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 24 March 2007

Oh yes! I have been waiting for the marshaling library for ages! And I just pointed to a VC++ team post about the common controls changes for MFC. Here's the marshaling library in a nutshell:

Back and forth between all the different kinds of strings, various managed and unmanaged types, all the stuff about where things are allocated and how they are freed ... it's usually just 4 or 5 lines of code each time but it's gross and you have to look it up every time. Now these templates will take care of it for you. Beautiful! And on top of that, it's sometimes even faster than doing it yourself the old way!

And check this out, all those who are allergic to angle brackets:

Watch the whole video, of course. Go, Sarita!

Kate

Saturday, 24 March 2007 11:54:14 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 23 March 2007

Eileen Brown wants women who work in technology to answer a quick little survey about what that experience is like. I found some of the questions a bit hard to answer (I don't have a boss, for example) but I did my best. Now you try:

Here’s the link.  Please forward this to all the women you know and support 2 deserving charities...   http://tinyurl.com/22bbax

Kate

Friday, 23 March 2007 11:45:50 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 22 March 2007

The Visual C++ team has an update for you about their Orcas plans around MFC and the Common Controls in Vista. There are a lot of new APIs in Vista compared to XP, but just as important there are new styles (like the style that makes a button a CommandLink) and messages (like the message to a button that tells it to draw itself with a security shield.) Right now to work with these new "thingies" (my technical term for them) you need to send Windows messages. In Orcas there will be design time support for all this and more. Even the new Common File Dialogs will be yours as if by magic.

Looking forward to it!

Kate

 

Thursday, 22 March 2007 11:41:17 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 20 March 2007

Kathy Sierra has some characterizations of applications we'll all recognize. There's the one who knows how you like things, the one who bosses you around, the one you are barely putting up with till something better comes along .... and be sure and read the comments where a few more archetypes appear.

Kate

Tuesday, 20 March 2007 11:24:41 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 16 March 2007

It's interesting when we measure new things using old rules. A number of people have observed that Vista machines doing nothing seem to be using a lot of memory to achieve that nothingness. Words like "bloat" get bandied around. Empty memory is seen as more virtuous than filled memory. I'm not going to link to all the "Vista is using all my memory it sucks" complaints. Instead, I'm going to point you to Jeff Atwood, who explains the whole thing quite nicely and concludes:

The question shouldn't be "Why does Vista use all my memory?", but "Why the heck did previous versions of Windows use my memory so ineffectively?"

Good point.

Kate

Friday, 16 March 2007 10:52:55 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 15 March 2007

Recently I ordered a DVD of The Rise and Fall of the Great Lakes from the National Film Board of Canada. Now don't get me wrong, the place is a national treasure, and I'm delighted to be able to buy films I fondly remember from my childhood. I also trust them with my credit card number. But this privacy "reassurance" didn't really reassure me:

A quick IM conversation with someone who speaks far better French than me told me that this makes way more sense in French, but serves as a tremendous example of why machine translation can only take you so far. Trust me, my "experiment Internet" is already sedentary enough.

Kate

Thursday, 15 March 2007 10:42:03 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 14 March 2007

Yikes! How can an API call be banned? Well, these functions from the C Runtime Library (CRT) will trigger warnings from the compiler in Visual C++ 2005 and beyond. I've blogged about this before, and linked to an older paper about it too. Now Michael Howard has an updated article that lists all the "banned" CRT calls and suggests what to use instead. He also clarifies the role of the StrSafe functions and compares them to the _s versions of the insecure CRT functions. Definitely recommended reading if you're maintaining an older code base and worry about it a little.

Kate

Wednesday, 14 March 2007 10:33:16 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 13 March 2007

First, this Information Week article says "there's a greater call for IT professionals in the New York and New Jersey area than there is in Northern California". Then they say something really strange: "When it comes to programmers, the C and C++ languages were the most popular with 18,290 job postings, while Microsoft's .Net drew 14,807." Wow. Ignoring the fact you can do C++ on .NET, that's still quite a dramatic ratio. It's partly because the jobs include other operating systems, like Linux, and C++ is The cross-platform language. But I know (because people email me asking to help them find staff) that C++ programmers are getting hard to find. Who'da thunkit?

Kate

 

 

Tuesday, 13 March 2007 22:53:35 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 12 March 2007

Jesper is The Guy on security and since UAC is generally represented as a security feature, I'm interested in just about anything he has to say on the topic. So imagine my eyebrows headed for the ceiling when I read:

UAC does not, nor is it intended to, stop malware.

But my eyebrows came back down pretty quickly. There's a difference between stopping malware and reducing the effect of malware people happen to launch. UAC is intended, Jesper says, to "enable more users to run as a standard user." After all, most devs are admins on their own box, because otherwise they can't accomplish all kinds of day-to-day developer tasks. And then they accidentally write applications that only work if you're an administrator. And most folks react to that by making everyone an administrator. And that leaves you in a nasty place if you did happen to launch some malware. He goes on to say:

...we ideally end up in a situation where most people do not run as administrators and, hopefully, start questioning some of the elevation prompts they do get. The fewer they get, the more likely they are to consider them carefully before allowing them, or so the theory goes. By extension, yes, there may be less malware, but it all depends on (a) whether users keep UAC on, (b) which is dependent on whether ISVs will write software that works with it, and (c) users stop considering prompts to be fast-clicking exercises and actually consider whether an elevation request is legitimate or not.

That last one I am seeing no signs of. A UAC prompt comes up, people just click it as quick as they can. Sigh. Let's hope that changes over time. One last quote from Jesper:

The fact that UAC does not mitigate all security problems, or that it does not possess a property that many of us, myself included, would dearly like to have - first-order protection against malware - does not mean it is not a security technology.

The more we understand the point of UAC, the more likely we are to think a little during that black-screen-pause while the prompt is coming up. If you don't think what you just did deserves a UAC prompt, why are you going to consent?

Kate

Monday, 12 March 2007 22:48:33 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 11 March 2007

Ali Parker writes about the Women in Technology event that will be held once again at Tech Ed in Orlando this year. Let her know your thoughts on what the event should be, and on how to reach out to young girls and inspire them to consider changing the world through technology. I know I'll be attending no matter how they structure the event or when it's held. It's fun to be in the majority once in a while. BTW, men are always welcome ... you don't need to pass some screener with some talk of having a daughter or the like, just come on in and join us.

Kate

Sunday, 11 March 2007 22:39:41 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 10 March 2007

At the risk of turning this into a jobs blog, I just have to point you to another opening. How would you like to apprentice to Eric Sink at Source Gear? He's looking for a developer to do marketing. He would rather you didn't have a lot of marketing background, and he'll pay you as he would pay a senior developer. You have to move to Illinois, and be willing to travel every month or so, and I bet you'll have a terrific time. Application instructions are in the blog posting.

Kate

Saturday, 10 March 2007 09:26:23 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 09 March 2007

One of the things that's fairly hard to do with Team Systems out of the box is to search work items. You know there was something about the Pending flag in some work item or another, but now you just can't seem to find it. You could create a query but that seems like overkill, right? Well, Noah Code has a little addin for you that makes searching work items a lot more convenient. It adds a toolbar with a search box, and you're all set. If you want, you can tweak what fields it searches.

Kate

Friday, 09 March 2007 09:06:45 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 08 March 2007

Microsoft wants to hire a Program Manager for COM+, DCOM, RPC, the WCF/COM Integration, System.EnterpriseServices, and whole lot more. It's true. If you love COM and think you can do this job, start at this blog entry from Clemens but don't follow his link over to the jobs page -- it seems to be broken. This link worked better for me.

Kate

Thursday, 08 March 2007 09:03:29 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 05 March 2007

A lot of the Vista PR focuses on what it's like to use Vista. Let's say you're deciding whether to make your application run well on Vista. What's in it for you? Is it just about "10% of my customers are on Vista already, so I'd better support them" or is there more? Vista actually offers you goodies as a developer, above and beyond the .NET Framework 3.0. In this latest Channel 9 video, Michael Wallent talks about shiny new WPF applications, but also about reliability, restart and recovery, why your application will perform better on Vista, and much more. I love watching people care about their work, especially when there's so obviously a huge pool of technical knowledge behind what they're saying. This is a great video. and not just because of the turn the conversation takes at about 18 minutes.

Kate

Monday, 05 March 2007 08:39:58 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 04 March 2007

Darren Strange tells a delightfully honest story about a presentation gone horribly wrong, and getting back on the horse again. It illustrates something most veteran presenters can tell you: it takes more than one huge mistake to completely wreck a presentation. But the trick is that each mistake you make increases the chances of making more, because you get tense and worried and panicked as things go wrong. The comments to Darren's post are very helpful, pointing out that the failed demo was in some ways a smaller problem than the tone setting at the very start of the presentation. Something for all of us to learn from this one.

Kate

Sunday, 04 March 2007 08:18:42 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 03 March 2007

Recently I was driving to a demo at a client site when I remembered that one particular test of my app had not been run. This is a web app with a smart client providing a secondary interface for intense users, and is therefore designed for a connected situation. But I was about to demo on a standalone laptop -- web server, SQL server, browser client and smart client all happily together on a single box. What's more, the laptop doesn't quite have everything -- I don't run an SMTP server on there, and some parts of the app send email as workflow progresses. Sure enough, when I got to their parking lot I tested and the email-sending code throws an exception if it can't find the mail server. This calls for a quick edit - throw in a try-catch-swallow along with a TODO comment saying that we should be gracious if the mail server is unreachable.

OK, fine. I open the project and attempt to change the code. The checkout, of course, fails, because I'm offline. And I'm not able to edit the file. Throwing caution to the winds, I browse with Windows Explorer to the file, take away the read only attribute, and carry on. The demo works beautifully and life goes on.

If only I had already found the patterns and practices guidance for VSTS over on CodePlex! It includes answers to questions like "how do I work offline?" (answer: do what I did, and use the Power Tools to sync up when you get back to the office) and much much more. Worth some time reading and internalizing.

Kate

Saturday, 03 March 2007 20:39:30 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 02 March 2007

Intellisense has been around a really long time. According to Wikipedia:

IntelliSense was first introduced as a feature of a mainstream Microsoft product in 1996, with the Visual Basic 5.0 Control Creation Edition, which was essentially a publicly-available prototype for Visual Basic 5.0. Although initially the primary "test bed" for the technology was the Visual Basic IDE, IntelliSense was quickly incorporated into Visual FoxPro and Visual C++ in the Visual Studio 97 timeframe (one revision after it was first seen in Visual Basic). Because it was based on the introspection capabilities of COM, the Visual Basic versions of IntelliSense were always more robust and complete than the 5.0 and 6.0 (97 and 98 in the Visual Studio naming sequence) versions of Visual C++, which did not have the benefit of being entirely based on COM. These shortcomings (criticized by many VC++ developers since the 97 release) have been largely corrected in the post-.NET product lines. For example, one of the most requested capabilities missing from the pre-.NET products was support for templates, which is now fully implemented.

So that's over a decade. And now, in the March CTP of Orcas, JavaScript joins the club. Jeff King blogs:

The March CTP of Visual Studio marks the debut of a much-requested and long-awaited feature: improved JScript IntelliSense.  We’ve been working on this for almost a year now and I’m pretty excited to finally be able to share it with the public. 

It's actually a much harder problem in a language that doesn't do strong typing.

Kate

Friday, 02 March 2007 20:20:38 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 27 February 2007

While our new projects are on VSTS / TFS, we have some older projects on source safe that we aren't migrating. If you're in the same boat then you need to pay attention to the DST change that is coming up very soon. You could lose a checkin (possibly even the entire project history) if another one occurs within an hour of the first. Now, which is easier - banning all checkins on the DST change day, or reading a knowledge base article and following some simple instructions?

Kate

 

Tuesday, 27 February 2007 19:52:42 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 26 February 2007

Joey deVilla pointed out these cool sites for making origami out of money.

http://members.cox.net/crandall11/money/shirt/
http://www.metacafe.com/watch/300507/make_an_origami_shirt_out_of_a_dollar_bill/

I couldn't help but notice they featured American money... since loonies are really hard to fold, and toonies not much better, I tried a five:

Fun!

Kate

Monday, 26 February 2007 19:27:18 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 24 February 2007

Man, the hits just keep on coming at Channel 9. This time it's Rico Mariani, nominally on performance but in my opinion really on how to have a successful career. Reminiscing about the University of Waterloo, computer stores in Toronto, the amazing Ontario Science Centre, and a Commodore PET (all things from my past though I didn't work at these places I just visited them) he somehow works into every sentence how being a nice person and wanting to help is a recipe for success. Later he starts talking about creative leaps and eventually about how to make your programs faster.

Want to be seen as an expert? Want to be put in charge of something? Want to make a difference in someone's life? Watch it! It's a huge download - over 800 meg - but so worth it.

Kate

Saturday, 24 February 2007 18:37:15 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 23 February 2007

Who knew that picking up enough programming knowledge to teach it to talented kids at a summer camp could lead to a career doing some of the geekiest and most detailed work there is in this business - testing the compiler itself to make sure it still works the way it's supposed to? That's just one of the nuggets of information in this latest Channel 9 C++-land interview:

Meet Marina Polishchuk, a software engineer on the VC++ quality control team. Her mission: Outsmart the compiler with clever programs that confuse and or break it. Fun stuff. Here, we learn about what she does, why she does it and how she got here. Enjoy!

Kate

Friday, 23 February 2007 07:06:13 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 20 February 2007

The Developer Night in Canada (DNIC) User Group Tour is all set!

Our (East of Toronto) date is April 11th. Register now!

The purpose of this event is to demonstrate how the Microsoft Application Platform provides a robust and secure foundation for building data-driven applications and Web sites. Specifically, this session will examine some of the tools and technologies available for developers including Visual Studio Team System for Database Professionals and examine some of the exciting new features of ADO.NET.

Our session will feature our own alumnus, Jean-Luc David:

Jean-Luc David has written four books for Wiley Publishing (including Professional JavaScript 2nd Edition, Professional WinFX Beta, Professional Visual Studio 2005 Team System and most recently, Professional Team Foundation Server). Prior to joining Microsoft Jean-Luc had been a Microsoft MVP for three years. Jean-Luc is very passionate about the community and loves talking and interacting with developers and IT professionals. Jean-Luc lives in downtown Toronto.

See you there!

Kate

Tuesday, 20 February 2007 16:38:34 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 19 February 2007

Channel 9 has discovered C++ land and just doesn't want to leave. This time it's Nikola Dudar's turn and he talks about STLCLR (which has had various other names in the past):

If you write STL code and want take advantage of the BCL while still being able to write STL code, then you're in luck. How so? Well, Nikola Dudar, program manager in the VC++ Libraries Group explains, in detail, the Orcas STLCLR library. We also dig into the evolutionary trajectory of VC++, and discuss some other interesting Orcas C++ libraries. Tune in. Lots of great stuff going on in VC++ World...

Keep 'em coming, Charles!

Kate

Monday, 19 February 2007 15:40:09 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 17 February 2007

Imagine that you needed to go somewhere NOW and stay there for a while. Like maybe weeks or months. What would you need to take? It kinda matters why you're leaving, or maybe it doesn't. You could be fleeing a burning house like my neighbours did, or flying to a sick relative, or responding to any number of natural or family disasters. And the last thing you need at a time like that is to be running around wondering about paperwork and documents to take with you.

If you have a laptop, that's a really good start, but think about all the identity-related numbers you sometimes need to look up. For example, what if you needed to write a cheque? It doesn't happen very often these days, but should you take your chequebook with you just in case? Maybe it would be enough to have your account information with you, so you could call your branch and ask them to courier you cheques. Maybe you live in a small enough town (I do) that the bank knows who you are by your name and doesn't need the account number. What about all your credit cards, even the ones you don't use and keep for emergencies? Can you get the balance for all of those online or over the phone -- sure you can. But not all of them tell you your credit limit (why? I have no idea) so perhaps a list of cards and their limits would be handy. And coming back to that burning house, I bet your insurance policy is in it. Do you even know your agent's phone number? Why on earth would you? It's not like most of us chat with whoever sold us that policy all those years ago.

Lifehacker suggests putting this sort of thing on a "getaway drive". List your bank accounts, with the phone numbers and names of the branches and your rep or agent. List where your safety deposit boxes are. Put everyone's SIN, and maybe scan your passports, drivers licenses and so on. Scan your insurance policies, at least the most recent bill with your policy number on it. If you might end up going out the door without your credit cards, having the numbers to call to get new ones (with your account numbers and whatever other information they might ask for to confirm your identity) could save a lot of time. Think about needing to replace cards, ID, and the like. Think about needing to connect to your finances from somewhere else, maybe from someone else's computer -- you know, that doesn't have a file called passwords.txt on the desktop :-) and a Favourites list of links to all the companies you have accounts with? Put what you need on here - a Word file, a bunch of JPGs (scan stuff or just take pictures of it with your digital camera), an HTML file of links. Then encrypt the heck out of it, and put it on a little memory stick / flash drive. [If you've got lots of spare space, take a hundred or so pictures of stuff in your house -- the CD collection in the living room, a slow video pan across each bookshelf, your dishes, your closets, and so on to simplify any future insurance claims. Imagine being able to answer the question "how many books were in the house?" ] Put the drive somewhere that's always with you but not incredibly losable, or that's easy to grab on the way out of the door. Heck, make a copy and snail mail it to the family member who lives furthest from you, and ask them to hold it for you indefinitely. One less thing to worry about.

Kate

Saturday, 17 February 2007 15:26:02 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 16 February 2007

That Mac ad where the PC is going for "surgery" so he can upgrade to Vista really ticks me off. First, I upgraded a truly ancient Toshiba to Vista just fine. And second, way to make a bug a feature and a feature a bug! Ha ha when I need a new OS I just throw myself in the garbage and someone buys a new machine! That's so much better than replacing one card or switching to a bigger hard drive! Whatever.

That said, I know plenty of geeks are going to use Vista as an excuse for a new laptop. I'm one of those geeks and I'm about ready to get a new machine. One of the things that's held me back is the thought of the time and trouble to get everything set up my way. You know, my wallpaper, my favourites, my files of course, folder settings, there's so much. Applications don't worry me so much because half the stuff I have installed on here should really go, I don't use it any more. Half the rest came from my MSDN disks and I know where to find those. What's left (WinZip, a really old Paint Shop Pro that doesn't try to do anything fancy, miscellaneous games and utilities) I can install from the \install folder on one of my two main file servers.

And now for the settings, here's something that will make it much less painful: Windows Easy Transfer. Put the old and new machines on your network, and:

This wizard is built into Windows Vista and will automatically transfer your personal data from a Windows 2000, Windows XP, or Windows Vista based-PC to a Windows Vista-based PC.  It gathers up the data from your old PC and then applies it on your new PC in the right places.  It will move user accounts, files and folders, email messages and settings, address book entries, and Windows settings.  It does not move programs.

No network? (Helping your family, and they don't have a network onaccounta they only have one machine?) Use a special cable to connect the two machines. There's even an option involving removable hard drives or burning to disk that sounds like it might work if you have only one machine but are repaving. (Sounds a might scary to me, but ok.)

Plus, there's a tool in beta that moves your apps too:

we have been working on a new tool called Easy Transfer Companion, which will transfer programs and program settings from a Windows XP-based PC to a Windows Vista-based PC.  When used together with Easy Transfer, you will be able to move everything you need to your new PC running Windows Vista.  Easy Transfer Companion has been designed to transfer many of the most popular programs for consumers and small businesses, as well as many others.  You can transfer programs with either an Easy Transfer Cable or a network.  We've released the tool in Beta so that we can take feedback on the overall functionality and get more information about the experience of transferring specific applications outside of those that we've tested internally.

Now I just have to choose a shiny new laptop...

Kate

Friday, 16 February 2007 14:56:32 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 15 February 2007

I read a few interesting posts (Barry Leiba, Raymond Chen) about email subject lines. I get about one email a minute, and even after you strip out the offers that aren't really that personalized (I already get those from Canada, thanks, and I don't even have one of those, and as for that, are you serious?) I get dozens and dozens of real and important emails every day. And at a quick guess at least half have a terrible subject line. If you've heard me speak, you've heard me try to teach the art of a good subject line. Let me try some more here:

  • Never use the name of a project or client, and only the name of the project or client, as your subject line. My "City of Kawartha Lakes" outlook folder contains roughly 50% emails that break this rule. Most of my staff were on the project at one time or another and were typically on other projects too. So when they emailed me a question or a status report, they put "City of Kawartha Lakes" or "CKL" or "City web site" as the entire subject. The problem with that is it's so ephemeral. This morning it distinguishes your mail from the others in my Inbox you sent me about a different project. 6 months from now, when I'm trolling the client folder trying to establish when something was decided, it's really of no value to me at all. The City staff were no better: they used to write with subjects like "our website project". It was during that project I started to train my staff on subject lines.
  • Really try to imagine someone using your email a year from now. Then you'll naturally change "weekly status report" to "status report, week of Jan 2". That's doubly true if it's not date related -- at least I can sort my emails by date.
  • Never use a subject line that will make little or no sense if it's forwarded, or could offend. "Need a ruling on bug 234" is ok, but just "bug 234" will not make sense when it lands in the client's inbox, and "Can you please get these morons to make up their minds?" is also bad. If I have to change your subject line in order to forward the message, then when you're cc'ed the subject line change will confuse you.
  • Barry points out the problem with "meeting with Barry" or anything else that has some sort of directionality in it. Even "today's results" becomes mislabelled tomorrow.
  • Probably the second worst subject line in the world is "question". The worst: "couple of questions". I prefer separate emails for separate questions, so I can reply to them one at a time, forward them to those who can truly answer them, and so on.
  • If you don't get any spam at all, and have a way better spam filter than me, or are luckier than me, take a look at what is getting dropped once in a while, and don't use those subject lines. "question" is real popular in my junk box, as are "Good day", "Approved", "Document", "Request" and so on. Plenty of folks (and spam filters) drop those unread.
  • If I am not likely to recognize your name, take extra care with your subject.  Email from a known correspondent with a confusing subject line will at least be read. It may not be very file-able, but I'll read it. The same subject line from a stranger might go straight to the trash. At events I recommend mentioning the event in the subject.
  • When replying, feel free to fix subject lines. Most importantly, remove [ACTION REQUIRED] and similar flags if you are not actually requiring action in your reply. I don't object to folks using these tags but it gets tiring when my folders are full of ACTION REQUIRED messages that say "ok you will have it by end of day".

Finally, as a Raymond-commenter points out, make your first line or two really count. It may be all I read. If you want me to review something, start the email "can you review this document by Friday?". Then you can provide the backstory after that. I file a lot of things unread, because I get cc'ed on things. This is good. It's better still if the part I can see in my two line preview says "yes, we can do this for your by Friday" or "go ahead, I have approved the budget" so I don't even have to open the message.

Kate

Thursday, 15 February 2007 14:41:41 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 14 February 2007

I came across the most astonishing story. Here's a tiny excerpt:

You know the logics setup. You got a logic in your house. It looks like a vision receiver used to, only it's got keys instead of dials and you punch the keys for what you wanna get. It's hooked in to the tank, which has the Carson Circuit all fixed up with relays. Say you punch "Station SNAFU" on your logic. Relays in the tank take over an' whatever vision-program SNAFU is telecastin' comes on your logic's screen. Or you punch "Sally Hancock's Phone" an' the screen blinks an' sputters an' you're hooked up with the logic in her house an' if somebody answers you got a vision-phone connection. But besides that, if you punch for the weather forecast or who won today's race at Hialeah or who was mistress of the White House durin' Garfield's administration or what is PDQ and R sellin' for today, that comes on the screen too. The relays in the tank do it. The tank is a big buildin' full of all the facts in creation an' all the recorded telecasts that ever was made—an' it's hooked in with all the other tanks all over the country—an' everything you wanna know or see or hear, you punch for it an' you get it. Very convenient. Also it does math for you, an' keeps books, an' acts as consultin' chemist, physicist, astronomer, an' tea-leaf reader, with a "Advice to the Lovelorn" thrown in. The only thing it won't do is tell you exactly what your wife meant when she said, "Oh, you think so, do you?" in that peculiar kinda voice. Logics don't work good on women. Only on things that make sense.

He's right, isn't he? Well, not about women, but about "you got a logic in your house" and the description of what your logic does. And sure, tons of science fiction stories (plus Marshall McLuhan) predicted this. But this story was published  - I kid you not - in 1946. Sixty one years ago.

Wow. Check out the author bio and then read a whole pile of his stories online. All the standard tropes of science fiction stories are here ... just a lot longer ago than I would have thought. And his gender attitudes, in other stories, reveal themselves to be a little different than this quote would imply.

Kate

Wednesday, 14 February 2007 11:50:28 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 13 February 2007

Here's another C++ video on Channel 9. And this one is about strategy and vision:

How will VC++ evolve? How has the advent of managed code affected the evolutionary trajectory of VC++? What's the VC++ team up to these days, anyway? How much time are they spending innovating C++, the native language?

Tune in and learn first hand from two people who know the answers to the above questions (and much more); Steve Teixeira, Group Program Manager, and Bill Dunlap, Program Manager.

If you want to know where Visual C++ is heading, then you definitely want to watch this interview. If you are a C++ developer, the message should be very loud and clear: Microsoft has not forgotten about you!

These guys know you don't want to throw your old code out and it isn't broken. You want to keep working with it. You want to extend it to pick up new shiny good stuff, but you don't want "step 1: port the whole thing to C#." They also know you love the language and you want Microsoft to love it and love you. And they realize that C++ doesn't need to be all things to all people, because most folks who have mastered C++ can pick up the C# or VB they need when necessary. So if you accept those two premises - that native code is super important, and that not every single UI wizard needs to support C++ - where do you think that leads? Watch and find out.

Kate

Tuesday, 13 February 2007 11:39:05 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 12 February 2007

Aaron Stebner has a blog post and an update on installing the C++ redistributables (msvcr80.dll, atl80.dll and the rest.) You can choose

  • the user doesn't need to do anything, but there's a progress dialog and it has a cancel button
  • the user doens't need to do anything, there's a cancel dialog, but no cancel button
  • there's no ui at all and nobody knows what's happening

Turns out the command line you use varies a tiny bit for redistributable packages you installed with Visual Studio or those you get from the web, so read both posts.

Kate

Monday, 12 February 2007 11:24:12 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 11 February 2007

You know what they say: if I knew, I couldn't tell you. But Mary Jo Foley doesn't mind a little speculation, and Scott Guthrie seems pretty clear on timelines in the blog and presentation she quotes. So it's either "late 2007 or early 2008" or "later this year". But don't say I said so :-)

Kate

Sunday, 11 February 2007 11:12:54 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 10 February 2007

Visual Studio 2005 SP1 included new versions of some C++ libraries. Your application's manifest specifies what versions of the DLLs it wants -- so if you build with SP1, the application is going to look for SP1 versions at runtime. That has consequences for your deployment strategy, since non developers are unlike to have SP1 versions of those DLLs yet.

Nikola Dudar has gathered some questions and answers on this topic. I'll give you the questions, read his blog for the answers:

  • It looks like with VS2005 SP1 if a new version of VC++ libraries is installed, all apps start using it. Is this new policy for VS2005 SP1?
  • When my application is rebuilt with VS2005 SP1 it runs only when SP1 versions of VC++ are installed. Why does not it run when RTM versions of libraries are installed? Is this new policy for VS2005 SP1?
  • This behavior of VC++ libraries in VS2005 SP1 is it only specific to SP or is it going to be same in future releases of SP and hotfixes?
  • Wasn't the whole point of manifests to allow applications to specify the versions of VC++ libraries they want to load?
  • My application is using a DLL that is built with VS RTM. The application links against import library of that DLL and call exports of that DLL at runtime. Is this going to work with VS2005 SP1 and other SPs?
  • My final product is a set of DLLs. If I release a version of my DLLs built with VS2005 SP1, can my users who use VS2005 RTM to use these libraries?
  • My application is linking to static library party is built with VS RTM. Is this going to work with VS2005 SP1 and other SPs?
  • I see VS2005 SP1 has installed SP1 version of VCRedist*.EXE. Should I send it to my customers and ask them to install it?
  • I am using MSMs to redistribute RTM versions of VC++ libraries. Should I sent SP1 version of VCRedist.EXE to my customers and ask them to install it?

If these questions matter to you, then you have a blog post to read, don't you?

Kate

Saturday, 10 February 2007 11:07:33 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 09 February 2007

Bruno van Dooren, C++ MVP and general nice guy, blogged recently on "Is C++ still a viable language?" He makes lots of good points about interop, templates, and control. He points out that some UIs are a lot easier to build with C#. Then, out of the blue, he says mean things about VB. I know he's only joking, but I just felt I had to defend VB's honour.

Here's the thing. C#, it's mostly just VB with semicolons, you know? And that's not an insult, you shouldn't gasp when you read it. VB's a good and useful language. [Of course I mean VB.NET, come on, we're coming up to our fourth release, the default VB is VB.NET now.] It's no secret I do far more work in VB than in C#. Once in a blue moon I want to do something in VB that would be easier in C# (last week I wanted to delay hooking up button handlers until some initialization was in place, something the Handles keyword isn't going to do for me) and if I did more C# I would probably find the occasional thing that would be easier in VB. Big deal! I can always find a way to do those things anyway. What matters is the framework, and that's the same in VB, C#, or C++/CLI. I like the synactic sugar of Dispose=destructor more than the synactic sugar of "using" or "Using" but the underlying mechanism is the same in all three cases.

Kate

Friday, 09 February 2007 11:00:29 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 08 February 2007

Herb updates us on the next C++ standard:

I'm happy to report that work on "C++0x", the much-anticipated Version 2.0 of the ISO C++ standard, has dramatically picked up steam over the past few months. The ISO C++ committee has now published the first partial draft of C++0x and plans to publish a complete public draft before the end of 2007.

As part of the push to get this done, the committee is having extra meetings, including one in Toronto in July. Hmmmm.....

You need to read Herb's blog post yourself for the details on what's in C++ 0x (Concepts, Garbage Collection, Memory Model for Concurrency, Concurrency Libraries) and what's not (Modules, Dynamic Libraries) with helpful links to even more details. This is our future -- and you can be sure, C++ has a future.  

Kate

Thursday, 08 February 2007 10:46:46 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 06 February 2007

I missed this article when it first appeared. Mary Jo Foley talked to Jason McConnell, me, and David Johnson about getting to all the new exciting Vista goodies, and how it's a bit easier from C++ because you can mix and match native and managed so simply. Watch for more guidance and guidelines on this from Microsoft coming soon.

Kate

Tuesday, 06 February 2007 10:33:14 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 05 February 2007

Dylan Smith writes about testing: Unit tests (automated, written by programmers, repeatable), Acceptance tests (stories or scripts that can be done by developers or users and test high level requirements) and Exploratory tests (noodling around by a clever person to see how an app is doing). I like these categories and I do all three on my projects. I think a lot of developers get excited (rightly) about Unit tests and run the risk of forgetting the other two. You still need to lead your users through a structured process that causes them to conclude you have finished their project. (And you still need to rehearse that structured process yourself so you know in advance it will pass.) You still need to play around with it a bit, outside of the confines of test cases, and assure yourself it really is a good application.

We're not TDD, so I don't write the tests and code to them. But I write the scripts for Acceptance testing as we develop stories and requirements. They're also a fine way to bring a new programmer up to speed on a project by leading them through what it does and how you know it's working.

Kate

Monday, 05 February 2007 13:13:28 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 04 February 2007

These are nice ... posters of all the Visual Studio keyboard shortcuts (language specific, according to your Visual Studio settings) are now available. Here's a snip of the C++ colour one (there's a black and white one too.)

Go get it!

Kate

Sunday, 04 February 2007 12:35:14 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 02 February 2007

It's easy to get intimidated by a feature like Lambda Expressions. It has a Greek word in it, so it must be difficult, right? And you can read explanations like this:

Lambda expressions, one of the most important new features to be included in the next 3.0 version of C# and one that offers support needed by the LINQ Project, are precisely a feature coming from the world of functional programming. ... Scheme ... Lisp ...

Or this summary:

In mathematical logic and computer science, lambda calculus, also λ-calculus, is a formal system designed to investigate function definition, function application, and recursion. It was introduced by Alonzo Church and Stephen Cole Kleene in the 1930s; Church used lambda calculus in 1936 to give a negative answer to the Entscheidungsproblem. Lambda calculus can be used to define what a computable function is. The question of whether two lambda calculus expressions are equivalent cannot be solved by a general algorithm. This was the first question, even before the halting problem, for which undecidability could be proved. Lambda calculus has greatly influenced functional programming languages, such as Lisp, ML and Haskell.

Lambda calculus can be called the smallest universal programming language. It consists of a single transformation rule (variable substitution) and a single function definition scheme. Lambda calculus is universal in the sense that any computable function can be expressed and evaluated using this formalism. It is thus equivalent to the Turing machine formalism. However, lambda calculus emphasizes the use of transformation rules, and does not care about the actual machine implementing them. It is an approach more related to software than to hardware.

This sounds really difficult. So let me show you something that's not difficult at all:

<input type=button value="Try it now" onClick="alert('Hello from JavaScript!')">

You know what that does, right? Well the stuff after onClick=" and before "> is [gasp!] a Lambda Expression. It's a little piece of code that you can stick somewhere without a whole lot of defining a function and defining a delegate and pointing that delegate at that function and blah blah blah. You can stick two lines of JavaScript in there if you want:

<INPUT TYPE="radio" VALUE="Switching to Blue" onClick="alert(value);document.bgColor='blue'">

This feels natural and ordinary in JavaScript, and all folks are talking about is giving you that same freedom in strongly typed languages where the compiler is your friend. We have some of this in C# 2.0 with anonymous methods, but lambda expressions are in effect more strongly typed. Here's a nice explanation of the subtle distinction.

It's not actually that intimidating at all ... it's going to make life easier.

Kate

Friday, 02 February 2007 20:51:26 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 01 February 2007

[Sorry about the blogging gap - nothing dramatic, just a little case of overworked and underslept. Good excuse to start up again though.]

Imagine a room with a table, no computers, and four really smart people who care tremendously about helping people write software, and who tackle questions like "what keywords should be in this language" every day -- and whose decisions actually will get implemented. A full hour of amazing conversation appeared recently on Channel 9.

How will imperative programming languages evolve to suit the needs of developers in the age of Concurrency and Composability? What role can programming languages play in enabling true composability? What are the implications of LINQ on the furture of managed (CLS-based) and unmanaged(C++) languages? How will our imperative languages (static) become more functional (dynamic) in nature while preserving their static "experience" for developers? 

Answers to these questions and much more are to be found in this interview with some of Microsoft's leading language designers and programming thought leaders: Anders Hejlsberg, Technical Fellow and Chief Architect of C#, Herb Sutter, Architect in the C++ language design group, Erik Meijer, Architect in both VB.Net and C# language design and programming language guru, and Brian Beckman, physicist and programming language architect working on VB.Net.

This is a great conversation with some of the industry's most influential programming language designers. Tune in. You may be surprised by what you learn...

Some quotes and paraphrases that caught my attention:

  • "No language can ignore concurrency and stay successful for mainstream programming over the next five, ten years."
  • our entire industry is based on composable software and we manage to do composable software with the languages, libraries and frameworks we have now. it's rather amazing that we can do it.
  • "all you can do as a language designer is slow down the accrual of new features that will eventually lead to cave in."

Now if you aren't sure you know what a lambda expression is, or what makes a language functional as opposed to imperative, or what LINQ would have to do with that, or what composability is, then you may think you don't want to watch this video. But you'd be wrong! Spend this hour with these gentlemen and not only will you learn all those things, you'll learn why it affects you and why you should be following, at least a little bit, the current work in this area.

Watch it!

Kate

Thursday, 01 February 2007 20:05:14 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 21 January 2007

A lot of people are asking me if I am using Vista, if they should use Vista, if I think Vista will get good adoption, and so on. I have Vista on some machines, still have XP on my ancient primary laptop, and miss Vista when I'm not using it. I tell people this and they assume it's all about the shiny and the seethrough and the pretty. It's really not. For me the fast search is a big thing. And I still consider UAC a feature and have no intention of turning it off or launching everything I do from an elevated command prompt. I like the thumbnails that actually show your content - though I suppose some might dismiss that as "pretty", it's saved me from opening big files with odd names more than once, just so I can tell whether I want to delete them or not. An MSDN article lists a number of useful benefits of running on Vista that have nothing to do with being pretty. Beyond UAC and other security benefits, consider Sleep (fast as Standby, safe as Hibernate), SuperFetch, ReadyBoost, restart manager, presentation mode, ... there's so much! It's not just about the .NET Framework 3.0 -- you can have that downlevel. It really is a new version of the operating system and it does a lot of things a lot better.

So I forgive it for being pretty.

Kate

Sunday, 21 January 2007 17:45:53 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 19 January 2007

I do my searching these days at www.live.com -- the ads are less obtrusive or easier to ignore or something and on the occasions I've done the same search in two places, I like my Live results better. But for the next little while I'm going to use a slightly more complicated URL: http://click4thecause.live.com/Search/Charity/Default.aspx?locale=en-us&source=msnhp. I know, that's a mouthful, but here's the thing - it searches the same, but it also donates to charity. Really! I know we've all seen those "if you forward this to 40 people Microsoft will know and they will give money to charity" emails, but this is different. After all, counting web hits is something that can really be done.

Education and sports programs for refugee youth around the world? Sounds like a good cause to me. Check it out, and make it your new search page, won't you?

Kate

Friday, 19 January 2007 17:20:40 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 18 January 2007

Rory interviews Kam VedBrat about glass, composition, DWM, and other ways to stray from the gray-buttons-and-white-textboxes-on-a-big-gray-background that is the UI most devs naturally create. Watch it!

Kate

Thursday, 18 January 2007 07:32:58 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 16 January 2007

Thottam R. Sriram has an article in the January MSDN Magazine called CLR Inside Out: Introduction to COM Interop. As the introduction says:

COM is a wonderful technology. One aspect of the common language runtime (CLR) that makes it an extremely powerful platform is that it allows seamless interactions between Microsoft® .NET applications and unmanaged COM components. However, when I searched the Web, I found few working samples demonstrating the very basic concepts of COM interop. The purpose of this column is to illustrate those basic concepts in order to provide solid working examples that can jump-start users in this technology.

I'll start off with a simple Active Template Library (ATL) COM server and try accessing methods in this server using an unmanaged COM client, then do the same thing with a managed client. I'll walk through the various DLLs to illustrate the translation from unmanaged to managed, and I'll show how to access an exported method in an unmanaged DLL using P/Invoke. The toughest part of this is to figure out marshaling of complex structures, which I don't cover exhaustively in this column-it would be a complete column (or book) on its own. I'll show you how unmanaged code can call back into managed code using interfaces. (You could do this with delegates as well, but I won't cover that in this column.)

Finally, I'll discuss debugging your COM interop project using public symbols. This will give you very basic introduction to WinDbg.exe, unmanaged debugging, and managed debugging using SOS. I'll demonstrate the stack from managed to unmanaged as calls are made in either direction.

The managed client is in C# -- when you write your clients in C++/CLI you don't have to figure out how to declare and marshal complex structures, after all. And seeing how to call back from native code to managed code is helpful indeed. I'm not sure if Reverse P/Invoke is the official name for this, but it works for me. You set up an interface in your C# code and decorate it with attributes for COM. Then you implement that interface in your code and use tlbexp to make a COM Callable Wrapper around your .NET object. Then you hand-define the same interface as a COM interface in your native code and you're all set. The .NET code can P/Invoke some native function and pass in a reference to the .NET interface. By the time it's unmarshaled over in the native world, it's become a smart pointer to that COM interface and you can invoke the method from the native code. It's a little tricky, but it's not hard - once you've seen it done.

Since the article wraps up by touching on Windbg, there's something for everyone. Check it out!

Kate

 

Tuesday, 16 January 2007 11:42:47 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 15 January 2007

I read an interesting blog entry at Dumb Little Man. Essentially, the story goes like this. A guy is fed up with his job, doesn't like it, is ready to quit. Instead he throws himself whole-heartedly into it and gives it his all. He does the tasks he dislikes, he does tasks he isn't asked to do, he speaks up and speaks out, and he becomes so much happier in the job. And if that wasn't enough, he gets a two-layer promotion and a $15,000 a year raise.

His list may not precisely work for you. You may not be asked to do TPS reports, whatever they are. You may live a life like mine where no one can give you a promotion. You may not think that working long hours is important to success at your company, or worth what you have to give up in your private life. But look past the details of his particular list. What would happen if you totally threw yourself into what you are doing now and really really did it?

Kate

Monday, 15 January 2007 11:07:59 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 14 January 2007

Here's another reason to install Visual Studio SP1 - it fixes one class of "intellisense stops working" problems. Intellisense stops working a lot for C++ developers. It doesn't happen very often for me, but people mention it quite often when I speak and some of my coworkers are less lucky than I am because it happens in their day to day work.

If Intellisense stops working for you and you're working on a C++ project, the workaround is to close Visual Studio, find and delete the .ncb file, and re-open Visual Studio. As you can imagine, that cuts into flow quite a bit. Now a KB article mentions that SP 1 fixes "In a Microsoft Visual C++ 2005-based solution that includes multiple projects, the IntelliSense of a project does not work correctly if the project references types from another Visual C++ or Visual C# project." Cool!

Kate

Sunday, 14 January 2007 21:48:29 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 13 January 2007

Jeff Atwood has a fun post explaining how much more quickly he finds things now that he can once again just type the names of programs. It's so true. Instead of clicking Start, All Programs, Microsoft Office, Microsoft Word Whatever, with the attendant pauses while the menus come up and the pauses while I desparately scan the huge list looking for the thing I know has to be there somewhere, it's just press the Windows key and type word, then press enter. Or perhaps type w if I'm lucky enough. The search is blazing fast and there's the application I want, or the file I want, or the control panel sub-thingy that has a new name now so I can't see it. Ah, typing. I never really gave up on typing. And now it's once again one of the main ways we'll interact with the operating system.

And not just because of the way cool search thing. There's the UAC aspect to this too. Open yourself an elevated command prompt, and everything you launch from that command prompt will be elevated -- no manifest, no right-click Run As Administrator, just run your utility so you can do whatever administrative tasks you need to do in relative peace. Small price to pay: you have to type the names of those apps (possibly with their full paths) into the command prompt.

And that's not the only deja vu I get as a Vista user and developer. Does anyone remember making Windows applications before, say WinForms? OK, before VB or before MFC? Before there was a framework that gave you an object called Button that had a property called Text or Caption or the like, how did you set the text on a button? You sent it a Windows message (WM_SETTEXT) with a parameter of "Save" or whatever you wanted.  Well you don't have to do that any longer, but how do you arrange for the shield icon to appear on a button? (It's a convention that if clicking a button is going to pop up an elevation consent dialog, you put the shield on the button.) By sending it a BCM_SETSHIELD message, of course!

The longer you've been programming, the less jarring these things are. Soon enough the tools will catch up and it will be all drag-drop, set properties etc. If that's all you've ever known, you might feel like Vista has dropped you through the looking glass. But if you have some memories of the old days, you're going to be on more solid ground. And you probably still type really fast.

Kate

Saturday, 13 January 2007 21:40:29 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 12 January 2007

Eric Appel recommends installing SP1 for Visual Studio 2005 and the Visual Studio 2005 SP1 Update for Windows Vista Beta. Let's drill into that name a little bit more. Starting at the end, it's a Beta of Visual Studio 2005 SP1 Update for Windows Vista. That is in turn an "Update for Windows Vista" of "Visual Studio 2005 SP1". You have to start with SP1 first. But SP1 has nothing to do with Vista. 

SP1 is a common-or-garden service pack for Visual Studio. It fixes a pile of little things that were found in Visual Studio. Some are just syntax colouring, some are real issues. And it can be argued that you should only install it if you need it. There are some issues with the service pack itself: Heath Stewart has a summary with workarounds where they are known. It can take a long time to install, and you should make sure you have enough disk space, because if the install fails the rollback is a little overenthusiastic ... you might have to reinstall Visual Studio 2005 to make sure certain libraries are in place. That said, lots of people are glad they installed it.

If you want to install the update for Vista, then you need to install SP1. And once you've done that, you'll find many things both simpler and faster. Happy me.

Kate

Friday, 12 January 2007 20:45:47 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 11 January 2007

Poor Visual Studio 2005, aka Whidbey. Developed and released before Vista, it's Vista-blind. Say you're building a COM component and one of your build steps registers it, writing to something under HKLM. Unless that instance of Visual Studio is running elevated (perhaps because you right-clicked and chose Run As Administrator) the registration will fail. The fix: close Visual Studio, run it again elevated, repeat your build. It's a little frustrating.

Every month that goes by is going to make this better. Eric Appel has a nice summary of what you can do now: install a pair of updates (one released, one in beta) and set Visual Studio to always run elevated. You'll need to consent every time you run it, so I actually skip this, run non-elevated most of the time, and when something fails I close and re-open Visual Studio.  If you would find that super frustrating, go ahead and mark it to require Administrator. It's also a good habit to test by double-clicking your EXE in Windows Explorer rather than hitting F5, so that your app is elevated or not elevated according to its own manifest and not according to the way you started Visual Studio.

It's a transition time. It won't last forever.

Kate

Thursday, 11 January 2007 20:29:05 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 10 January 2007

Eric Lee has spotted the Vista-programming-is-easier-with-C++/CLI phenomenon for himself.

... I have really come to enjoy the second incarnation of managed C++, now called C++/CLI. Unless you are really good at .NET marshalling, a lot of great Windows Vista features just aren't that accessible from .NET.  This is where C++/CLI really comes into its own.

He gives a nice example featuring a preview handler. Preview and thumbnail handlers are really cool in Vista, but you have to implement some COM interfaces to do it. His final conclusion:

I'm pretty pleased with how C++/CLI gave me a way to mix what C++ and ATL do pretty well (COM, Shell Extensions, etc) with what .NET does pretty well (user interfaces, dnd design, etc).

Best of both worlds! I have a slide or two that say that :-)

Kate

Wednesday, 10 January 2007 20:21:10 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 09 January 2007

The January Orcas CTP is ready. The new C++ features include .NET Framework Multitargeting (allows the user to target different versions of the .Net framework from a single instance of Visual studio) and Library Versioning (renaming assorted libraries with 9 in their names because they differ from the current versions.) There's a handy list of Orcas features and which CTP they first appear in on MSDN. To view the documents, you'll need an XPS viewer unless you're already using Vista day to day.

Community Technology Previews are not as fully tested as betas, but they're here now, and you can provide feedback after working with them, so why not take a look?

Kate

Tuesday, 09 January 2007 07:38:48 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 06 January 2007

Joe Duffy has moved from the CLR team to Parallel LINQ. How do you like this offer:

We're looking for supersmart technical people to join the team and help change the face of programming for anybody writing code on the CLR or VC++. PLINQ isn't the only project. Solid CS skills are a must, but you don't necessarily have to be a concurrency guru (right away).

Help change the face of programming? Sounds (almost) irresistible to me!

Kate

Saturday, 06 January 2007 13:41:16 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 05 January 2007

Heh, you think it's not possible to leak memory from a managed application? Of course it is. For one thing, if you leak a thread, you will leak that whole thread's stack. Oh yes, there's more to memory than heaps. And there's more than one heap, too. You could mess up your interop and leak from the native heap, or you could even leak from the managed heap, generally as a result of an error somewhere other than the leaking code ... like a misbehaving finalizer that prevents some other finalizer from running, which prevents some other memory from being freed since it can't be freed till it's been finalized. Eeeeeww.

If none of this ever occurred to you before, and you're not scared to read more about it, check James Kovac's article in the January 2007 MSDN Magazine. He tells you how to notice leaks, track them down, and do something about them. (BTW, he's a Canadian MVP.) You'll also learn what a garbage collector does instead of buying a Porsche when it suffers a midlife crisis.

Kate

Friday, 05 January 2007 13:27:47 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 04 January 2007

Ahmed's been running some Touchdown content in South Africa for ISVs who want to certify their applications on Vista. He's collected a nice set of links (about half of them were already purple for me) on the logo programs and things that will help you migrate to Vista. This stuff can be hard to find so having it in one place is very useful.

Kate

Thursday, 04 January 2007 13:20:01 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 03 January 2007

Last year I posted about a demonstration of tag clouds for US Presidential speeches, so you could see words like Constitution or economy wax and wane in the big-ticket political speeches over the centuries. Well now someone has done the same for Microsoft speeches over the decades. Watch Windows appear, or spot the Ballmer speeches, you'll find it a fun little pastime. I wish it had more consistency in the type of speeches used: testimony before Congress is never going to have the same words as a press release, but it's fun nonetheless.

Kate

Wednesday, 03 January 2007 13:15:20 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 14 December 2006

Microsoft has announced that the next Professional Developers Conference (PDC) will be October 2-5, 2007 in Los Angeles, with two days of pre-conference on September 30 and October 1. That's good news and bad news for me. I'm glad we're having a PDC this year because it means there's something to announce and something to get early bits of. The official word is:

The PDC is the definitive developer event focused on the future of the Microsoft platform.  PDC 2007 attendees will have the opportunity to access new code, learn about the latest Microsoft product offerings and hear from Microsoft executives about the various platform developments. 

Check http://msdn.microsoft.com/events/pdc/ for updates; you can also subscribe to the RSS feed to find out more information about the event as we get closer.  Registration will open in the May/June timeframe. 


 

So what's the bad news? LA, again. This will be three in a row. I wouldn't miss the PDC for anything but can't we go somewhere else?

Kate

Thursday, 14 December 2006 14:50:57 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 13 December 2006

Yes indeed, there will be a code camp in Toronto next year! It will be held Saturday, March 31st and the website is now ready for you to register as an attendee, a volunteer, or a speaker.

The Second Annual Toronto Code Camp, a free .NET community sponsored event, will be held on March 31st, 2007! Last years event was a huge success with over 220 attendees, 4 tracks, 20 speakers, 25+ volunteers and over $17,000 in prizes given away. This year’s event will be even bigger and better! Registration is now open, but remember, space is limited and based on last years response it will fill up fast.

 

Deadline for speakers is Jan 15th, for volunteers Feb 15th, and for attendees there is no deadline, but it will "sell out" -- to the extent a free event can sell out. Trust me, you want to be there. If you don't normally attend Microsoft events or user group meetings, either for scheduling reasons or because you don't want to be "sold to" and you worry that might happen at such events, you should make a point of coming to Code Camp -- it's a grassroots community event and a great opportunity to learn from a wide variety of speakers on a wide variety of technologies. And if you can stand the thought of ever speaking some day, Code Camp is the classic place to start. We'll even help you become a speaker if you're interested.

Kate

Wednesday, 13 December 2006 14:39:52 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 12 December 2006

Gee, ten minute talks on very specific technical topics... where have I heard that concept before? It really is something technical people need. Here are a bunch from MSDN in the UK along with a pretty nice UI to let you filter by technology, content level, even presenter if that's important to you. They seem to upload more about every other month.

I took a quick listen to "Wrapping Windows APIs with C++/CLI" and I liked it.

Kate

Tuesday, 12 December 2006 14:29:29 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 10 December 2006

The title isn't mine, it's Charles Petzold's, and I would be quite surprised if you didn't learn things about C++/CLI just by learning things about the .NET Framework. In other words, you don't need to plan to switch to C# to get some benefit of this free e-book. It was originally supposed to be a chapter, but ended up over 250 pages long.

I know people still need this material. I have a new mentoring client with an established team of C++ developers who are just looking at moving to the .NET Framework. I came and did a "what is .NET" talk for them, with diagrams like this:

 

If you already recognize these pictures and realize what they are supposed to illustrate, then you don't need the e-book. But if you haven't really paid much attention to the .NET Framework, then this is a fairly painless way to learn a lot of it. The thing is, it's all C#. My suggestion to you is to bear with that -- a C++ programmer can read C# without too much difficulty -- and then come on back here to see how to do the same things using idioms you already know and love, and how to drop back into native code any time you like for various reasons include control over your application's performance.

Kate

Sunday, 10 December 2006 13:45:07 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 09 December 2006

I was just looking at some old-style MC++ to convert a sample into C++/CLI. I had to convert this sort of thing:

public __gc class PostCodeChecker
{
public:
    virtual String* Check(String* code)
    {
        String* error = S"OK";
        return error;
    }
    Boolean Test(String* code)
    {
        Boolean ret = false;
        String* error = Check(code);
        if (error->Equals(S"OK"))
        {
            ret = true;
        }
        return ret;
    }
};
Into this sort of thing:
public ref class PostCodeChecker
{
public:
    virtual String^ Check(String^ code)
    {
        String^ error = "OK";
        return error;
    }
    Boolean Test(String^ code)
    {
        Boolean ret = false;
        String^ error = Check(code);
        if (error=="OK")
        {
            ret = true;
        }
        return ret;
    }
};

This is pretty mechanical work and just the sort of thing you might like to hand off to a tool. The VC++ team has been working on one, but it hasn't been a top priority. Now they've decided to release it as-is to those who might have some use for it, rather than holding onto it until it's perfected:

To set expectations correctly, the tool was going to be a “help” rather than a complete solution and in the push to complete other projects the tool was never fully completed, tested or documented. We are happy to release the tool “as is” as a few initial tests with external users have shown that they received benefits from using the tool even if: 1) it does not provide complete translation between the two different syntaxes and 2) manual modify of the outputted source code is still required to complete the conversion. The tool does come with source code so that users who wish to modify or extend the functionality to better suit their code bases can. The tool is totally unsupported by Microsoft.

If you have some oldstyle Managed C++ to convert, why not see if it can help you? It's a 5 meg download.

Kate

ps: one of the side effects of the more readable nature of C++/CLI is that after the mechanical work was done I just had to do this:

Boolean Test(String^ code)
{
    return Check(code)=="OK";
}

 

Saturday, 09 December 2006 07:44:38 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 08 December 2006

Do you read Raymond Chen's blog? You really should. Like so many of the blogs I read these days, it is also going to be available as a book.

Ryamond says:

Luckily, I found a sympathetic ear from the folks at Addison-Wesley Professional who were willing to take a chance on my unorthodox proposal. But I caved on the length, bringing it up to 500 pages. Actually, I came up with more like 700 pages of stuff, and they cut it back to 500, because 700 pages would take the book into the next price tier, and "There isn't enough of an audience for a book that big!"

Eighteen months later, we have The Old New Thing: Practical Development Throughout the Evolution of Windows, following in what appears to be the current fad of giving your book a title of the form Catchy Phrase: Longer Explanation of What the Catchy Phrase Means.

It's a selection of entries from this blog, loosely organized, and with new material sprinkled in. There are also new chapters that go in depth into parts of Win32 you use every day but may not fully understand (the dialog manager, window messages), plus a chapter dedicated to Taxes. (For some reason, the Table of Contents on the book web site is incomplete.)

Oh, and those 200 pages that got cut? They'll be made available for download as "bonus chapters". (The bonus chapters aren't up yet, so don't all rush over there looking for them.)

This is a kind of trend really - many writers have put energies into blog posts instead of books, only to look up and discover that some of the posts, rearranged into an approrpriate order and with a little writing to connect them, make a pretty cool book. It's not clear whether it will be out in time to ask for it as a Christmas present, but it would be a cool way to use any booky gift certificates people give you.

Kate

Friday, 08 December 2006 11:04:21 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 07 December 2006

In Barcelona, I was on the panel for the Barcelona Girl Geek Dinner. Now, lest anyone be under the illusion that these panels are carefully peer-selected and reviewed, that there's some committee somewhere finding the cream of modern geekhood -- well maybe that was how the others were chosen but for me, I was hanging out in the speaker room when Sarah, who I'd only just met, asked me if I'd do it and I said yes.

I had a lovely time at the panel and we all spoke about our experiences, advice to newbies, how nice it is not being "the only one in the room" from time to time, and so on. I was sitting with Catherine and Cyra, two of my fellow panelists, and Charles Torre of Channel 9 was with us, and we talked over dinner and wine the way in my experience geeky women always do -- a fast paced mix of very technical shoptalk and personal getting-to-know-each other material. (I learned a lot from Cyra and wish we had had more time together.) When the event ended, the four of us walked together across the street to the speaker hotel, but it was such a short walk and we weren't finished talking. Someone expressed an interest in dessert, and we decided to see what the lobby bar had to offer. We kept on talking, and at one point Catherine and I were trying to convince Charles that "the compiler is your friend" -- that strong typing and early binding have big advantages. Charles kept saying "I can't believe I'm not filming this" until eventually he picked up the camera and started to film. He asked us questions he knew we cared strongly about and off we went.

The resulting video is now on Channel 9. It seems to kind of start in the middle because, well, we started in the middle. I suspect it's the only video on Channel 9 featuring gestures with a glass of Scotch. It's one of the very few that doesn't feature exclusively Microsoft employees, so I am honoured to see it there. Those of you who have heard my line "I stay up late over too much red wine arguing about deterministic destruction" can now see that in action. We don't introduce ourselves till the very end, so if you need to know who's who, download the whole thing, skip to the end, then go back to the beginning and watch us.

Kate

Thursday, 07 December 2006 10:51:37 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 06 December 2006

Man, I've been making software for a long time. I first came across Fred Brooks' essay No Silver Bullet: Essence and Accidents of Software Engineering when the mail (you remember, the physical mail) brought me the magazine (you remember physical magazines) and it was the cover story. Apparently that was the April 1987 issue which is bringing us perilously close to the twenty year mark. (And if I needed to, I could get my hands on that copy within minutes... in fact I'm sure I've held it within the last year or two.) And now people are talking about it again. Larry O'Brien has a long post with links to some other posts of his own and by Wesner Moise. He also captures what I consider to be the essential quote from the essay:

I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. We still make syntax errors, to be sure; but they are fuzz compared with the conceptual errors in most systems.

The thesis is that software development gets easier or faster or more accurate only by degrees: you cannot adopt structured programming or object oriented programming or aspect oriented programming or functional programming or agile techniques or anything and expect to be ten times faster or a hundred times faster, no matter what people tell you:

There is no single development, in either technology or in management technique, that by itself promises even one order-of-magnitude improvement in productivity, in reliability, in simplicity.

It was true then and it is true now. And it will still be true when my kids are as old and grey as I am becoming. Worth reading and rereading, and not waiting twenty years between rereads. Oh and by the way, this is the same Fred Brooks who invented the heavens-I-wish-it-wasn't-true rule: Adding more people to a late project makes it later. That's from 1975 and you can't escape it either.

OK, there is one way you can achieve an order of magnitude improvement in productivity: hire the right people. The good ones are ten times as fast as the OK ones, and infinitely faster than the none-of-their-code-ever-ships ones. But that's not a technology or a management technique, so it doesn't count for our purposes.

Kate

Wednesday, 06 December 2006 20:10:13 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 04 December 2006

My recent post of a joke about a priest and a politician highlights a privacy issue: sometimes any sufficiently specific information can become identifying information. If the priest had referred to "one of the first confessions" instead of "my very first confession" nobody would have learned anything when the late-arriving politician told the crowd he was the very first to give confession to the then-new priest. Similarly when a CIA operative was identified in the USA, at one point the person who identified her took refuge in pointing out he hadn't named her, hadn't said "X Y is an operative", but instead had named her husband, "A B is married to an operative." Of course that was equivalent to naming her.

Similarly, when you're worrying about privacy in an application, it's not as simple as naming some fields you shouldn't include in the system. That's a good first step, for sure: why does this application have a field for Social Insurance Number, what do we use it for? Why do we need to keep it after that? But it's not the whole story. For example, we may need everyone's home phone numbers, but do we need them on the main screen or would it be better to make people click to see the more private information. Can we use role based security to show private information only to managers? This takes some thought.

Microsoft is offering a 49 page Privacy Guidelines whitepaper you may find helpful. The introduction says:

The purpose of this document is to propose a baseline for establishing this higher bar.  It offers guidance for creating notice and consent experiences, providing sufficient data security, maintaining data integrity, offering customer access, and supplying controls when developing software products and Web sites.  These guidelines are based on the core concepts of the Organisation for Economic Co-operation and Development (OECD) Fair Information Practices and privacy laws such as the EU Data Protection Directive, the U.S. Children’s Online Privacy Protection Act of 1998 (COPPA), and the U.S. Computer Fraud and Abuse Act (as amended 1994 and 1996).  In the interest of developing a common set of industry best practices for privacy, we invite the community and other interested parties to participate in an open dialogue. 

It discusses categories of information, retention, consent, notice, and a few things that are web-specific like cookies. A good place to start your thought process.

Kate

Monday, 04 December 2006 15:16:45 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 03 December 2006

Technology Review has an interview with the father of C++. Some notable quotes:

  • There has to be languages for those experts to use--and C++ is one of those languages.
  • I want elegant and efficient code. Sometimes I get it. These dichotomies (between efficiency versus correctness, efficiency versus programmer time, efficiency versus high-level, et cetera.) are bogus.
  • There are just two kinds of languages: the ones everybody complains about and the ones nobody uses.
  • The main reason for C++'s success is simply that it meets its limited design aims: it can express a huge range of ideas directly and efficiently. C++ was not designed to do just one thing really well or to prevent people doing things considered "bad." Instead, I concentrated on generality and performance.

Read the whole thing!

Kate

Sunday, 03 December 2006 15:03:02 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 01 December 2006

From Beyond Code, this made me smile:

Sorry for the delay
A priest was being honored at his retirement dinner after 25 years in the parish. A leading local politician and member of the congregation was chosen to make the presentation and give a little speech at the dinner. He was delayed, so the priest decided to say his own few words while they waited.

"I got my first impression of the parish from the first confession I heard here. I thought I had been assigned to a terrible place. The very first person who entered my confessional told me he had stolen a television set and, when questioned by the police, was able to lie his way out of it. He had stolen money from his parents, embezzled from his employer, had an affair with his boss's wife and taken illegal drugs. I was appalled. But as the days went on I knew that my people were not all like that and I had, indeed, come to a fine parish full of good and loving people.".....

Just as the priest finished his talk, the politician arrived full of apologies at being late. He immediately began to make the presentation and gave his talk. "I'll never forget the first day our parish priest arrived," said the politician. "In fact, I had the honor of being the first one to go to him in confession."

Moral: Being late can be (very) costly.

Kate

Friday, 01 December 2006 08:13:25 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 28 November 2006

As I mentioned earlier, I recorded a DNR episode while at Tech Ed Developers in Barcelona. A bunch of us got together to talk about Agile development. As I said at the time, at Gregcons we're not "formally Agile" (stop laughing) but we do a lot of things that fall under the Agile umbrella, because they just plain make sense.

I haven't had a chance to listen to the recording yet, but Scott Bellware has, and he liked it. Among other things, he says:

Kate Gregory nailed a quintessential a-ha moment in agile adoption: "You go through this phase of saying, that's way too extreme; I would never do that; what kind of weirdo does that?.  And then a year later, you're doing that."

Agile practices go deep and often work at subtle levels.  The very practice of agile development puts the sharpness in your perspective that you'll need before you can see the difference between pre-agile development and agile development.  Kate's statement perfectly captures this experience of the agile practice paradigm shift.

Happy to help, Scott. Thanks for listening!

Kate

Tuesday, 28 November 2006 07:34:03 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 25 November 2006

Here's a little oddity I happened across. It's a patent application:

The present invention provides a system and/or method that facilitates expanding keywords within an existing computer programming language by employing a whitespace keyword containing embedded whitespace. A whitespace component can receive code, and create a whitespace keyword based at least upon a successive comparison of adjacent tokens. The whitespace component creates a whitespace keyword by replacing more than one token with a single token containing embedded whitespace. Moreover, the whitespace component can utilize a lexical analyzer to group code into tokens and a parser component to parse the code.

This actually makes sense to me (assuming you accept that the idea of software patents in general makes sense.) It was a huge leap to take a language like C++, where keywords are separated by spaces, and extend it to become a language where some of the keywords actually contain spaces. After all, so many of us already have words like ref and value as variable names: the only way for C++/CLI to work is the conceptual leap that says "ref isn't the keyword, ref class is the keyword." If you wonder how that's actually done... read the patent application.

Kate

Saturday, 25 November 2006 14:54:42 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 24 November 2006

There are quite a few products, generally older products, that aren't going to be supported on Vista and probably aren't going to work on Vista. One of the not supported announcements that seems to be catching people by surprise is about SQL Server 2000 and it's free sibling, MSDE. They seem to have run afoul of UAC, which really does require you to change your application.

If you are using SQL Server 2000, you should upgrade to 2005 anyway: it has a lot of improvements for you. But MSDE users don't generally even realize they are using a database: they're using an application that uses a database. Whoever made that application needs to tweak their install so it uses SQL Express (which is just as free as MSDE ever was, and doesn't have a governor) instead. And if that's you, learn about Vista development while you're at it in case your application ends up needing changes too.

Kate

Friday, 24 November 2006 14:24:51 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 23 November 2006

Has someone sent you a .docx file yet? That's the Word 2007 file format.  (The new Excel format is .xlsx, the new Powerpoint is .pptx, and so on.) The first time I tried to open one with Word 2003, I got a helpful dialog offering to get and install the converter for me, and I did, and now I can move the files back and forth around my network without concern. But a few people have mentioned to me that they didn't get this helpful dialog. You can hand-download and install the converter from the Office preview site. Make sure you are up to date on Office Service Packs... there are links from the download page. And though the converter says it's for the Technical Refresh 2, it has worked fine for me on files created with earlier betas.

Kate

Thursday, 23 November 2006 14:02:09 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 22 November 2006

I don't have a tag cloud on this blog yet because I haven't figured out how to do it with dasblog. But I think they're cool when I see them on other people's blogs. I came across a site that uses the cloud approach (larger fonts mean more occurrences) to report on word frequency in US presidential speeches. It's really neat to see Constitution fade over time, while economy or economic stays always there, and new words rise up. Play with the slider a little. I wonder what other bodies of text you could apply tag clouds to? I wonder what all the powerpoints on this laptop would produce?

Kate

Wednesday, 22 November 2006 13:43:56 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 21 November 2006

When Microsoft discovers a bug in a product, whether it's Windows, Visual Studio, or some other product, they typically fix it. And once that fix is tested and working, the question becomes how to deploy it. Sure, you can put the corrected code into the next version of the product, but that might be years away. There are service packs, but they are pretty far apart, and for good reason. So the first deployment vehicle is the hotfix or QFE (Quick Fix Engineering.) These are typically available only from support and only after you've convinced support you're facing the problem that the hotfix takes care of. (At least, that's the theory. Since a hotfix is a single file, people can and do share them although I suspect you're not supposed to.)

Now there's a new pilot program underway where some hotfixes are being made public, so that you don't have to wait for a service pack. Of course you should approach this with caution, but it can make investigating those hard problems a little smoother. At the moment I see seven hotfixes there: three are for Visual C++.

Kate

Tuesday, 21 November 2006 12:56:15 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 20 November 2006

Ed Bott has published some advanced tips for Vista. My favourite? Master the Quick Launch bar, including the Add to Quick Launch context menu item and (I didn't know this) keyboard shortcuts for the items in the Quick Launch. More reasons piling up why I want to move this laptop to Vista ... not much longer!

Kate

Monday, 20 November 2006 12:24:17 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 18 November 2006

Microsoft's Developer Division is really taking this transparency thing seriously. First it opened much of the spec for Orcas, the next version of Visual Studio, to the MVPs, and now it's opening it to the public. Seriously! And not only that, but they're asking you how you feel about these features:

Which features do you think are important? Are we making the wrong assumptions about how you will use Visual Studio and .NET? Are we forgetting about your scenario?

This page lists specifications for Visual Studio and .NET "Orcas". These specifications document the new features you will find in CTP's and provide an opportunity for you to give feedback. Please remember, some features specified below may be cut and others may be significantly altered. We'd love your feedback to help us with this decision process. Your feedback will be delivered into our bug database and shared with the feature team. The team will use your feedback to develop the specification or make improvements to future releases of Visual Studio.

So how important is STL/CLR to you? Or friend templates? Read the specs and scenarios, try them out in the September CTP, then speak up!

There are two things you should know about these documents. First, they can be quite large. The STL/CLR one is 38 pages. Second, they're XPS. On my Vista development machine, with IE7 and Office 2007, I just click to read them. On my XP machine with IE6 and Office 2003, it's not so seamless. Time to get me an XPS document viewer for the laptop.

Kate

Saturday, 18 November 2006 07:40:13 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 17 November 2006

Microsoft Canada is running a contest. Nominate a developer (or team of developers) who is making software that makes a difference. Subscribe to the MSDN Flash (you should anyway) to make yourself an eligible nominator. Like the nomination form says:

Judges are seeking nominations that present an innovative solution that

  • defines how Microsoft technology (e.g. Visual Studio® development system, Microsoft® SQL Server™ 2005, Windows Vista™ operating system) played a role in making the solution possible;
  • not only helps your business, charity, or community but could help other businesses, charities or communities; and
  • has had a positive impact on a business or within the community.

And when I say "judges", I mean me, Mark Relph and Barnaby Jeans of Microsoft Canada, Stephen Ibaraki and Barry Gervin. Come on, impress us! Nominations are online-only.

And prizes? Of course there are prizes. Like actual cash money for the winning developer, the winning team, and their favourite charities. Not to mention a trip to Toronto (hotel and a plane ticket if you need it) to receive your prize. So what's stopping you? Heck, with a deadline of April 12th, you still have time to write the application and then enter! (Be sure to read the rules about telling the nominees you're nominating them, dealing with applications that use some third party code, and so on.)

Kate

Friday, 17 November 2006 07:27:22 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 15 November 2006

The nice folks at O'Reilly, who make very good geeky books, have a fun little quiz going on. They show you a code snippet and you guess what book it's from. This is usually (but not always) a matter of guessing what the language is, and that's harder than you might think at first. There's a little timer counting down so the longer you take to make up your mind, the less points you get. Here's a really easy example:

<html>
  <body>
    <p>Here is a paragraph.
    <p>And here is another.
  </body>
</html>

Is that from:

  1. Gaming Hacks
  2. Learning XML, 2nd Edition
  3. GNU Emacs Pocket Reference
  4. HTML & XHTML: The Definitive Guide, 4th Edition

Trust me, most of them are much harder :-)

Kate

Wednesday, 15 November 2006 12:27:22 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 14 November 2006

The recording of our panel at Tech Ed Developers Europe is now available at the .NET Rocks site. "Kate Gregory, Stephen Forte, and Roy Osherove join Richard Campbell and Carl Franklin on stage at TechEd Europe in Barcelona for this discussion about Agile methodologies." We enjoyed doing the show, the folks who were there in person asked plenty of questions, and I hope you enjoy listening to it.

Kate

Tuesday, 14 November 2006 12:05:04 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 13 November 2006

Apparently a lot of people come to me for their physics experiment information, so I have an update. The pitchdrop experiment is listed as one of the longest running experiments ever. It surely must be one of the slowest.

Pitch, like glass, is a very very thick liquid that can be shattered and that most people think of as a solid. This experiment has been measuring its viscosity by timing the drops... they fall about once every 8 or 9 years. There have been 8 so far, most recently in November 2000, and no-one has ever seen one fall - that is, separate from the funnel. There's a webcam pointed at it, but it should be a while yet before you need to start monitoring it.

Kate

Monday, 13 November 2006 11:57:21 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 11 November 2006

The abstract promised:

If building games for the Xbox 360 or Windows gets you excited then you have to be at this event. For the first time, Microsoft will take you through the details of our (soon to be released) XNA Studio Express. If you didn’t already know, anyone can now build interactive, high performance games for Windows or Xbox 360. We’ll take you through an introduction to XNA and XNA Studio Express. Then we’ll equip you with the skills to start building games ranging from simple 2-D to stunning interactive 3-D.

And that's what we got!

As you can see, the space was JAMMED and the demographic skewed a little younger than your typical Microsoft event. There are more pictures at Barnaby's Flickr site, which is where I got this one :-)

Here's one I took myself, of a very nice gesture:

Since you probably can't read the letter I'll paraphrase it: "we know it's Remembrance Day, we've made a donation on behalf of the attendees, please take and wear a poppy." Christian Beauclair, who was speaking as 11:00 rolled around, paused us for our minute of silence and the room fell completely still.

A great introduction to both game development and the world of MSDN events for plenty of young people. XNA is really going to make things interesting for developers who want to just play and try things.

Kate

Saturday, 11 November 2006 13:29:18 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 06 November 2006

Tim Sneath has a neat trick: how to launch something "Run As Administrator" without right-clicking it and selecting from the context menu. And no, I don't mean use the ContextMenu key on your extended keyboard.

"Simply press Ctrl+Shift+Enter from the search bar on the start menu with a selected application, and that triggers elevation."

This is part of a series of useful tips you should probably read.

Kate

Monday, 06 November 2006 07:40:17 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 05 November 2006

How much story can you pack into six words? Apparently Hemingway wrote "For sale, baby shoes.  Never used." Aaaawww, so sad.  But for true pathos, how about the sad laments of cast-off programming languages? Who says "They’ll come crawling back. You’ll see!" or "I was it once! What happened?" Let me try my own for C++ right now:

Unmanaged APIs everywhere. It Just Works.

What do you think?

Kate

 

Sunday, 05 November 2006 06:27:53 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 04 November 2006

http://msdn.microsoft.com/canada/liveforyou/

Every Tuesday in November, at noon Eastern, you can tune in and learn about Windows Live while it's still in beta. Search, Virtual Earth, Gadgets, and Messenger Bots are the four topics. This is a presentation of MSDN Canada.

Sign up and watch!

Kate

Saturday, 04 November 2006 06:04:36 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 02 November 2006

Lots of C++ content in this talk with Soma on Channel 9. I spoke to Charles about this interview and he told me he really didn't know where it was going to go when it started, and it didn't need any editing, which is unusual for a VP. Soma also blogged it.

Thursday, 02 November 2006 05:47:59 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 12 October 2006

Here's an article on static code analyis that makes some nice points. I love the title: I’m not in denial, I’m in a hurry. It can be tough, at the end of a project, to find the time for that tidying up that you once thought there'd be time for. Better to get the comparison of what you're doing to best practices as you go along. In fact, every time you build your app. Then you'll know where you stand.

Kate

Thursday, 12 October 2006 09:36:37 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 10 October 2006

Are you ready?

It's time to launch Office, Vista, and Exchange in Canada. Five cities get a large version of the all day event, with business, IT pro and developer tracks, and seven get IT pro and developer talks only. It starts in late November and goes on until January. Registration is free and these things usually full up fast, so register now.

Kate

Tuesday, 10 October 2006 09:05:19 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 09 October 2006

I've been messing a lot with time zones lately, planning my trips to South Africa, Spain, and Denmark, along with flight connections through other countries, and trying to be sure that I correctly map the local times people tell me with the Eastern times I need to enter in my Outlook calendar. As part of that I found a neat time zone map at http://www.travel.com.hk/region/timezone.htm. Now time zone maps are not exactly hard to come by, but this one gave me some interesting insight.

Until I found this map I believed, in a vague never-bothered-to-check way, that Newfoundland was the only place whose time zones differered by half an hour rather than an hour from the neighbouring zones:

But this map uses that hash pattern to indicate the not-an-hour timezones, and so for the first time I noticed there are other places that do this too:

 

It's all over the place! But I wonder if people on the other side of the world would get the Canadian joke: The World Will End at Midnight! 12:30 in Newfoundland.

Kate

Monday, 09 October 2006 07:35:06 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 07 October 2006

Confused about what .NET 3.0 is and is not, and what the next set of libraries after 2.0 will be called? Here's a pretty comprehensive summary from Julie Lerman that lays it out for you.

.NET 3.0 is.NET 2.0 plus the four new components [WPF, Cardspace, WCF, Workflow]. Those four core technologies are called the ".NET 3.0 Components".

The four new components were developed as part of the Vista effort but are so cool that everybody wanted them to be available downlevel, which they are to varying degrees. Julie also gets into Orcas, Atlas/Ajax, LINQ, and what works with what and when (roughly) you'll see it. Check it out.

Kate

Saturday, 07 October 2006 00:36:52 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 04 October 2006

One of the best things about being a Regional Director is the other Regional Directors. These are wonderfully smart people who share their knowledge with each other. Most of them also share with the public through blogging. If you're an avid reader of my blog you'll have seen links to other RD blogs over time. If you'd like a one-stop-shopping approach to RD blogs let me recommend http://indepthtalk.net/Feed.aspx, which shows the first paragraph or so of each post, or  http://indepthtalk.net/Community/RD.category which gives links to all the blogs and shows just headlines. There's also an RSS feed at http://indepthtalk.net/Community/RD/Feed.rss.

This is hand-aggregated content, just like TechEdBloggers and its cousins. That means not every post is aggregated, and they don't show up the instant they're posted. But it's a fantastic way to see what we're up to and to get to know some blogs you may not be reading yet. Give it a whirl!

Kate

Wednesday, 04 October 2006 10:09:52 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 01 October 2006

A client of mine, International Time Recorder, is hiring in Etobicoke. Here's the job description:

Job Title:  Senior Application Developer

Senior developer responsible for contributing to the design, development and implementation of commercial software solutions to a diverse marketplace.

Duties
• Contribute to the analysis and design, while being accountable for the support, development, testing and implementation of solutions and enhancements to software systems.
• Design and develop software components and features.  This includes working with stakeholders in developing Detailed Functional Specifications, designing certain key components of the product and implementing the solutions.
• Support and design of maintenance and test procedures and test cases for the product.
• Participate in schedule development and ensure timely product delivery.
• Assist in the creation and implementation of concrete procedures for tracking and releasing product updates.
• Coach and mentor junior development team members in best practices for support, development, testing and implementation of software solutions conducting code reviews as needed.

Qualifications
Education:  University Degree in Computer Science, or equivalent experience
Experience:  8 – 10 Years

Required Skills:
• Familiarity with the following technologies: C#, ASP.NET, C++,  ADO.NET, ADO, Web Services (SOAP/XML), RPC, all Windows Operating Systems, IIS, COM, Active Reports
• Two years experience in .NET development in commercial software development using C#, ASP.NET, ADO.NET
• Eight years experience in commercial Windows Application Development
• Experience in Scaleable Distributed Application design
• Three years experience in designing SQL Server databases
• Proven experience in developing database-driven Web and Windows applications with demonstrated flair for design and layout
• Two years experience as a project lead

Nice-to-Have Skills:
• Time and attendance industry experience
• Experience with Microsoft Visual Studio Team Systems.
 

The firm is doing active development in both C++ and C#. If you're looking for a place to use both old and new skills (and a chance to get regular mentoring from me :-) ), drop me a line and I will forward your information along.

Kate

Sunday, 01 October 2006 13:28:10 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 30 September 2006

Woo hoo! STL/CLR is back! It made an accidental brief appearance in a Whidbey beta, but wasn't ready for prime time at all and went off for some retooling. If you grab the September CTP of Orcas, you can give it a whirl yourself. Here are some links stolen from Nikola's blog announcing it:

http://www.microsoft.com/downloads/details.aspx?FamilyID=82243606-d16d-445c-8949-9ee8c10cda2e%26DisplayLang=en to download the CTP.

http://connect.microsoft.com/VisualStudio/ to report bugs or issues with the CTP including STL/CLR.

http://blogs.msdn.com/vcblog/archive/2006/09/30/777835.aspx  Known issues and some workarounds.

So many paying projects to finish... but I will get working with this soon. Time to adjust my November talks to stop using the old unofficial version and start using the CTP version.

Kate

 

 

Saturday, 30 September 2006 15:22:26 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 29 September 2006

Fall is here and that means hammock time is pretty much over for another year. I just had to mention the hammock we got this year: small and light enough to take camping, to the beach, or anywhere else. Sets up in a minute or so. Here it is on my front lawn:

It weighs less than a pound and when it's in its stuff sack, I bet it would fit in a roomy jacket pocket. It certainly takes up less room in a beach bag than a towel, and it adjusts to handle trees of varying distances apart. It came from Lee Valley, where so much of my money has gone over the years. They'll ship anywhere. If you decide you want a Lee Valley catalog, drop me an email. I'll refer you to them and the company will give some money to charity.

Kate

Friday, 29 September 2006 15:15:50 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 25 September 2006

Shankar Vaidyanathan, who's been on the VC++ team for over 12 years, talked to Channel 9 in late July about why C++ devs actually do use and care about the IDE. He also shares some of the challenges for writing an IDE for very demanding customers. Watch this one immediately after the Boris one and you'll be an IDE guru!

Kate

Monday, 25 September 2006 16:13:53 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 24 September 2006

I don't know why I didn't see this earlier, but then again I had a tough summer. Here is Boris talking about the C++ IDE and a lot of the tips that were in my Tech Ed IDE talk ... the one with no slides. If you weren't at my talk then I guarantee you will learn something about VC++ from this video, and even if you were, you still might.

Update: I really should have included this link to Boris' blog. Maybe he will update it more often if he gets more traffic.

Kate

Sunday, 24 September 2006 15:40:29 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 23 September 2006

No, I'm not talking about where the brace brackets go! Coding guidelines are so much more than style guidelines. One of the things that sets me apart from many other developers I know, and especially the authors of code I am asked to fix, is a drive for simplicity. For me, that comes down to three things:

  • Start by solving the problem you're actually facing, not some enormous superset of it
  • Write the straight ahead way first, then adjust for the exceptions and strange corner cases
  • When it's all working, and every time you touch it from then on, look it over to see if you can make it simpler.

That last one is the one so many people seem to skip. Then later when I come along and read the code, I see how it could be simpler, but I hesitate to change it. They must have done it this complicated way for a reason, I think to myself. It can take quite a long time to prove to myself that no, they just settled for 'working' and ran away as fast as they could, leaving this mess for someone else to sort out later.

A mentoring client gave me a pointer to an article ostensibly on Coding Guidelines which is as much philosophical as anything else. I like it. The rules are:

  1. Make your code look like other people's code.
  2. Use the simplest design possible.
  3. Don't re-invent the wheel.
  4. Document your code.
  5. Keep security in mind.
  6. Work in increments.
  7. Work in iterations.
  8. Have your code reviewed.
  9. Don't stay blocked.
  10. Do unto others as you would have them do unto you.

There are no false notes in this list and I endorse this set of philosphies whole-heartedly.

Kate

 

Saturday, 23 September 2006 18:07:23 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 20 September 2006

I find it really surprising how much I am enjoying owning this kettle:

It is just what it appears to be, a glass electric kettle. When the water is at a full boil it is actually more dramatic than this picture shows. Like all modern electric kettles, you lift it off its base, leaving the cord and such behind, to pour. It's faster than the stove, won't boil dry, and it's fun to watch. Who knew?

I got mine at Canadian Tire. It wasn't even the most expensive kettle there.

Kate

Wednesday, 20 September 2006 11:47:12 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 17 September 2006

Recently, Jim Allchin (Co-President, Platforms & Services, Microsoft Corporation) posted an open letter to developers. In it he points out that it's one thing to beta test a new operating system (as I and thousands of my closest friends have been doing with Vista) and it's another thing to adapt your applications for a new operating system. For me, there are two important parts to that:

  • What do I have to do to my application to keep it from failing in the new environment?
  • What can I do now to my application so that it will take full advantage of the new environment?

Some Vista-specific examples of this might be "how can I be sure my application will not trigger a bunch of UAC dialogs?" and "will my app have glass?" or "can I get those cool Task Based Dialogs with the blue arrows and stuff?" These are the sorts of things I'll be tackling in some of my upcoming talks. I hope my Vista category will also be useful. My point is, don't wait until Vista ships, then wait to see if any of your clients or customers feel like using it, and then wonder if you have a Vista-ready app. Find out now.

Or as Jim says, "... the opportunity will be tremendous. If you want to ride the wave we're creating with Windows Vista, the best way is to have your application ready by the time we ship! And that is very soon. "

Kate

Sunday, 17 September 2006 15:59:34 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 14 September 2006

Larry blogs that improving your app's performance means concurrent programming. Not just OpenMP, which is very cool, as he points out elsewhere, but all the hard stuff: "disk contention, memory locks, cache corruption, etc". Still, here's a tempting paragraph from that DevX article:

It's perhaps surprising that C++, with its reputation for difficulty, actually provides one of the easiest ways to exploit multi-core and multiprocessor systems. OpenMP, a multiplatform API for C++ and Fortran, uses compiler instructions to automatically generate all of the support code needed to parallelize code sections. In the simplest case, which is what we're going to focus on for this article, simply wrapping a processor-intensive loop in a #pragma block can lead to about a 70 percent performance increase on a dual-core or dual-processor system and enjoy a similar "free lunch" on the quad-core systems that you build in the future.

That's right. Concurrency is vital, and C++ takes care of one kind of concurrency astonishingly easily. It's true. Later in the article he plops a #pragma just before each of two loops, and his app runs 70% faster. How's that for fun? Go on, read the article, try it yourself.

Kate

Thursday, 14 September 2006 15:26:23 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 13 September 2006

Tomas Restrepo, a C++ MVP, has started a C++/CLI FAQ at http://www.winterdom.com/cppclifaq/. It's a start, and since some questions are starting to be frequently asked, it's a good idea for folks to read through this.

BTW, if you're looking for a more general Visual C++ FAQ, try the multi-MVP effort at http://vcfaq.mvps.org/.

Both recommended. Good work Tomas!

Wednesday, 13 September 2006 15:06:07 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 12 September 2006

According to a summer IT Business article, there is still a battle or maybe there isn't. The headline reads "Java vs .Net: The tug of war continues" while the first sentence of the article is "The religious war between Java and .Net seems to be over." You might be able to guess how I feel from these quotes: 

  • "It's .Net all the way," she said. "I hardly ever get e-mails (from students) asking [whether] they should learn C# or Java any more."
  • "I feel more productive on the .Net side," said Gregory, who also programs in Java. "When I made the jump, it was about the tools in Visual Studio, and the libraries."
  • "I think that every time we have a new batch of libraries and every time the products are improved, people will change (platforms)," said Gregory. "Others say they will stay. And they're both right. Maybe younger developers get caught up in a religious war, but older developers say, 'You go ahead and use whatever you like. I'll be over here getting some work done.'"

That's why I'm a VB.NET and C++ developer after all -- to get some work done.

Kate

Tuesday, 12 September 2006 14:47:25 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 11 September 2006

Scott Meyers has been musing about the most important C++ books, non-book publications, software, and now people. He decides on:

  • Bjarne Stroustrup
  • Andrew Koenig
  • Scott Meyers
  • Herb Sutter
  • Andrei Alexandrescu

You know what? I agree with him. I think it takes some serious nerve to put yourself on a list like that, but his rationale works for me. I'm not sure if the list is in significance order -- if it is, I'd move Herb up a notch or two -- but these are the folks. And four of them were on the speakers list for C++ connections last year. I was honoured, truly, to be on that list with them and need no more than that.

Kate

Monday, 11 September 2006 13:03:13 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 08 September 2006

The code camp concept keeps spreading. October 14th will see Code Camp Montreal: it's free, it's bilingual, it's in downtown Montreal. All you need to do is register! Attending will be a great way to meet other developers and to learn as much as you can cram into your brain in a single Saturday. I wish I could be there, I know it will be great.

Kate

Friday, 08 September 2006 12:37:35 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 12 July 2006

Here's a fun demo of facial recognition software. Using the picture of myself I have on MSN messenger, I tried out (http://www.myheritage.com/FP/Company/tryFaceRecognition.php) the My Heritage facial recognition software. It says I look like

  • 63% Jesse McCartney (no idea who he is)
  • 63% Kate Winslet (that's better, and bonus marks for first name match)
  • 58% Rose McGowan
  • 54% End Blyton (love the books, but hardly a flattering picture of her)
  • 52% Julianne Moore (really? wowza!)
  • 50% Melanie Chisholm
  • 49% Gina Lollabrigida (now you're just being nice)
  • 48% Jennifer Love Hewitt
  • 48% Janie Tienphosuwan
  • 48% Andrew Lloyd Webber (and you were being so nice)

Common thread seems to be cheekbones. I don't see them on me but I sure do on those folks.

Want to try?

Kate

PS: I tried another picture of me and Kate Winslet, Rose McGowan, and (damn) Andrew Lloyd Webber came up again.

Wednesday, 12 July 2006 10:52:47 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 11 July 2006

So if you want your app to behave well on Vista and have no clue where to start, here's a helpful post from Jeremy Mazner that links to a number of screencasts to get you started. How to tell Vista you need admin privs. How not to need admin privs so much. How to use the power APIs (that's volts and amperes power, not only for smart developers power). How to hook into Vista search.

Download them, watch them, make better Vista apps.

Kate

Tuesday, 11 July 2006 09:55:36 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 10 July 2006

Jesper Johansson is a world-reknowned security guy. His talks are always highly rated and people love to hear him tell them how to be safer than they are now. So when he says "please don't turn off UAC", will you listen?

Yes, it's annoying to be constantly authorizing things, especially when you just clicked the button to do whatever it is that needs to be authorized. Some of that is an artifact: it shows up far more often in the early days of a new install because you're busy configuring and administering the system. Some of that is because permission sets may still need tweaking. Changing the time zone was moved into "doesn't need admin privs" while changing the time was not, for example, and there may be actions that are triggering a UAC prompt that shouldn't be. This is what betas are all about, testing developer choices against the behaviour of real users.

The other reason for a lot of UAC prompting is apps that demand privs they shouldn't need, because their developers can't be bothered to use per-user stores, for example. If that's your app, and you're testing it on Vista, you need to change it so it works well on Vista. Not leave it as is so it works fine on Vista-with-UAC-turned-off. That's just "it works on my machine", and my developers aren't allowed to say that. :-)

Kate

Monday, 10 July 2006 09:28:28 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 04 July 2006

Is a blog just for reading? Some blogs have way more life in the comments than the original posts (think Mini Microsoft for example, and I'm not saying the original posts are lifeless, just that the comments really take it up a notch) while others (like the one you're reading now) have very few comments. I like to think that people wander off and think about what they read, or go fix the problem in their code (hello all you broke-your-sql-reporting-services-installation people, I see your search terms in my activity list) and think nicely of me.

But here's a rather interesting blog entry. It's one word long. And that word is not all that unusual. Now I love self-reference, Godel, Escher, Bach etc, so I laughed. And I'm not alone. The commenters got it right away, drawing on a long tradition back to Usenet (at least 20 years) and then bringing in some more recent traditions. Good fun for as long as you can stand it.

Kate

Tuesday, 04 July 2006 21:32:03 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 02 July 2006

We've all heard that we shouldn't model ourselves against pictures we see in magazines, because "they're all airbrushed and retouched". But you won't believe how true that is until you check out this portfolio by a fellow who does it for a living. He swaps new pictures in from time to time,  but there's pretty well always some excellent eye bag removing, skin smoothing, and general thinning.

Before:  After:

He has a nice effect on the site: first you see the "after" picture as it was used in print, then when you mouseover you see the original. Wow! Bags pop out under eyes, breasts move down, wattle, wrinkles, and pimples appear. Move the mouse off and they're back to perfection. Just astonishing. He also tackles "the clothes didn't really fit the model" and "the background is all wrong" as well as "they couldn't all come to the studio on the same day" but it's the anti-aging work I found most astonishing.

In case you had any doubt how much hard work it is to do, somebody called Mizuno lays out in a dozen steps or so how to soften up skin features to do just the unpimpling:

Before: After:

The after looks a little fake here in a close-crop, but when you see the whole picture she just looks gorgeous. Now we know.

Sunday, 02 July 2006 20:50:44 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 01 July 2006

Nikola Dudar of the C++ team seems to have decided to catch up his blogging deficit. In a single day he covered:

Plus a meta-post about comments. Keep it up Nikola!

Kate

Saturday, 01 July 2006 20:33:46 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 30 June 2006

Those of you who were interested in my loader lock topic at Tech Ed this year should probably get this whitepaper from Windows Hardware Developer Central (not actually a place I hang out regularly.) It's a downloadable Word document (8 pages) that tackles things like "what you should not do from DllMain" (this list is a page long), deadlocks, and threading considerations (and remember, we are all going to have to tackle threading considerations eventually). While it doesn't say it's C++-specific advice, in what other language could you "Use the memory management function from the dynamic C Run-Time (CRT)" or "Set global pointers to NULL, putting off the initialization of dynamic members"? It even has Vista-specific advice.

Kate

Friday, 30 June 2006 07:14:35 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 29 June 2006

Catherine Heller, Windows Vista Technical Evangelist, is now blogging. She started during TechEd just before her session (one of the very few I attended) and so far has covered tips for interop to native APIs and some Search material. I'm looking forward to more as the summer progresses.

Kate

Thursday, 29 June 2006 07:03:23 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 28 June 2006

Recently the French government launched a geo-portal (GeoPortail en francais) with satellite pictures and maps of France and France-associated places around the world. The detail is pretty cool. Here's Le Château de Chenonceau:

Here's the smaller of the two formal gardens, to the left in the arial shot, as seen from inside the Château:

That one's not from the website, but from my own camera. It gives you a good idea of the scale the satellites can achieve. The building itself is amazing -- it actually spans the river. Worth a detour to experience if you find yourself on The Continent.

Kate

Wednesday, 28 June 2006 15:22:21 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 26 June 2006

Hugh (hughtrain, cartoons on a business card) MacLeod has written an interesting set of "instructions" on how to be more creative. Many of these directly contradict each other... that's because there's more than one way to be creative. I actually found the summary points more helpful than the more detailed explanations further down the page. But either way, it's a good way to get yourself thinking about thinking. Then later you can relax and not think, and good ideas will come to you. Or at least that's how it works for me.

Kate

Monday, 26 June 2006 14:25:57 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 25 June 2006

Jan Tielens points out a big relief in the next version of SharePoint: setting up alerts for someone other than yourself. I faced this need many times and adapted one of the many web part samples available online to allow administrators to set up alerts for other users.

Little things like this are going to dramatically reduce the number of web parts I have to write. And I like that!

Kate

Sunday, 25 June 2006 14:15:12 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 24 June 2006

The Visual C++ team all gathered together over the last week to hold a "slow chat" with the CodeGuru community. Users posted questions, the team answered them, and conversations ensued. Some of the interesting questions I spotted (it's all still there for you to read through at your leisure):

  • Why have the keyword abstract? Isn't the presence/absence of a pure virtual function enough? Or a private virtual destructor, that would force someone to implement a derived class?
  • What do I gain and lose by compiling my old native app with VC 2005?
  • Will MFC gain classes that wrap Vista-specific functionality?
  • What language does Microsoft use most?

Lots of straight talk from Brandon, Ayman, Tarek, Jon, Steve, and others from the Visual C++ team. Take your time and read it all.

Kate

 

Saturday, 24 June 2006 14:07:07 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 23 June 2006

Visual Studio Tools for Office (VSTO) is a bit of a funny creature. It needs to adapt with each release of Office, and also with each release of Visual Studio. The next version is code named Cypress and it works with either Visual Studio 2005 or with Orcas, and with Office 2007. Charles Sterling blogged the announcement just before TechEd:

Cypress will include the following functionality and release at about the same time as Office 2007:

 

·    Application-level add-ins for the most popular Office applications including Outlook, Excel, Word, PowerPoint, InfoPath and Visio.  This is currently the #1 most requested feature for VSTO – safe loading, unloading, and management of managed add-ins.  I’m thrilled that we’re going to be able to provide this functionality to developers much earlier than anticipated.

·    Office key feature support: programming model and runtime support for Ribbon, Custom Task Panes, and Outlook forms regions.  Office’s new UI contains exciting extensibility opportunities and Cypress will enable VSTO’s simple coding experiences like IntelliSense. 

·   Maintainability and compatibility are core principles for the VSTO team and Cypress will also ensure that your applications built on Office 2003 with VSTO 2005 continue to run with Office 2007. 

 

Cypress is an add-on and is incremental.  It is not, itself a complete Visual Studio product release.  Anyone who has a licensed version of Visual Studio 2005 will be eligible to download Cypress for free.  However, I want to be clear that Cypress is not a super-set of all the VSTO 2005 functionality that was made available for Office 2003 replicated for Office 2007.  As promised, Excel Workbook and Word Document project support for Office 2007 will come on-line in VSTO “Orcas”, and be made available in upcoming “Orcas” CTPs.   Also look for the exciting new VSTO “Orcas” functionality, such as the visual designers for the Ribbon and Custom Task Panes, and Outlook in these “Orcas” CTPs.

There's a Channel 9 video in which KD Hallman and Eric Carter discuss features and goals of Cypress and beyond that's a pretty good starting point.

If you can stand the endless rounds of public betas, CTPs, and trying to work out which versions need each other or conflict with each other, you can have a lot of fun this summer!

Friday, 23 June 2006 13:33:06 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 22 June 2006

One of the huge holes in the current version of SharePoint is workflow. If you have a document that starts out as a draft, and then the author decides it's ready to be approved, and then someone approves it and it goes to a more public status, that's workflow. And it's not supported in the SharePoint (either WSS or SPS) you can "buy" today. (WSS is free with Windows Server 2003, so I put "buy" in quotes.)

This hole is going to be fixed in the next version of SharePoint. The team has a blog and has posted a quick summary of what workflow will be like and just how much will come to you "out of the box." Check this list:

To help people get started with scenarios like these, we’ve taken some common processes we’ve seen in our research and built those workflows into SharePoint Server 2007 out-of-the-box for people to use without IT involvement.These out-of-the-box workflows include:

  • Approval: Routes a document for approval. Approvers can approve or reject the document, reassign the approval task, or request changes to the document.
  • Collect Feedback: Routes a document for review. Reviewers can provide feedback, which is compiled and sent to the document owner when the workflow has completed.
  • Collect Signatures: Gathers signatures needed to complete an Office document. This workflow can be started only from within an Office client.
  • Disposition Approval: Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.
  • Group Approval: Similar to the Approval workflow, but uses a designated document library and offers a personalized view of the approval process(es) in which a user is participating. This workflow provides a hierarchical organization chart from which to select the approvers and allows the approvers to use a stamp control instead of a signature. This solution was designed specifically for East Asian Markets.
  • Translation Management: Manages document translation by creating copies of the document to be translated and assigning translation tasks to translators.
  • Issue Tracking: Manages the issue tracking process by creating tasks for Active issues assigned to users who own to a given issue. When the task related to an issue is complete hence resolving the issue, the creator of the issue is assigned a review task so that the issue can be closed.

Think about what you will be able to take care of with this! Do you want the beta? Of course you do. And there's a whole new Enterprise Content Management blog to talk about all of this in greater detail, too.

Kate

Thursday, 22 June 2006 13:06:00 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 21 June 2006

There is growing awareness that making software takes a lot more than just making code. Certainly being a developer is much more than being a coder. But as someone who runs a consulting business, I certainly know that for me and for my people to make great code for our clients, we need support from non developers. This isn't just about testing and UI design and documentation either. It's about calling the courier, getting a new mouse when yours dies, making sure there's cold Coke in the fridge all the time, and plenty of paper in the printer. Sure, developers can do all that stuff... but they make more code, bill more hours, and give better advice and mentoring when they don't have to do that stuff. In fact, Joel Spolsky says about 80% of your payroll, in a software development company, should go to people who don't actually develop software. Yikes! Our "overhead" is nowhere near that here at Gregcons, but we do have folks on staff who never ever write code of any sort. It's important to remember what a vital role everyone in a small company plays, whether we bill for their time or not.

Kate

Wednesday, 21 June 2006 12:52:01 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 18 June 2006

Another entry from the VC++ team. This one covers many of the IDE changes I showed in my recent Tech Ed talk. One of the questions that arose in that talk was "why does Visual Studio sometimes appear to freeze when I open a dialog?" Boris Jabes has an answer that explains to me why it's more likely to happen when I'm working in native code.

Kate

Sunday, 18 June 2006 06:30:04 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 17 June 2006

Chris Sells did something pretty cool recently - he went to a printing plant to see how books are printed and bound. He arranged to go on the exact (single) day they were printing HIS book, and he took both his kids and his camera. The result is one tremendously cool blog entry.

If I am ever talked into another book (it could happen :-) ) I think I want to do this too.

Kate

Saturday, 17 June 2006 06:21:02 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 16 June 2006

Joel Spolsky has a nice article today about Bill, inspired by the retirement announcement of course. I loved this story for two reasons. The first is when he started talking about the leap year thing in Lotus 123, I was right there with him -- I had problems with that myself over twenty years ago. The second is the "little girl" sound effects and thought balloons injected into the story. Times change. Companies change. People retire. These things don't necessarily cause each other. Read the story.

Kate

Friday, 16 June 2006 17:12:23 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 14 June 2006

Over on the Visual C++ team blog, Martyn Lovell muses about MSBuild, renaming all the library DLLs, and STL/CLR, among other things. On that topic, he says:

We’re not finished yet on performance, but in informal testing we’ve seen some exciting results, including a bunch of cases where the magic of templates combined with the C++ optimizer are able to outperform the .NET Base Class Library even in verifiable code. When we envisioned C++/CLI several years ago, these are the kinds of scenarios that we dreamed of, and it’s exciting to see them coming to fruition.

Can't wait!

Kate

Wednesday, 14 June 2006 16:38:50 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 06 June 2006

This time it's Boris Jabes, who we haven't heard from in ages, who reappears with a pair of handy macros, one to show all your keyboard shortcuts and one to preprocess a file you have open (written as a response to someone who wanted it added as a feature to the IDE.) He credits his blogging once more to the "you can blog from Word 2007" feature. If that's true, the feature is getting my vote as the best of this release :-)

Kate

Tuesday, 06 June 2006 18:43:28 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 05 June 2006

One of the prizes at realDEVELOPMENT_06 Toronto was a Microsoft mouse. You're probably thinking "big deal". Well John was using this mouse in his presentation, and at the first break so many of the questions were about the mouse (yes, about the mouse!) that he took a minute to talk about it before we started the next session. Even the emails I got afterwards reflected a lot of mouse interest, with one attendee putting it first on the list of cool things seen that day.

So obviously this is no ordinary mouse. It's called the Laser 6000 and I guess the laser-ness makes it somehow better than an optical mouse. But that's not what all the fuss is about. It has a scroll wheel (nice and smooth) and you can push the scroll wheel sideways for horizontal scroll. But the side button, just under your thumb, is the cool thing. It's a zoomer. It magnifies whatever is under it... really simply and easily. Here's a shrunken screenshot:

You can control how big the zoomed area is and how magnified it is very easily and your choices persist until you change them again. I have the Wireless Laser 6000 and it's ergonomically beautiful, even fitting the little USB dongle into a slot on the underside of the mouse -- and turning it off when you do that since you're obviously putting it away. I really love this mouse... next time you need a new mouse, think of the Laser 6000, especially if you do any speaking.

Kate

Monday, 05 June 2006 07:24:49 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 03 June 2006

Steve Teixeira has linked to the webcasts from a C++ day held in Paris in May. These were done in English, but if you want to download the WMVs you're going to need a tiny bit of French, or to have gone through the downloading-a-webcast-from-MSDN process often enough that you don't really need the prompts. I qualify on both counts, and since the French for video is video, it's not too terribly difficult. Well actually Herb's talk starts with a French introduction, but having heard myself introduced in French a time or two I can tell you it's OK if you can't follow that bit. (Most of the time you can't tell that Herb and I did our undergrad at the same place, but we did, and occasional sesquilingualism is a clue. The difference is that while Herb remains a little nervous about engineers, I became one.)

 

These are good talks with demos and they cover a lot of ground for C++ programming today and in the future. Go get them.

Kate

Saturday, 03 June 2006 06:53:59 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 01 June 2006

This one is with Louis Lafreniere about the C++ backend compiler. What can I tell you, go there and watch it!

Thursday, 01 June 2006 12:06:13 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 27 May 2006

I'm surely not the only one who's noticed that most of the blogs by members of the Visual C++ team have one thing in common: they're not updated terribly often. Typically there's one team member (maybe someone with insomnia?) updating one while the others languish. So now it seems they've decided to make a group go of it with the Visual C++ Team Blog. It appeared yesterday and has had two entries so far. I hope it gets lots of updates!

Kate

Saturday, 27 May 2006 18:14:19 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 25 May 2006

I came across a page full of pictures that play with perspective and scale:

The artist's page gives you thumbnails that don't always show the cool part of the picture. This fan page has a whole pile of them all one after another to get you started seeing how they work. There are more at the artist's page though, plus instructions on how you can buy prints, so even if you start at the fan page, you should end up at the artist's page. According to Wikipedia and another article I found recently, he's a Canadian who illustrates children's books and wins awards for it. That explains all the snow, moonlight, and autumn leaves, I guess :-).

Kate

Thursday, 25 May 2006 11:37:17 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 24 May 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.

Kate

Wednesday, 24 May 2006 10:54:06 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 23 May 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.

Kate

 

Tuesday, 23 May 2006 10:22:57 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 22 May 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!

Kate

Monday, 22 May 2006 07:31:10 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 20 May 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 :-)

Kate

Saturday, 20 May 2006 08:30:56 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 19 May 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" :-)

Kate

Friday, 19 May 2006 08:25:33 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 18 May 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.

Kate

Thursday, 18 May 2006 08:15:52 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 15 May 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 :-)

Kate

Monday, 15 May 2006 22:51:49 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 13 May 2006

In the June MSDN Magazine, Stan Lippman's Pure C++ column has become Netting C++. Here's the path he's laid out for himself. He's starting with a working console application written entirely in native C++. In this first column he's just going to make it run as a .NET executable with no use of .NET libraries and no exposing his classes to other .NET applications over the runtime. In the next column, he'll show how to wrap the native classes in managed wrappers so they can be called from VB or C#. Stan goes on to say:

Subsequent columns will focus on mapping the native types to types supported by the .NET Common Type System (CTS) and examining the performance characteristics of the application as it transitions. We'll also look at the type information available to the runtime, using the ildasm command to explore the Common Intermediate Language (CIL) into which all .NET-based languages are compiled.

When that's done, we'll explore multithreading, Web services, cross-language interoperability with a C# ASP.NET front, XML support, and integrating with Windows Vista™. So, we have our work cut out for us.

This will be a series to read as it appears.

Kate

Saturday, 13 May 2006 10:41:45 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 10 May 2006

In my concurrency talk today I had a total brain freeze and could not remember the last name of the author of the concurrency book I wanted everyone to read. The title is Concurrent Programming in Java: Design Principles and Patterns and the author is Doug Lea. Don't let the word Java in the title fool you: this is a book that explains the concepts of concurrency no matter what language you're going to use in the end.

Kate

Wednesday, 10 May 2006 15:45:00 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 09 May 2006

The ISO C++ committee is working on the next standard for C++. At their April meeting, a number of items were added to the working draft, which means they will almost certainly end up in the standard -- it's just a matter of final agreement on some of the subtle details of the item, rather than whether it should be there or not. As Herb Sutter reports, the items that were added are:

  • TR1, a pile of library changes (as opposed to the language itself) including various new kinds of smart pointers
  • declaring variables but letting the compiler deduce their type instead of doing it yourself (auto type deduction).
  • delegating constructors
  • the > > vs >> subtlety that Brandon referred to in his recent Channel 9 interview. Visual C++ takes care of this already, but now it's being added to the standard.
  • extern template

Now why should an ordinary programmer care about the machinations of the standards committee, and something that may or may not get approved this decade? Well for one thing, the compiler vendors don't wait for the standard before they implement the new keyword or the new functionality. And for another, it can give you a hint about what's headed your way. Let me tell you what I mean.

Here are Herb's examples of auto type deduction:

auto x = 3.1415926535;
auto i = container.begin();

In this case, x has type double, and i has type map<string,unordered_map<int,tuple<float,string,const int> > >::const_iterator or whatever the right type happens to be, without having to spell it out.
Now in and of itself this is a cool feature, especially for C++ with heavy STL use. Another thing Brandon talked about in his Channel 9 spot was how foreach saves us from having to declare those iterators, set things to begin() and so on, and there's no doubt that figuring out the types is part of that pain. But go beyond that for a moment. I have seen plenty of auto-type deduction examples in C# over the last year or so, and they were all LINQ examples. Does this mean C++ will get getting LINQ too? At least one language barrier to LINQ will be going. Let's see what else happens.
 
Kate

Tuesday, 09 May 2006 07:21:11 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 08 May 2006

I'm guessing that when Channel 9 came by to talk to Martyn Lovell, they got Brandon to agree to be next. His interview has been posted and has some cool quotes in it:

  • "I only learned C++ about 4 years ago"
  • "Visual C++ is the only language that can get to every API Microsoft ships"
  • "C++ is the most widely used language in the world, and it's not going anywhere"

He discusses verifiable code, his favourite new language features, and templates-vs-generics as well. Take a look!

Kate

Monday, 08 May 2006 08:33:57 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 01 May 2006

Martyn Lovell, who heads the libraries team, has an interview on Channel 9 that was posted Friday. Normally when you think "libraries" in the context of C++ you think ATL and MFC. But most of what Martyn is talking about here is the C RunTime library -- strcopy, printf and so on. He gives a coherent explanation of what the safer CRT work is about. I've written about this before, and have been helping mentoring clients fix their warnings for over a year, and still I learned a few things from this video about how to explain this initiative. Martyn's devotion to the language and the community is inspiring.

And yes, Martyn is hiring again. You can use the description and instructions from my previous post if you'd like to work on MFC. Over 7000 new APIs in Vista means there's lots of MFC work to be done!

Kate

Monday, 01 May 2006 08:33:41 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 22 March 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, 22 March 2006 10:48:25 (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, 15 March 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, 15 March 2006 15:55:06 (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, 01 March 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, 01 March 2006 09:35:12 (Eastern Standard Time, UTC-05:00)  #    
      # Monday, 20 February 2006

      Visual Studio Team Systems is a huge product... diagramming tools, code generators, source control, work item tracking, project management, documentation generators, and much more besides. Some people I know have already decided to adopt VSTS because of one set of features, but really don't know how to use some of the other features. Others are still undecided about whether they want it, or which "stack" - tester, architect, developer, or all three in the Suite product - they want.

      Why not attend a two-hour session that will help you to see what you can do with this amazing technology?

      City Date Link
      Mississauga February 22nd Register
      Vancouver March 2nd Register
      Mississauga March 21st Register
      Ottawa Apr 19th Register
      Calgary May 17th Register
      Toronto June 21st Register

      The abstract I received says "This session is intended to provide an introduction to Visual Studio Team System, highlight the new functionality and business value in each offering, and outline the transition steps for existing Visual Studio and MSDN customers. We will also demonstrate Visual Studio Team System in action." Why not check it out while there are still spaces available?

      Kate

       

      Monday, 20 February 2006 17:47:56 (Eastern Standard Time, UTC-05:00)  #    
      # Friday, 03 February 2006

      One of the main "deliverables" of a code camp is to attract attendees who don't normally go to conferences, launches, or even user group meetings. Another is to attract first time speakers. I love seeing "that look" on someone's face, when they are fresh off the stage, they gave their talk, the demos worked and they are still alive! Little do they know they're hooked at that point :-).

      Here are some blog entries by brand new speakers at the Toronto Code Camp:

      • Paul Scarlett wrote to DotNetRocks about the experience... his link is to Carl reading the letter and then Carl and Richard talking about how terrific we all are :-). If you poke around elsewhere in his blog you will find various other postings describing the speaking experience for Paul.
      • Shaun Hayward blogs about his Code Camp experience... he liked it so much he's the speaker for February's meeting of the East of Toronto .NET User Group. (Register now!)

      Congratulations guys, and welcome to the club!

      Kate

      Friday, 03 February 2006 12:58:47 (Eastern Standard Time, UTC-05:00)  #    
      # Tuesday, 24 January 2006

      The word is starting to spread about the concurrency skills we are all going to need sooner rather than later. And work is underway at dev-tool-makers to offload some of that work to the "system" -- maybe the language, the compiler, a library, the framework, the operating system -- anything other than the programmer because most of us are even worse at threads-and-locks than we were at malloc-and-free or new-and-delete or any other kind of memory management.

      If you were wondering about Microsoft's committment to this (and the PDC talks on the topic weren't enough to convince you) then read Kang Su's latest blog entry about the new Bay Area Office they are establishing for this sort of progress... and wait till you see who's going to be working there...

      Kate

      Tuesday, 24 January 2006 12:42:33 (Eastern Standard Time, UTC-05:00)  #    
      # Friday, 13 January 2006

      I'm so looking forward to tomorrow's Code Camp! Bright and early on Saturday morning I'll be down at Yonge and Bloor with hundreds of other geeky people. Many will be attending their first ever technical event, and many of the speakers will be on stage for the first time too. It promises to be a real rush.

      Seems like as good a place as any to thank the contributors who are making it possible:

          
           
        

      I put links around the logos, so if there's a company there you're not familiar with, get familiar! These are the leading lights of developer community effort in the Toronto area.

      Kate

      Friday, 13 January 2006 12:14:59 (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, 21 December 2005

      Actually, my fellow RDs make headlines in industry mags often, especially when they write the article. But this was a bit of a surprise to me: http://www.eweek.com/article2/0,1759,1904532,00.asp?kc=EWRSS03119TX1K0000594. Not the announcement (Clemens let some of us know before the papers) but the attention it garnered. Though really, I shouldn't have been surprised. It is an important hire for Microsoft and Clemens, I wish you a happy time "building stuff" at the mother ship.

      Kate

      Wednesday, 21 December 2005 22:57:23 (Eastern Standard Time, UTC-05:00)  #    
      # Sunday, 18 December 2005

      Chris has uploaded the deck and a zip file of code for my "Moving C++ Applications to the .NET Framework" talk to the East of Toronto .NET User Group. If you're still thinking about C++/CLI maybe seeing what it does will help your thought processes.

      http://gtaeast.torontoug.net/Downloads/1307.aspx

      Kate

      Sunday, 18 December 2005 07:39:42 (Eastern Standard Time, UTC-05:00)  #    
      # Thursday, 01 December 2005

      Vertigo is a seriously cool company that does a lot of .NET work and a lot of C++ work. Like us, they know how to combine the two. Unlike us, they are in California. Here's what CEO Scott Stanfield (a super hard working RD) told me about the job:

      We’re trying to hire a full-time C++ developer to help us work on [pretty high-profile work for Microsoft.] Needs knowledge of Windows API (old-school stuff), COM, etc. Maybe ATL.

      Intruigued, I got more details:

      Must have:

      1. 2 to 4 years of Unmanaged C++/Windows Apps
      2. C++ Standard Library (Iterators, containers, etc.)
      3. ATL
      4. VS 2003
      5. Using COM with #import

       Knowledge that is nice to have but not necessary:

      1. Passport
      2. Windows 2003/XP or VISTA experience (ie. building apps for Microsoft)
      3. WTL
      4. Client side (single thread, event driven, custom drawing, experience with 32-bit, globalization)
      5. Server side (multi-threaded, critical sections, mutex – 1 app instance)
      6. Networking (WinHTTP, web services)
      7. VS 2005

      P.S.  Bear in mind that our core expertise is .NET so the person would have to be willing to learn .NET and work on other projects besides C++ stuff every so often.

      And of course, it is a great company to work for :).  We do a great job with developing careers and it is rock solid financially with excellent benefits.  Plus there is very minimal travel.

      If you follow the links in the first paragraph, you'll figure out how to apply :)

      Kate

      Thursday, 01 December 2005 13:34:40 (Eastern Standard Time, UTC-05:00)  #    
      # Saturday, 26 November 2005

      Maybe it's the Rum Swizzle, but this limerick really worked for me:

      I used to think math was no fun
      'Cause I couldn't see how it was done
      Now Euler's my hero
      For I now see why zero
      Is e to the pi i plus 1.

      Thanks to Language Log,

      Kate (Math major for a year or two, but ended up in Engineering)

      Saturday, 26 November 2005 19:16:35 (Eastern Standard Time, UTC-05:00)  #    
      # Monday, 14 November 2005

      I've been talking about C++/CLI in public for quite a while now: Tech Ed USA 2004 and 2005, Tech Ed Africa 2004 and 2005, C++ Connections in Las Vegas last week, several private webcasts, and of course in this blog. But in the last 18 months, travelling as far as 10,000 miles from home, I haven't done any part of this shapeshifting talk here in my own home. So it's time to change that. Come to the November meeting of the East of Toronto .NET Users Group and find out why people are saying:

      • "I love the .NET Framework, I love C++, and the new stuff looks to provide me a beautiful integration of the two. Question is, once it is released, will I ever code in C# again?"  -  Ed Ball
      • "this new development in C++ seriously undermines the justification for C# as a language. " - Grumpy Old Programmer
      • "By standardizing the syntax and semantics of a general purpose binding for C++ and the CLI, Ecma TG5 will provide the huge C++ developer community with a tool that enables them to easily write applications that make full use of the CLI platform, and will provide the developer community targeting the CLI with full support for the powerful C++ language. " - ECMA Standards Committee
      • "Visual C++ is positioning itself as the lowest level programming language for targeting the CLR. There should be no cause to use any other language, not even Microsoft intermediate language (MSIL). Secondly, .NET programming should be as natural as native C++ programming. ...If you love C++ and want to use all the power that C++ has traditionally offered, but also want the productivity of C#, then this is for you. - Kenny Kerr, MSDN article
      • "C++ is here to stay for a long time and we are committed to providing the best tools for C++ development." - Soma Somasegar
      • "now that the language looks just like C# and you still have the power of C++/templates/STL as well, it's staging a major comeback." - Sam Gentile

      I dug out some abstract that was kicking around from one of the versions of the talk:

      Come and see how real C++ projects are moving to the CLR without a full port or rewrite. Learn how to easily migrate existing native code -- including MFC applications -- to run under the CLR. Strategies for choosing which parts of the application remain native and which are managed will be discussed. See how to take advantage of the power of the framework libraries. Finally, this session will provide guidance on how to build high-performance managed "wrappers" enabling reuse of native libraries.

      But that was a one hour talk, and I have such a hard time fitting into a single hour, and this is my user group after all, so expect to see quite a bit more on the general "C++ for the .NET Framework" situation.

      Wednesday November 30th, Whitby Library, please register. Pizza and chitchat at 6, C++/CLI starting at 7. See you there!

      [updated: the link above now leads to a page that has a registration link. Please register.]

      Kate

      Monday, 14 November 2005 13:51:26 (Eastern Standard Time, UTC-05:00)  #    
      # Friday, 11 November 2005

      ... must be firmly in the hands of Steve Teixeira, who has been blogging regularly from C++ Connections. Quite a decent subset of the team is here, and I am really enjoying meeting those I haven't met before and seeing the others again. (An aside: how many people do you think are on the C++ team? Yesterday Brandon, when I kiddingly asked who was left in Redmond since a dozen or so had come to Vegas, said there are 130 people on the C++ team. Tonight Herb said there are about 150 but 20 or 30 are on Phoenix which you might say wouldn't count. Over a hundred is a lot more than other language teams have and a good indication of both the importance and difficulty of keeping Visual C++ at the top of its game.)

      Today Martyn Lovell gave a great presentation on the IDE that I enjoyed immensely (even though I knew all the features he was showing) because he has a wicked sense of humour. When he got spontaneous applause for docking indicators on tool windows (who knew?) he commented that he should have shown them first to get the audience warmed up :-)

      I really hope the success of C++ Connections means there will be other C++-only conferences once again. In fact tonight I believe I heard Kevlin Henney say to Bjarne "we're doing this again next year, right?" and Bjarne say "yes". If so, I plan to be there too! This has been a terrific week and when I'm in my own time zone again I will have more to write about it.

      Kate

      Friday, 11 November 2005 01:45:41 (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, 09 November 2005

      Once again I find a friend has written almost the blog entry I would have, sparing me the effort. You just have to read Don Kiely's summary of Bjarne's C++ Connections keynote this morning. I am going to sleep on my thoughts from the keynote, this afternoon's talk, and tonight's panel, and see what I synthesize from them tomorrow.

      Kate

      Wednesday, 09 November 2005 00:08:10 (Eastern Standard Time, UTC-05:00)  #    
      # Monday, 07 November 2005

      Marcie lowered her profile a bit earlier this year but she's back.. with a new name since Microsoft went and changed the DataGrid to the GridView. Take a look at her new blog: http://www.gridviewgirl.com/GridViewGirl/

      Kate

      Monday, 07 November 2005 10:36:07 (Eastern Standard Time, UTC-05:00)  #    

      I love being "in the loop" on new software. It can get kind of surreal, though, when you are at a conference and find a technology kind of boring and everyday, and skip the sessions on it since it's "old stuff" ... and then realize it isn't even shipping yet! I spend time in betas, alphas, SDRs and the like, so it's often years between the time I start working with a technology and the time it releases. When I speak at Tech Ed I tend to hang at the cabanas where I can hear real stories of how people are using the tools and the problems they need help with.

      The PDC though, that's a different story. Well, it should be anyway. The PDC is all about the future, right? The workflow announcement was a big deal, but the material wasn't new to me. I began to worry if I would ever attend a session that sparked my interest in something new and important. Then I found it. I've waited to blog it until the sessions were available online.

      What Jan Gray had to say in FUN302 and Herb Sutter introduced in TLN309 totally grabbed me. Because clock speed cannot go up any more we all have to write concurrent code even if it's single user:

      And since most people can't write good concurrent code (see Herb's Singleton example which still doesn't work even with the double checking and the volatile keyword, at least not all the time) then the OS or the framework or the language needs to do it for them. Herb and Jan are proposing different approaches, but these two guys are among the smartest I know (I've known Jan almost 30 years) and if they are both into this, then I need to learn more about it. You probably do too.

      Kate

      Monday, 07 November 2005 10:19:27 (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, 19 October 2005

      No kidding. What will they think of next? (The keyword-matching for the ads needs work, though.)

      Kate

      Wednesday, 19 October 2005 20:04:48 (Eastern Daylight Time, UTC-04:00)  #    
      # Thursday, 06 October 2005

      At the PDC, we were shown what Office 12 is going to be like, and it was impressive. But since then more announcements keep coming out about it that in many ways are more impressive than the new user interface. (If you're thinking "what new user interface?" you need to check out the future Office page at MSDN for details.) Apparently the Channel 9 Video has been insanely popular also. In some ways the Open XML formats are more exciting than the UI , especially for developers. And now this: Office 12 - not just Word, but Excel, PowerPoint, Visio, everybody - will all know how to publish their documents as PDF. No third party tool, no add in, it will just work. I read about it on Brian Jones' blog, but there are also details on that future Office page.

      Kate

       

      Thursday, 06 October 2005 06:53:18 (Eastern Daylight Time, UTC-04:00)  #    
      # Saturday, 01 October 2005

      I fly quite a lot. Over the first six months of this year (I pretty much stopped travelling after TechEd USA) i flew 25,000 miles. That's not a lot compared to those who reach Air Canada Super Elite status at 100,000 miles (a handful even fly 300,000 miles a year) but it felt like a lot to me. I'm about to fly another 30,000 in just a few weeks... to South Africa and back, then a week later to Las Vegas and back. But it's nothing compared to what someone I know is up to.

      Air Canada is selling an "unlimited" North America travel pass. $7000 gets you all the flights you can stand in October and November. A fellow Flyertalker with two months off has bought one and is trying to get the maximum possible mileage from it. Because he's already Super Elite, he gets a 50% bonus on every mile he flies, and there's a promotion on to get a 25% bonus as well (I earned a 542 mile bonus to and from LA for the PDC). Add in threshold bonuses and he has determined he is going to earn a million Aeroplan miles for just $7,000  ... and two solid months of his time. Most of it will be up front, thanks to the upgrade certificates he's going to earn as he goes, and his status moving him to the front of the line for "op-ups" on full flights. His sleep, what there is of it, will be exclusively on overnight transcontinental flights.

      He's blogging his progress... a must read!

      Kate

      Update: there are now four Flyertalkers doing this, but Marc is the one blogging it. Today he mentioned on FT: "I was home last night, had dinner with family. Leaving at 820 am. Its a job like any other. I am home 4 nights a week. On overnight trips the other three."

      Saturday, 01 October 2005 18:38:40 (Eastern Daylight Time, UTC-04:00)  #    
      # Sunday, 11 September 2005

      We're having a CODE CAMP in Toronto in January! I'm so excited! A Code Camp is a very different kind of community event, and one that can only happen when you have a strong and vibrant developer community. If you've never heard of it, check the Code Camp Manifesto or just Google for it and find people saying things like this:

      "the buzz from Atlanta Code Camp is starting to wear off a bit and let me just say I had a great time."

      "I laughed, I cried, I found a bunch of new tools to use."

      "When I asked him if it was as good as a commercial conference he said that he thought so.  Perhaps even better.  And that comes from a guy who was just at TechEd 6 weeks ago."

      Now the deal with Code Camps is that they ALWAYS:

      • Are free
      • Are held outside business hours (typically a weekend)
      • Feature a great variety of speakers and topics (except no marketing fluff allowed)
      • Provide an opportunity to speak for the first time

      Many Code Camp attendees have never been to a daytime or paid-attendance event - we don't all work for companies that make that possible, after all. If you've been to plenty of such events, you might consider speaking at this one: an hour on something you know well because you're doing it at work isn't hard at all, really. This is a great chance to "crossover" to the other side of the microphone. If you haven't been to lots of these events -- you've never been able to get to a DevDays or a VSLive, or heaven forbid something out of town with actual travel expenses -- plan now to set aside a weekend in January to fill your brain with free technical content and get to know the developer community in the Toronto area.

      Toronto is a large city, over 3 million people, and the "Greater Toronto Area" supports a LOT of user groups:

      And out of all these people, who is spearheading the Code Camp initiative? My two co-executives from the East Of Toronto group, that's who! I'm very proud of that. The GTA is full of good organizers and speakers (and has three Regional Directors on top of that) and I know we will be able to put on an amazing day. Right now Jean-Luc is finding a location and sponsors (or Contributors as Code Camp likes to call them) and shortly he'll be gathering speakers. You should use his blog to get in touch. My firm is sponsoring for sure: a Code Camp is a really low-cost event to put on and reaches a number of developers other events never do.

      Kate

      ps: I wanted to say that this would be the first Code Camp outside the USA, but once again Derek Hatchard has shown what a star he is: there will be a Code Camp in Atlantic Canada just next month. Go Derek!

      Update: They've had them in the UK too (http://www.developerday.co.uk/ddd/default.asp ... Benjamin Mitchell is the RD involved in those) and in Australia (www.codecampoz.com.)

      Sunday, 11 September 2005 10:42:25 (Eastern Daylight Time, UTC-04:00)  #    
      # Monday, 05 September 2005

      The Regional Directors had so much fun doing the GrokTalks at Tech Ed USA, we just couldn't leave it as a one-time thing. So at the PDC, we've arranged an event called PDC Underground. While we won't be filming and uploading the talks, we will be able to accomodate an actual audience. If you're going to be in LA, or if you're there all the time anyway, you want to come to this event. Ten RDs, fifteen minutes each, just the essence of what you need to know about one topic.

      I'm doing "C++ is alive and well":

      Abstract: The "C++ for the runtime" in Visual Studio 2005, C++/CLI, features everything developers love about C++ -- including templates and deterministic destruction -- and everything we love about the CLR -- including generics and garbage collection. This best-of-both-worlds approach enables the fastest and easiest interop between managed and unmanaged code. Preserve your legacy without a port, use the same binaries to support old and new clients, control the cost of interop: that's what C++ does so well.

      More details and a registration link at http://www.pdcunderground.com/. If you're a member of a user group in the LA area, contact your leader who probably can get you a button to wear.

      See you there!

      Kate

      Monday, 05 September 2005 12:54:03 (Eastern Daylight Time, UTC-04:00)  #    
      # Wednesday, 31 August 2005

      Kang Su kicks off his blog (two and a half weeks ago, I can't believe it took me this long to notice) with a big red HIRING in the middle of his first post, then goes on to give you the C++-eye view of PDC including the so-worth-your-while upgrade lab.  Then he tells you how to find out what the Profile Guided Optimization process discovered about your code. Excellent and you know I'll be reading regularly.

      Next time I get out to Redmond, though, I am going to have to ask for a tour of the office so I can see where they keep the “your turn to blog regularly” baton or hat or whatever they use. It seems as soon as one or two start, the others all stop. :-(.

      Kate

      Wednesday, 31 August 2005 13:49:30 (Eastern Daylight Time, UTC-04:00)  #    
      # Sunday, 21 August 2005

      Gregory Consulting is in its 20th year of operation, and at the moment has six employees. I think it's fair to point out you can't stay solvent over that length of time, meeting payroll, paying rent and ISP fees, without some business sense. One of our most important rules is Fail Fast. If you're doing something that might not work, and it's going to fail, it is so much better to fail in the first week than in the sixth month. This leads to all kinds of useful practises like doing the risky bits first, prototyping, making little proof of concept apps or subapps, and the like. Note that we don't do these things because a Methodology said we should. We do them because our gut or some little voice in our head says “are you sure that's going to work?” and then our brain comes up with a way to fail fast. Of course not failing at all is better than failing, and these techniques can also put you in the delightful position of knowing it's going to work, and just having to write it.

      Fail Fast and "let's try it" can also save you a ton of time spent arguing about what's the best way to do something. Last week, I was at a early code review of an partly-written ASP.NET 2.0 application where someone had put some DataSet instances into Session even though they were used only on a single page. I wanted them in ViewState, because sessions expire and you have some hoops to jump through to ensure the work won't be lost. One developer on the team said putting things in ViewState made your pages too big. I said that wasn't an issue for the amount of data in this app. After about ten minutes of "what if someone pulls up the whole department for a year?" back and forth we decided to just try it. It took 30 seconds to flip the code between using Session and using ViewState. And guess what? After disabling viewstate on the grid, which was making both versions of the page really slow, there was no measurable difference (even for a year's data) between the two approaches. So it's going to use ViewState to make the coding simpler. But I would have been happy even if the experiment had shown the ViewState approach was infeasible, because we'd have found out before a hundred pages were coded.

      Joel Spolsky says pretty much any methodology makes good software in the hands of those who are good enough to develop methodologies, and they pretty much all can fail in the hands of those who just follow the rules and do what the methodology says. Big complex process (and as we grow, our process naturally gets more complex) runs the risk of becoming opaque to those who are asked to follow it. That's why we like to come back to some touchstones that explain why we do what we do. Like Fail Fast.

      Failure can be a good thing. If it saves you from following a doomed path for a year, you're glad to have failed early rather than late. If you can learn from something that didn't work, it will have earned its keep. This morning I read a story by Steven Sinofsky (no longer an entry level programmer :-)) at Microsoft about the failure of a C++ application framework, essentially the first try at what became MFC. He concludes:

      When I think back about the dismal failure of our first library ... and how we regrouped, learned lessons, and put those into play, I realized that without that first failure we never would have developed the success criteria that allowed us to build MFC.

      I'm never afraid to fail and I am not ashamed when I do. The only shameful things would be to continue to waste time avoiding the final decision that it is a failure, or not to learn from it.

      Kate

      Sunday, 21 August 2005 11:51:49 (Eastern Daylight Time, UTC-04:00)  #    
      # Friday, 12 August 2005

      Yesterday I was at a client and we talked, among other things, about how their story would make a good one to deliver at a launch event. They have an existing project in C++, client-server with MFC etc. Using Visual Studio 2005, building on the beta, they have wrapped an ASP.NET UI around the server engine so that users who don't have the main product installed on their desktops can still look at and edit some of their data. The new features in ASP.NET 2.0 were so compelling that this client has decided to use the go-live licence and deploy on the beta. The availability of the beta to MSDN customers, and the updates with the CTP process, have helped this ISV get 6 months to a year ahead of those who wait for the launch.

      Then today, I faxed back my contract for C++ Connections, which is happening the week of the launch. Although I have at least one confirmed (and two strong maybe) conference trips between now and Nov 7, I am very much thinking about that week and the excitement that will build as more and more people learn what's in the 2005 release.

      Those of us who are in the loop, reading blogs from team members and executives, grabbing betas and CTPs, living out on the bleeding edge putting Vista on the laptop, can sometimes forget that a launch is still a really big deal to people who've been waiting for Microsoft to make a big “here's what we've got event”. While such events will always be important for getting the attention of those who weren't looking, these days you can see what they've got right now. If you're in the loop enough to read my blog, you can be just about as completely in the loop as I am. What a fun time to be a developer!

      Kate

      Friday, 12 August 2005 17:14:27 (Eastern Daylight Time, UTC-04:00)  #    
      # Wednesday, 03 August 2005

      Did you know that Visual C++ 6, which is fast approaching its seventh birthday, will soon be an unsupported product? That's not exactly shocking; after all it was developed to let developers target Windows 95 or NT! Perhaps you were wondering when some other applications you use are going to reach end of life.... in that case, here are some handy links:

      If there's something you don't feel like upgrading, you might want to know how long it will be supported for as part of your wait-or-upgrade-now decision.

      Kate

      Wednesday, 03 August 2005 15:30:47 (Eastern Daylight Time, UTC-04:00)  #    
      # Friday, 22 July 2005

      People regularly email me, or approach me at conferences, and ask me to “confirm” that Microsoft is trying to get rid of C++ in favour of C#. Since nothing could be further from the truth, I am not the person to get a confirmation from. But then again, I don't work for Microsoft, so maybe I'm deluded? That's why I like to find simple and unequivocal statements from people who do work for Microsoft, like this:

      Visual Studio 2005 takes C++ development to a new level. For example, developers will get the same drag-and-drop experience creation of user interface as other languages, the same automatic statement completion and the same intuitive graphical debugger. Visual C++ 2005 developers will be able to build high performance 32-bit native code applications, use web services to interact with popular sites such as Amazon.com and Ebay, add professional quality 3D/2D graphics, video and sound using the DirectX SDK, all while generating robust and extremely fast code using our world-class C/C++ compiler.

      C++ is here to stay for a long time and we are committed to providing the best tools for C++ development.

      That's kind of hard to misinterpret. And when the Corporate Vice President of the Developer Division says it, you really need to believe it.

      Friday, 22 July 2005 09:26:10 (Eastern Daylight Time, UTC-04:00)  #    
      # Saturday, 16 July 2005

      Brandon Bray went about 18 months without blogging and I know I was just one of many people who begged him to start again. Well, he has and his first entry is a delightful laundry list of things he plans to cover. The second is about switch reduction in the 2005 compiler and linker, but it provides wonderful insight into the hassles of writing, testing and maintaining a compiler and a linker. A few quotes:

      I started evaluating changes by doing none else than reading the source code for the compiler driver. Through that I came across obsolete, outdated, bizarre, undocumented, and useless switches. I looked at each one asking whether it was necessary for the compiler in the long term and evaluating each switch against the requirements listed above. I actually spent most of my time trying to figure out what each switch did. Even asking developers who work on the compiler, I'd sometimes get several different answers. In a few cases, no one knew what the switch did. If our own team couldn't recall a switch's purpose, it's not hard to believe nearly every programmer using Visual C++ will have the same problem.

      ...

      In a good attempt to allow application writers to make use of the latest and greatest hardware, nearly every compiler introduced a new better switch to make your code even faster. Unfortunately, compiler switches end up in make files that rarely get revised. It wasn't uncommon to see a make file specify a G4 or G5 switch even though 80486 and Pentium have long been out of mainstream production. The G-series of switches do not prevent programs from running on older hardware, which was a common misconception. Eventually, Visual C++ just ignored the G3, G4, and G5 switches and the program compiled as if G6 had been given to the compiler.

      Brandon writes with a dry, understated sense of humour. You have to love “It is difficult to know that Os and Ot are ineffective.” or “Very few programs could actually work with these options, so they were both removed from Visual C++ 2005.” Not to mention subheads that call switches “truly evil” or “bizarre”.

      An excellent post to give some insight into what the team's decisions involve day to day, and the extent to which MVP and Ladybug feedback make a real difference in those decisions. Keep going, Brandon!

      Kate

      ps: the topic for the second post came from a comment on the first. Tell him what you want to read and I bet he'll write it.

      Saturday, 16 July 2005 22:30:10 (Eastern Daylight Time, UTC-04:00)  #    
      # Monday, 11 July 2005

      The French Canadian version of DotNet Rocks is BlaBla dotNet. Recently Mario Cardinal prowled the halls at DevTeach asking speakers and other well known folks to give ONE good reason for switching to VS 2005. Just one! What a challenge! The answers he collected are in English, so even though the Eric-and-Mario banter around the quotes is in French, you can understand the show even if you're monolingual. In the banter, you can hear people's names, book titles, occasional familiar words, and delightful phrases like “Superstars de monde de développement” or “bloggeuse très prolifique” (that one for Julie Lerman and I just adore bloggeuse and will try to use it whenever I can) and various stuff you probably need at least grade school French for but that I can just follow, and then someone speaks in English about VS 2005 cool features.

      When Mario cornered me, he told me a big surprise for him was the lack of duplicates. Mostly we all picked very different features, so by listening to us all you get a real sense of the treats that are waiting for you. You might also spend some time thinking about describing an elephant if you only get to touch one small part of it :-)

      Kate

      Monday, 11 July 2005 09:57:26 (Eastern Daylight Time, UTC-04:00)  #    
      # Saturday, 11 June 2005

      In my second Tech Ed talk I touched very briefly on the classes, templates, and macros that make it easy to integrate MFC and WinForms in C++ applications that target the runtime. If you want proof of Microsoft's continuiing committment to MFC, head for the new MFC whitepaper on MSDN. I quote:

      .NET integration enables MFC applications to leverage the power and productivity of the .NET platform as a natural extension of MFC. The reliability and security enhancements in MFC make for a more productive development process with fewer end-user issues, and existing MFC applications can take advantage of these enhancements with little more than a simple recompile in many cases.

      I'll give links to more details as soon as I can.

      Kate

      Saturday, 11 June 2005 14:17:14 (Eastern Daylight Time, UTC-04:00)  #    
      # Thursday, 09 June 2005

      The Groktalks are finished! Now comes the editing... so Scott Stanfield needs to rest up a little... and at Tech Ed, you take your rest where you can get it. :-)

      Anyone who doubted that 40 ten-minute talks could knock an attendee over need only have visited our booth this afternoon as we wrapped up. What a treat to see and hear so many of them, and what a lot of work to film them all! The Groktalk crew all deserve a big round of applause: Patrick Hynds ran the schedule, Scott Golightly tracked the times and kept the speakers on task, Scott Stanfield was camera and direction (and heart and soul,) and J. Michael Palermo did everything else technical that needed to be done. Today I made sure speakers were ready when their time rolled around. Tons of other RDs came to the booth for moral support, occasional technical support, and to hear some really good presentations, ten minutes at a time.

      Let me tell you, speaking for ten minutes is HARD. Speaking all day, for eight or nine hours, is tiring, but not that hard: if one demo blows up and you need to either do it over or abandon the rest of it, there's plenty of ways to speed up or slow down other parts of the day. An hour is reallly pretty nice: if you speak too long on one thing you can make up for it later, if you forget something when you're on slide 11 you can always find a way to weave it in to slide 12 or even 22. But in ten minutes, there's just nowhere to hide. I am so impressed that we were able to do this, and really glad we filmed them. Watch for links as we get things edited and uploaded.

      Kate

      Thursday, 09 June 2005 22:38:10 (Eastern Daylight Time, UTC-04:00)  #    
      # Wednesday, 08 June 2005

      We're putting in a lot of time at the RD Cabana booth recording these groktalks. This is such a great idea! Top notch speakers who normally do hour, half day, or all day sessions instead tackling one concept in just ten minutes. I haven't been able to watch them all, but I can't wait till they're uploaded to the groktalk site. In the meantime you can find some pictures we've taken while filming, our schedule, and a map to where we are.

      Take a look!

      Kate

      Wednesday, 08 June 2005 22:30:30 (Eastern Daylight Time, UTC-04:00)  #    
      # Monday, 06 June 2005

      One more entry on this very busy day: the VSTO team announced today that VSTO will be (has been, but it's still in beta) expanded to include support for creating Outlook add-ins with managed code. There's a 5-page description on MSDN already.

      This is making a cool tool, VSTO, even cooler. If you haven't noticed VSTO yet, it's time that you did. My Office 2003 category is pretty much all VSTO posts, versions 2003 and 2005.

      Kate

      Monday, 06 June 2005 17:51:09 (Eastern Daylight Time, UTC-04:00)  #    

      Here's the link to the ebay auction featuring over 20 Tech Ed speakers, almost all RDs. It ends June 16th. Get your hour of consulting time and help the tsunami victims at the same time. If you have no idea what I'm talking about, wander back in time through this blog to January: we did an auction then and raised $10,000 for immediate relief. This time it's about recovery and our help is still sorely needed.

      Whose time might you get?

      • Don Box (USA) Microsoft, Inc.
      • Jesper Johansson (USA) Microsoct, Inc.
      • Richard Campbell (Canada) Campbell and Associates.
      • Scott Hanselman (USA) Corillian, Inc.
      • Kimberly Tripp (USA) SQLSkills.com
      • Michele Leroux Bustamante (USA/Canada) iDesign, LLC
      • Kate Gregory (Canada) Gregory Consulting
      • Juval Lowy (USA) iDesign, LLC
      • Stephen Forte (USA) Corzen, Inc
      • Clemens Vasters (Germany) Newtelligence AG
      • Andrew Brust (USA) Citigate-Hudson, Inc.
      • Carl Franklin (USA) Franklins.net
      • Ingo Rammer (Austria) Thinktecture
      • Christian Weyer (Germany) Thinktecture
      • Joel Semeniuk (Canada) Imaginets
      • Rockford Lhotka (USA) Magenic Technologies
      • Patrick Hynds (USA) Critical Sites
      • Tim Landgrave (USA) Crowe, Inc.
      • Tim Huckaby (USA) Interknowlogy, Inc.
      • Jackie Goldstein (Israel) Renaissance
      • John Goodyear (USA) Aspsoft
      • Richard Hundhausen (USA) Accentient, Inc
      • Paul Sheriff (USA) PDSA, Inc

      Not a dud in the bunch! Please help if you can by bidding right away: the more bids are in the system the higher the minimum bid.

      Kate

      Monday, 06 June 2005 17:26:23 (Eastern Daylight Time, UTC-04:00)  #    

      My Tech Ed talk today was about what's new in C++ other than the language. I promised some links to whitepapers and resources. Here they are:

      http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/floapoint.asp - Eric Fleegal's whitepaper on floating point optimization.

      http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/securitychecks.asp - My whitepaper on GS and RTC in Visual C++ 2003, which you can use as a starting point. Try the samples with 2005. The code samples come with the C++ toolkit - there's a link in the whitepaper to download it.

      Thanks for coming to the talk!

      Kate

      Monday, 06 June 2005 17:17:02 (Eastern Daylight Time, UTC-04:00)  #    
      # Monday, 30 May 2005

      It starts with Chris Sells, who says he wants “the power and performance of C++ and the simplicity of C#.” He links to a grumpy programmer blog that says lovely things about the new C++/CLI, including this in the first sentence:

      C++ becomes a fully fledged, first class .NET language, throwing off the clumsy ‘managed extensions’ and gaining a full set of designers, code verification and mixed mode (managed and embedded) capability. It is thus the only .NET language that offers true backward compatibility with legacy code bases and delivers genuine performance benefits over C# or VB.NET.

      He then goes on to say something that many people close to me say regularly: what the heck is C# for? I don't say this myself, I think lots of people love C# and more power to them, there's nothing wrong with it at all. It has a place. It's just not the only way to use semicolons and brace brackets while targeting the CLR, that's all.

      The comments section of Chris' post is full of entries from people who don't know what C++/CLI is. I'm not being rude or dismissive, it's just that someone who complains about the double underscore keywords is complaining about the old syntax, and that is gone now. Read my lips: no more double underscores! Let's keep saying it till everybody hears it! ... er, sorry, got a little carried away there. If you haven't seen the new syntax, try Stan's “Hello, C++/CLI” column.

      Next up is Sam, who confessed to me privately that he liked C++/CLI and has now come out on his blog: “I was expecting all sorts of horrors and errors but the code came out perfect in first try and naturally, the way C# flows for me.”

      Craig Andera basically says “but people like C#” and you know? I'm not arguing with that. But why is it a win-lose game with C++ and C#? Why can't they both soar and do well?

      A nice start to what will probably be a long hard week for me.

      Kate

      Monday, 30 May 2005 09:57:41 (Eastern Daylight Time, UTC-04:00)  #    
      # Thursday, 26 May 2005

      Because he's just had something small but important explained to him in a very concise and useful way, of course.

      It starts at Tech Ed, but it's more than that. Check out www.groktalk.net for details.

      Thursday, 26 May 2005 14:48:12 (Eastern Daylight Time, UTC-04:00)  #    
      # Tuesday, 17 May 2005

      With the seven-city Smart Client Deep Dive tour done, I thought it would be appropriate to summarize my upcoming speaking and training schedule.

      • May 23-26. Ascend Training (Smart Client Track) Redmond, WA. Teaching Microsoft people and special guests (MVPs, RDs, partners) all about Smart Clients (VSTO, WinForms, and more) in Whidbey.
      • June 3. Ascend Training (one day ultra condensed) Orlando, FL. This is a pre-conference event for Academic Days at Tech Ed.
      • June 6-10. Tech Ed USA,  Orlando FL. Two talks (Monday morning and Tuesday morning - both are C++ talks and who would go to only one of them? See the new syntax, new optimizations, new power for an old friend - search for DEV330 and DEV331), one panel lunch (women in technology), and helping out with the way cool thing the RDs are doing that I can't quite discuss yet.
      • June 18-19. DevTeach, Montreal Quebec. A Canadian User Group Leader get-together, and my two C++ talks glued into one “What's New in C++“ presentation.
      • October 23-26, Tech Ed Africa, Sun City South Africa. OK, I'm not officially accepted as a speaker yet but I'm pretty sure I'll be there, topics TBD.
      • Nov 7-10. C++ Connections, Las Vegas, NV. How real customers are moving to the new C++.

      This is just the stuff I'm on stage for. I'm planning to be in the audience at either or both of the PDC and the MVP Summit, both in September.  And oh yeah, I have a company to run and some projects to finish. Gotta dash!

      Kate

      Tuesday, 17 May 2005 10:39:50 (Eastern Daylight Time, UTC-04:00)  #    
      # Friday, 22 April 2005

      I was diverted today for some time by http://www.michaelbach.de/ot/index.html which is a trove of “visual illusions” and explanations for many of them. A lot require Flash, which I stubbornly refuse to install, but enough are presented as images alone that I was able to experience a lot of surprises.

      You've seen the moving-without-moving blue and yellow wheel already perhaps, or the grid of white lines on a black background that seems to have black dots at the intersections, but only the intersections you aren't actually looking at. But have you seen the non animated image that starts out blurry and goes sharp, just because of what you were looking at before it? Or the instructions on how to draw impossible objects?

      Look at this tiny animated gif from the main page. Think of it as flat. Now think of it as something that goes down into the page, like a crater or a bucket. Did you get a surprise?

      I really must go do some work now.

      Kate

      Friday, 22 April 2005 13:57:11 (Eastern Daylight Time, UTC-04:00)  #    
      # Wednesday, 06 April 2005

      So, just how much do you know about the Base Class Libraries? About C# or VB? About moving to .NET from the unmanaged world? Think you know a lot? Wish you knew a lot? Well how about this for a contest: you answer questions about .NET development, and as long as you're getting every question right, you're in the running for TWENTY FIVE THOUSAND DOLLARS. Canadian currency. Oh, and if you don't know that much... the learning modules will take care of it for you. You can learn the stuff as you work through the contest. Even after you've been knocked out of the running for the grand prize, you can still win module prizes. You want to be part of this. I'm not eligible, or I would have entered already. A fun chance to show off, to learn, and to win a book or an XBox or a whole whack of cash money. What's not to like? Go, enter!

      Kate

      Wednesday, 06 April 2005 15:22:24 (Eastern Daylight Time, UTC-04:00)  #    
      # Friday, 25 March 2005

      How's this for a party? A five-day C++ conference, C++ Connections, held in conjunction with Visual Studio Connections,  ASP.NET Connections, and SQL Server Magazine Connections from Nov 7-11 2005 in fabulous Vegas at the marvelous Mandalay Bay resort. My standard introduction line on C++ matters is “I've been working in C++ since before Microsoft had a C++ compiler.“ It isn't 20 years for me (I never used cfront) but it sure is close.

      Think you could speak there? The call for papers is on Herb Sutter's blog. Am I speaking there? I hope so, I will report back with details when I have them. This is going to be fun!

      Kate

      Friday, 25 March 2005 20:53:57 (Eastern Standard Time, UTC-05:00)  #    
      # Saturday, 19 March 2005

      I'm going to be travelling across Canada in April and May to deliver the next round of Deep Dives -- these ones on Smart Client development with VSTO 2005. Here's the abstract:

      Recommended Audience: Developer.

      Microsoft Office has established itself as the standard for office productivity applications. Knowledge workers use the Office tools (word and excel) to create and mine data. The experience and familiarity with these tools can be leveraged to build a new breed of applications to make working with important information easier using Word and Excel as application interfaces.

      This session will explore the details of creating Smart Client Applications using Microsoft Office System and Visual Studio Tools for Office. This session will include data access techniques for online and offline work, security considerations and leveraging the .NET Framework and web services to interact with Line of Business applications. This session will also provide attendees with prescriptive guidance on choices for application development, comparing all the possibilities for smart client development, in the form of a decision matrix.

      Here's the schedule and some links to register:

      Ottawa April 19
      Waterloo April 20
      Windsor April 21
      Vancouver April 26
      Calgary April 27
      Halifax April 28
      Toronto May 3
      Montreal May 4

      I am preparing the material right now, and it's all Visual Studio 2005 and VSTO 2005 -- if you've seen me do VSTO 2003 material before, you're going to be delighted with the new tool! It's much more designery and much less “now simply provide implementations for the following 20 functions with almost identical names.” That means there's time to show cooler stuff, and I fully intend to. See you there!

      Kate

      Saturday, 19 March 2005 13:40:25 (Eastern Standard Time, UTC-05:00)  #    
      # Monday, 14 March 2005

      Back in the 80's, one of the classic anecdotes around corporate gender unfairness was the idea of the meeting that finished up in the mens room, inaccessible to the women left standing in the hall. If this  is how those meetings went, we were worried for nothing.

      See you at Tech Ed, guys!

      Kate

      Monday, 14 March 2005 11:16:09 (Eastern Standard Time, UTC-05:00)  #    
      # Friday, 04 March 2005

      Last night I spoke at the Metro Toronto .NET Users Group on Interop between J2EE and .NET apps, using a variety of techniques but especially Web Services. There was a bit of code, but really the emphasis was on philosophy, the kind of “big picture” approaches you can take to make interop happen. I mentioned more than once that it's important to know what exactly you mean by interop and what it is that you want your two (or three, or more) applications to be able to do together. The sorts of projects that really don't work are the ones that start “how can we use BizTalk in our firm?”. Start with a business problem, and if it looks like BizTalk will make it possible to solve the problem, then go from there, but don't pick the solution and then go looking for a problem.

      This came back around in the post-presentation questions and chat, and we got to talking about the importance of requirements. I'm hip deep in a project where we spent months just settling the requirements, but as a result the project has moved forward into code after spending years (before I came on board) getting about halfway through design and then stopping and starting over. For Enterprise work (and these interop issues are generally Enterprise) there is simply no substitute for real solid business requirements that are completely nailed down before anyone starts designing, followed by a properly thought through design. I don't go through all that for three day projects, putting together a little Sharepoint web part or some Windows Service that sends email at night about additions to the database today, but I sure go through it for anything that needs more than one programmer or that will take more than a month.

      I was reminded of a funny article I read a while back called Agile Bridge Building, which mocks Agile Software Development by dissing bridge design in favour of showing the client Working Wood as soon as possible. Basically, you stick a log out into the river and right away you've started to build your bridge. This process naturally produces requirements, since now we have consensus that the log should actually reach all the way to the other side of the river! Why waste a lot of time in meetings trying to develop this requirement in advance? Once there's working wood, a genuine prototype, the stakeholders can quickly agree on what's important. And all without the hassles of paying someone for requirements and design. There's more, so I recommend you read the whole article. And to be honest, if I lived in the woods and was sick of wading through a small stream to get to the far side of my property, I probably would apply Agile Bridge Building to the problem, just as I don't particularly design every speck of software I write. But I'm glad the folks who built the bridges I drove over today designed them first, and I'm glad I know how to gather requirements, get consensus on functionality, and design the big projects I code before I code them.

      Kate

      Friday, 04 March 2005 09:45:29 (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, 02 March 2005

      Once again Fawcette have tapped a number of Toronto folks and given us not-so-secret discount codes for VSLive registrations. That's right, register for VSLive Toronto, enter KATE as your priority code (where it says "Please enter the first five digits of your conference priority code") and presto! you get 10% off.

      VSLive is April 13th to 16th, and there are early bird prices until March 16th. This year it's divided into ASP and Smart Client, and it's packed with Whidbey (aka 2005 or 2.0) material. The agenda is at http://www.ftponline.com/conferences/vslive/2005/to/agenda.aspx with session details at http://www.ftponline.com/conferences/vslive/2005/to/asp-sessions.aspx and http://www.ftponline.com/conferences/vslive/2005/to/smart-sessions.aspx. You'll see plenty of familiar names speaking, and there's sure to be more good stuff announced as we get closer to the date. So make your plans, and I'll see you there.

      Kate

      Wednesday, 02 March 2005 10:22:51 (Eastern Standard Time, UTC-05:00)  #    
      # Tuesday, 01 February 2005

      110.00, 107.50, 105.00, 102.50, 101.00, 100.00

      What do these numbers have in common? They are losing bids for the consultant auction :-). Time is running out, the auction closes tomorrow morning, 9am Eastern, and now is the time to boost your bid and catapult yourself up the list! Lowest winning bid at the moment is $120... let's drive it up!

      Kate

      Tuesday, 01 February 2005 18:01:23 (Eastern Standard Time, UTC-05:00)  #    
      # Monday, 31 January 2005

      Apparently some people are hesitant about bidding on the auction in case they win. I know the feeling, do I have enough tough questions to justify an hour of Richter or Prosise time, do I have my act together on Web Services and Interop enough to grill Michele on them properly...

      Relax. You don't have to think of it that way. Whoever you win, fire us an email with something that's been bugging you. Like “can you really explain this whole destructors in C++ when it's managed code and the object I'm using wasn't even written in C++?” Or like some of the old emails I cleared out this last week: “how can I uninstall a service?” “how do I restrict forms authentication in ASP.NET to only some folders? How can I force a logout when they browse from a secured to an open page?” and “why am I getting this linker error?”. Maybe that uses up 10 or 20 minutes. Fine, next time you have a toughy like that, send it along. By the time you use up your whole hour, you'll probably have become a friend/colleague/former client who can send questions like that once in a while for the rest of your life.

      Or, how about this? Take a look at the talks your selected consultant has prepped for upcoming conferences (get us to send you the abstracts we've submitted) and have us deliver a private session of a useful talk to your whole company over LiveMeeting. There's a free LiveMeeting trial going on, and the talks have to be prepped anyway, so your hour would just be the delivery of the talk, to as many of your colleagues as you can get online at once. So it might end up 90 minutes, we don't mind.

      You can't lose! Hell, even if you use your hour to take one of us for a drink the next time we're in the same city, what really counts is you gave $100 or $150 or $200 to help people who have NO clothes, NO books, NO walls around them.... this is a FUNDRAISER so come on, let's raise some funds!

      Kate

      Monday, 31 January 2005 09:40:55 (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, 26 January 2005

      Barry Gervin is bidding on some of his fellow celebrities in the fundraising auction. But the thing is, Barry is a .NET expert in his own right and employs quite a few more. And you know, if he asked me to help him with some little thing that would only take an hour, I would. So he doesn't need the services he's bidding for in quite the same way as other folks do. So he has a few, er, creative ideas for how to use an hour... still consulting, mostly, but ...

      But to clarify, I won't so much shave my head as shorten my hair by the same number of inches that Barry shortens his. That should still leave me three feet or so :-)

      Kate

      Wednesday, 26 January 2005 15:04:31 (Eastern Standard Time, UTC-05:00)  #    

      I am learning a lot about how EBay works. In IM with Adam and Julie I think I have figured it out. Let's say you went right now to bid on the auction (good for you!) and you bid $200. Not “$100 now and if I need to then automatically raise me to $200” but just flat out $200. Your bid would still appear as $100. Why? Because there are 30 items available and so far only 27 have been bid for. Once there are more than 30 bids, we will start to see real bids and not just the minimum. So come on, go bid. Believe me you will get more than $100 value no matter who you get, and you'll be helping a good cause.

      Kate

      Wednesday, 26 January 2005 12:25:02 (Eastern Standard Time, UTC-05:00)  #    
      # Sunday, 23 January 2005
      Sunday, 23 January 2005 13:20:33 (Eastern Standard Time, UTC-05:00)  #    
      # Saturday, 22 January 2005

      Stephen Forte has posted a voluminous update that includes links to all our blogs and little bios of us all, in case there are one or two you haven't heard of. Check it out.

      Kate

      Saturday, 22 January 2005 12:43:24 (Eastern Standard Time, UTC-05:00)  #    
      # Friday, 21 January 2005

      Here's a blog entry by the surfers I mentioned yesterday explaining some of what they're up to and how desparately it's needed. And Julie has a delightful picture of them, too.

      Julie is still getting our ducks in a row with EBay. As you can imagine, you can't just hold an auction and claim it's a fundraiser -- what a fraud opportunity.that would be! There are letters and faxes and suchlike to make sure that everybody is on the up and up. The good news is that because EBay and Paypal are doing this, you can be confident your money (you are going to bid, aren't you?) is going where we say its going. The bad news is I don't have an EBay link yet :-)

      Kate

      Friday, 21 January 2005 08:46:04 (Eastern Standard Time, UTC-05:00)  #    
      # Thursday, 20 January 2005

      An absolutely stellar group of people, dubbed by Julie Lerman to be .NET Celebrities, have come together to offer up our tiny little bit of help for those whose lives, homes, loved ones, livelihoods, and dreams were washed away on Boxing Day of last year. The immediate “if we don't get fresh water in there they will all die” crisis is past, but there is so much rebuilding work to be done. The agency we've selected is Aceh Aid at IDEP which is local to Sumatra and has been on the ground since the waves hit. This is a nimble and creative group that, for example, teamed up with the surfing community to get boats into the worst hit places while large outside groups couldn't figure out how to reach them. It's going to be an EBay auction with payment through PayPal directly to a US foundation that supports IDEP -- that way for US-based people it will be tax deductible for sure. I am working on an answer for Canadians on that. Of course if your company spends the money to get the advice, then your company can deduct it as an expense, just the same as if you wrote me a cheque for my time.

      There are 25 of us up for auction. Top bidder gets their pick of Jeffrey Richter, John Robbins, Jeff Prosise, Michele Leroux Bustamante, Jonathan Goodyear, Andrew Brust, Richard Campbell, Adam Cogan, Malek Kemmou, Jackie Goldstein, Goskin Bakir, Hector M Obregon, Patrick Hynds, Fernando Guerrero, Kate Gregory, Joel Semeniuk, Scott Hanselman, Barry Gervin, Clemens Vasters, Jorge Oblitas, Stephen Forte, John Lam, Deborah Kurata, Ted Neward and Kathleen Dollard. Wow! (And like I need to link to their blogs -- you know who these people are!) Most are friends of mine already, 18 are RDs, 5 are Canadian, all are top notch .NET stars who know their stuff and are in the habit of solving problems for people.

      So what we are auctioning is one hour of mentoring. Phone, IM, email, whatever. (We won't fly out to you.) If you're the top bidder, you get whoever you want from that list. Second bidder chooses from the still stellar list remaining. And so on.

      Most of us are consultants so you could theoretically buy our time. But that's in theory. My firm doesn't take one hour jobs. We don't really like to take one day jobs. Our preference for mentoring work is to take a $5000 retainer and let you know when you've used most of it up and need to send more. (We make exceptions for some work that's really technically interesting and fun, but we still need to be confident it will go on for a while.) I expect it's a similar situation for the others. That means we're offering something you otherwise couldn't buy. I want you to keep that in mind, then go bid more (a lot more) than you think an hour of my time is worth. The money goes to those who need it, you get a deduction, and you get some important business problem solved. Can't fail!

      I'll post a link to the auction as soon as it's live.

      Kate

      Thursday, 20 January 2005 10:17:23 (Eastern Standard Time, UTC-05:00)  #    
      # Tuesday, 18 January 2005

      ... who wouldn't be embarrassed by pictures of themselves from the 80's? But you have to see these, really you do... BillG looking soulfully into the camera while cuddling up to a monitor with the Microsoft logo, or giving new meaning to the old phrase "flipping floppies"... I don't think it was really for Teen Beat but anything's possible.

      http://blog.monkeymethods.org/2005/01/bill-gates-strikes-pose-for-teen-beat.html

      Kate

      Tuesday, 18 January 2005 10:01:07 (Eastern Standard Time, UTC-05:00)  #    
      # Saturday, 15 January 2005

      Thanks to kbalertz, I was notified of these:

      FIX: You may receive results that are not correct when you perform mathematical computations that involve floating point arithmetic in Visual C++ .NET 2003

      The repro code looks like this:

      double a = 1.0 - sqrt(225.0) / 36.0;
      double b = 1.0 + (31-30.0) /70.0;
      if( b > 2.0 )
         b = 2.0;
      double c = b * a * 9.0;
      printf( "%f\n",c);

      If all is well, this is supposed to print 5.325000 but if you have the problem it prints 14.378571 -- a slight discrepancy! Get the hotfix only if you need it.

      Those with an old version of the XBox Developer Kit installed might also like to know about:

      PRB: Debugger stops responding when you debug a Visual C++ .NET application with the Visual Studio .NET debugger

      Workarounds: get a newer XDK, disable parts of the XDK, or leave your XBox on and connected to your computer all the time. That last one would kill my productivity for sure.

      Saturday, 15 January 2005 15:13:47 (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, 15 December 2004

      Finally the official announcement from INETA that eight super deserving people have been added to the North American Speakers bureau. Two are Regional Directors and friends of mine, Joel Semeniuk and Stephen Forte (get ready to come to East Of Toronto, you two :-)). All are well known in the speaking world and will be great additions to the bureau. Welcome aboard folks!

      Here's a list of blog links stolen from the INETA site:

      Kate

      Update: If you want to learn more about the speakers bureau, or see who's on it, check http://www.ineta.org/DesktopDefault.aspx?tabindex=2&tabid=14.

      Wednesday, 15 December 2004 22:12:28 (Eastern Standard Time, UTC-05:00)  #    

      I just read a blog entry that, to me, really epitomizes what blogs are all about. It starts out as a musing on a little technical question -- if some C++ code throws a string literal, what kind of catch clauses should win the race to catch it? -- and turns into a very personal story of what C++/CLI is for and about and Stan's motivations in being part of it. He says:

      We have had an extraordinary degree of freedom not simply in our design, but in our being able to reach out and work with the general c++ community. this language is a coalition. I think we have all wanted to put the best face on C++ in what we regard as an otherwise hostile environment for C++. We think this is a win-win situation for everyone. if you don't like something, you should let us know. we're not a hundred thousand leagues removed from our users. if you want to use the language, you have every right to tell us what you think about it; how you find it; what you want.

      And later:

      I just program and write. and I do that best in C++. C# and Java mean nothing to me. Now I have my own language to use on .NET. That was my personal agenda in all this. I think you should check it out.

      So go read it. C++/CLI is being developed by real people who care about the technology they use and the technology they create. I don't know what it is about C++ that makes people feel this way about it -- I feel the same way myself. I use VB.NET almost every day, I use XML, I use all kinds of things, but I don't really have feelings towards those things. I do for C++. Weird but true, and --hey!-- I'm not the only one.

      Kate

      Wednesday, 15 December 2004 11:48:20 (Eastern Standard Time, UTC-05:00)  #    
      # Thursday, 09 December 2004

      Salon has an interesting interview with Joel Spolsky. (If you're not a subscriber, you'll have to sit through a Day Pass ad before you can read it, and I recommend you do.) Some real gems in it:

      The key problem with the methodologies is that, implemented by smart people -- the kind of people who invent methodologies -- they work. Implemented by shlubs who will not do anything more than follow instructions they are given, they don't work.

      [on intelligently sometimes-online apps for use on airplanes] ... airplanes are actually getting Internet connections. And Wi-Fi is spreading like crazy. What's kind of surprising is that it has turned out to be easier to rewire the entire world for high-bandwidth Internet than it is to make a good replication architecture so you can work disconnected!

      There's also a nice link to the Joel test, sort of a lightning version of the CMM -- takes about 15 seconds to answer and then you know where you stand. (We're at ten-and-two-halves out of 12, which is pretty good, especially since with only 6 people finding someone in the hallways who isn't on your project is a bit of a challenge.)

      But then he says:

      Microsoft ... could ship a brown paper bag called Microsoft Brown Paper Bag 1.0 and hundreds of thousands of people would buy it. Or at least try it.

      Please. What does he think I am, naive? I am a seasoned computer professional, paid to make code for over a quarter of a century, rich in Microsoft contacts and non disclosure agreements and summit invitations. I don't buy 1.0 of anything! :-) I'll be waiting for 2.0 or at least 1.1, or at the very least a service pack!

      Kate

      ps: here's the first service pack for MS BPB 1.0:

      (it's all about the patch management...)

      Thursday, 09 December 2004 15:41:55 (Eastern Standard Time, UTC-05:00)  #    
      # Monday, 08 November 2004

      Over on Developer.com, Brad Jones has summarized the TIOBE Programming Community (TPC) Index for October 2004. This is a measure of how many web pages and newsgroup postings mentioned a programming language name in conjunction with the word programming. So if I say “For serious programming, C++ is way better than Java” then that is a hit for both C++ and Java. These hits are going to include people's resumes, job postings, ads for courses, how-to pages, book pages, and so on. It gives a rough indication of popularity that people are talking about a language. After all, I rarely compare C++ to Fortran or to PL/I. I certainly can't remember the last time MATLAB (to pick a name from the table) came up in conversation. Job seekers trim their resumes all the time to include only the “relevant” languages they know.

      There's a table of results, and a sorting of languages into “A languages” and “B languages” but I was really intrigued by the graph. A first glance reveals a fairly steep Java fall this year. But the C++ line is more interesting because it falls too, though not as steeply or as far, and then climbs back up again starting in March of this year. Is this people talking about C++/CLI? I think it is.

      Kate

      Monday, 08 November 2004 13:46:12 (Eastern Standard Time, UTC-05:00)  #    
      # Thursday, 04 November 2004

      Long ago, before search engines added automatic spell checking to their bag of tricks (did you mean to search for MASSACHUSETTS?) I knew people who used Google (or before that, Altavista) as a spell checker. Just search for the word spelled one way, then another, and compare the number of hits. If you get 125 hits for one spelling and 13,456 for the other, you have a pretty good idea of which is right.

      Today I found myself using Google News as a sort of voting fact checker to establish (forgive my ghoulishness) whether Yasser Arafat has or has not died. You can count votes from different news organizations. The main news.google.com (or .ca for me) gives you a handful of stories, but click a link under “In The News” and you see a lot more. For example, http://news.google.ca/news?num=30&hl=en&ned=ca&ie=utf-8&q=Yasser-Arafat.  Perhaps not what they had in mind, but an intruiging thing to be able to do.

      Kate

      Thursday, 04 November 2004 14:25:36 (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, 27 October 2004

      My latest whitepaper is on MSDN now.

      Summary: This article is for C++ programmers who are (at least for now) not targeting the Microsoft .NET Framework in new or existing applications. It provides some guidelines for moving to the .NET Framework without leaving behind the investment in existing code, and explains why you should consider moving to the .NET Framework not only for new development, but for existing applications as well. (9 printed pages)

      Kate

      Wednesday, 27 October 2004 06:10:12 (Eastern Daylight Time, UTC-04:00)  #    

      As a presenter, I use the /fs switch on Visual Studio quite often. It makes the product come up with larger fonts in Solution Explorer and other “chrome” that you can't control with Tools, Options. If you present, do everyone a favour and use this switch yourself. Also change your highlighted text from white-on-darkish-blue to black-on-yellow and crank your editor fonts to at least 14 points.

      Well, Scott Hanselman alerted us all that the /fs switch is gone in Whidbey and urges us to vote on the importance of this omission. It's not just about speakers, it's about accessibility. My firm has done quite a bit of accessibility work, and we're sensitive to it. How can one team be changing ASP.NET so it emits accessible HTML while another removes a working switch that wasn't hurting anyone and that made programming feasible for someone with low vision? It must just be an oversight, right? Well give the bug a vote and the oversight is more likely to be corrected.

      Kate

      Wednesday, 27 October 2004 04:57:30 (Eastern Daylight Time, UTC-04:00)  #    
      # Sunday, 05 September 2004

      Here is a terrific collection of “new C++” material that's well worth reading, all from Stan lately:

      • http://msdn.microsoft.com/visualc/default.aspx?pull=/library/en-us/dnvs05/html/TransGuide.asp is a translation guide from Managed Extensions for C++ (that would be the “all those underscores“ version of the language) to C++/CLI (the new, beautiful version.) If you went to the trouble of learning the __gc, __property etc way of doing everything, this guide will show you how to translate your programs. If you never got around to learning it, move straight to C++/CLI.
      • http://msdn.microsoft.com/visualc/?pull=/library/en-us/dnvs05/html/stl-netprimer.asp is a guide to STL.NET. You won't find STL.NET in the current CTP release, but it's coming. C++ is the only managed language that supports both templates and generics, and they each have their place. With STL.NET you can get the best performance, you can use idioms that are familiar and comfortable, and you give up nothing when it comes to interop with other managed languages. This article is part I; I'm watching for more parts.
      • Finally, this blog entry (http://blogs.msdn.com/slippman/archive/2004/08/27/221373.aspx) is on interior pointers. I've read explanations of how to code interior pointers before, but hadn't really seen what they are for. (The same can be said of anonymous methods; lots of folks will show you how to do them but Don Box showed the other night what they can be used for, and now I get it. But that's Don for you.)

      What a great time to be a C++ person, watching the new language take shape.

      Kate

      Sunday, 05 September 2004 10:12:41 (Eastern Daylight Time, UTC-04:00)  #    
      # Wednesday, 18 August 2004

      For a long time now, I've been using mapquest.com for maps of places I am going to. I have no real complaints with it, so I haven't been looking to see what else there is. Sure, it's a little annoying that I have to click Maps when I first get there if I want a Canadian map, and then there's a really annoying refresh when you choose Canada and it changes State to Province, which can wipe out everything you typed if you're on a slow line, but those are pretty minor, really.

      Last night Dwayne was talking about Mappoint Location Server, which is an enterprise-focused technology for seeing where your people or deliveries or whatnot are, using a map, but of course he showed a lot of Mappoint maps along the way. And you know what? They're nice-looking. Really nice-looking.

      So tonight someone phoned me to ask where a particular building was, and said Mapquest couldn't find the address she gave it. (Turned out she was spelling the street incorrectly so no marks off to Mapquest on that.) I tried Mappoint and -wow! These are beautiful maps that get more beautiful as you drill in.

      drills to

      It felt a little more dial-up friendly, too. The printable map is especially nice. Mapquest reduces the amount of chrome when you go for a printable map, but not to zero. At least for now the printable Mappoint map is pretty much chrome-free. I tried a few places where the streets are denser (downtown Toronto) and liked that, too.

      For now it seems to be North America only, so I'll use MapQuest for my Europe planning. Up to now I've been using a 40 year old atlas for that, which is working fine really since London, Paris, Venice etc tend not to move around and I only need to know things like how far apart they are. Sooner or later I'll want a touch more detail, and Internet maps are perfect for that.

      [Update Sept 23rd: Europe is in there. I'm a 100% Mappoint girl now...]

       Kate
      Wednesday, 18 August 2004 22:37:24 (Eastern Daylight Time, UTC-04:00)  #    
      # Monday, 16 August 2004

      The East of Toronto .NET Users Group is meeting tomorrow night, Tuesday the 17th. Come and hear Dwayne Lamb and discover all the wonders of adding location information to a mobile application. Please register at gtaeast.torontoug.net so we know how many to expect.

      Come out and get a look inside Microsoft's latest addition to the MapPoint family of products - Microsoft MapPoint Location Server. With MLS's SOAP interface, developers can easily integrate the real-time location of a mobile phone into their applications. Fleet management, Mobile CRM, asset tracking, buddy finding and much more are now possible. MLS's Plugin architecture allows for integration with a number of sources of real-time location information from Wireless operator networks to Wi-Fi hotspots and GPS devices. Come out and hear about the new location services that mobile operators are offering and find out how .NET programmers can integrate them into their solutions.

      Dwayne Lamb, Visual Byte Inc. is a 15-year veteran of the computer industry and an experienced technology instructor, writer, presenter and developer. Through his work at Visual Byte, and his active involvement in the developer and user communities, he has become a leader and industry specialist in the area of mobile application development and design and has been recognized by Microsoft as a Mobile Device MVP.

      In other exciting user group news, I have a room through the fall for the group -- in the same building, but a different room. Starting with the September meeting (which will feature a presentation on building applications for mobile devices from the MSDN Canada team) we will be in UA 2120. But tomorrow it's still UA 1350. See you there!

      Kate

      Monday, 16 August 2004 12:47:11 (Eastern Daylight Time, UTC-04:00)  #    
      # Friday, 06 August 2004

      Clearly some sort of internal milestone has been reached by the C++ product team, because Stan and Herb are blogging again. Stan has quite a long entry on why C++/CLI supports both templates and generics, from an insider/designer point of view. It's not a skim-through-while-you-eat-your-breakfast post, but if you care about C++ you'll be glad you read it.

      Kate

      Friday, 06 August 2004 09:02:00 (Eastern Daylight Time, UTC-04:00)  #    

      Admit it, you'd like a Tablet PC, wouldn't you? Then you could know what Julie Lerman and other ink-lovers are talking about all the time.  Or if you already have one, with a second one you could give it away and get someone else hooked on tablet development. Well, Carl Franklin of .NET Rocks (and my fellow RD) wants some insight into what developers care about, and he's willing to give away this lovely Toshiba M200 to get it. Fill out a quick and confidential survey and you're all set. Contest ends August 26th, so don't dilly-dally.

      Kate

      Friday, 06 August 2004 06:53:29 (Eastern Daylight Time, UTC-04:00)  #    
      # Thursday, 08 July 2004

      Here's a strange thing that happened yesterday. An ASP.NET app, written in VB.NET, was only intermittently dealing with its events, such as button clicks. At first it seemed to be that the event was handled if we were debugging, and not handled if we were not. But that turned out not to be the case.

      Whenever you're faced with weirdness -- and let's face it, an event that sometimes is handled and sometimes is skipped counts as weirdness -- the knowledge base is your friend. A team member found 314965, which is a C# version of the problem. Although no-one could find a VB KB article, these are our symptoms, and more importantly this fix was a fix.

      SYMPTOMS

      A control event on a Microsoft Visual C# .NET Web application form may not fire. The event does not fire if you wire the control event imperatively, that is, if you double-click the event from the Events view and then add the code.

      RESOLUTION

      Add the event to the HTML code behind the form, that is, wire the control event declaratively.
       
      “Wire the control event declaratively” means put an onxxx= attribute in the HTML:
       
      <asp:Button id="Button1" runat="server" oninit="Button1_Init" Text="Button1"></asp:Button>
      Instead of oninit you might have onclick or whatever event you have an issue with. Also, make your handler function public rather than private.
       
      Moral of the story: there are two. First, it isn't always you. I can't tell you how many emails I've received telling me “there must be a bug in Microsoft's C++ optimizer, because my debug builds work beautifully but my release builds blow up.” Experienced C++ programmers mutter or shout “memory problem” when we get such emails: you're overwriting something or leaking or just generally not handling memory well; debug and release builds have huge differences in allocation, initialization, and other memory work when you're using unmanaged C++. Most of the time, it's you. But every once in a while, it's not you. And a quick search through the knowledge base is one way to see if it's you or not. Second, just because you're writing in VB doesn't mean that C# KB articles don't apply to you. Never be a language snob.
       
      Kate
       
      ps: of course I program in VB sometimes. What else would I use to create ASP.NET apps?
      Thursday, 08 July 2004 09:48:33 (Eastern Daylight Time, UTC-04:00)  #    
      # Tuesday, 06 July 2004

      I know these things are silly, but anyway:

      You are Windows 2000 SP3.  You're a steady and reliable friend.  People think you're all business, but with your recent therapy you've become a little more playful.
      Which OS are You?

      How did it determine I was service pack 3? I don't want to know. You can see all the possibilities at http://bbspot.com/News/2003/01/os_quiz_all.html. I think I would have rather been XP.

      Kate

      Tuesday, 06 July 2004 16:21:37 (Eastern Daylight Time, UTC-04:00)  #    
      # Thursday, 01 July 2004

      ”For pure .NET, C++ typically 25% faster than C#” is the only English sentence (other than photos of slides) in a blog entry I just came across. The rest is Italian, but you know that one sentence certainly caught my eye.

      The entry describes a June 30th (that would be yesterday!) Herb Sutter talk. I ran it through Babelfish, but automatic translation doesn't do well with technical terms:

      Ago from landlady the "Deterministic finalization" where java and C # is under accusation in order not to have conserved the concept of annihilator in the language. The C#/CLI annihilator is the equivalent of the pattern arranged suit.

      Er, OK. Still I think the slides say a lot, and 25% faster? 50% faster if there's heavy pinvoke? Wowza! The future of C++ is indeed a much rose-colored one.

      Kate

      Thursday, 01 July 2004 17:08:17 (Eastern Daylight Time, UTC-04:00)  #    

      Like this quote?

      I may have to retreat from my stance of preferring C# and disliking MC++. With Whidbey, MC++ is a whole new language and nearly all of my current objections to it have disappeared.

      It's from the last paragraph of an article by Brent Rector  :-) The article itself is worth a read, too.

      Kate

       

      Thursday, 01 July 2004 16:55:20 (Eastern Daylight Time, UTC-04:00)  #    
      # Wednesday, 30 June 2004

      In conjunction with the announcement of the Express products, Microsoft's Channel9 is running a coding contest. Each language has its own judge, and yes of course there's a C++ judge. “The Summer of Express contest is a worldwide skill contest where developers are challenged to create “non-business” applications using the newly announced Express products.” And yes, you can use the betas -- in fact that's the whole point.

       Why not?

      Kate

      Wednesday, 30 June 2004 09:56:54 (Eastern Daylight Time, UTC-04:00)  #    
      # Tuesday, 29 June 2004

      This is fun! If you want to get started using Visual C++ to write managed or unmanaged code, but you don't want to buy the full product, what can you do? You could use the free Visual C++ Toolkit, which I've told you about before, but that doesn't include the IDE though it does include some very nice samples and whitepapers: one blogger was nice enough to say “the samples alone are worth the download.” At Tech Ed Europe, Microsoft has announced the Express versions of the 2005 products, including Visual C++ 2005 Express (that means they're in beta now, whereas the toolkit is the current released version. You can't release products you create with a beta.) You can download now, so go ahead!

      Kate

      ps: if you know who the gentleman is at the top left of that Visual C++ 2005 Express Beta page, please drop me a note. I swear we've met and it's going to bug me until I get a name.

      Tuesday, 29 June 2004 13:40:10 (Eastern Daylight Time, UTC-04:00)  #    
      # Friday, 25 June 2004

      Did you know that one person -- Bob Bemer -- pushed the development and adoption of ASCII? Or that he was also responsible for the backslash and escape keys? (There's more, too, like naming COBOL -- check his site.) Isn't it a shame we don't hear this stuff until the obituary? I love this quote: "He was a coder until he couldn't code any more. He lived it and breathed it." While I love dealing with customers, and doing “big picture” architecting, as well as training and mentoring, I too love to code, and I hope someone can say that about me someday -- 50 years from now would be fine.

      Kate

      Friday, 25 June 2004 12:39:22 (Eastern Daylight Time, UTC-04:00)  #    
      # Monday, 31 May 2004

      Friday morning at Tech Ed I was talking to some folks on the C++ team about the language changes that are coming for C++ and what they really mean. I don't mean that “ref class” means a class whose memory is managed by the runtime. I mean “what is the importance to a language of its syntax, and of changes to that syntax?“ How does changing a language affect the community of people who are using that language?

      Managed Extensions for C++ was an attempt to bring the CLR to C++ without changing the syntax of C++. It had the side effect, in my opinion, of changing the spirit of C++, of preventing you from writing “real“ C++ for the CLR. The new language, to be known as C++/CLI, changes the syntax, but oddly enough that makes writing C++ for the CLR more C++-like than ever.  The idioms, the ways of thinking, the patterns of development, transcend the syntax. We get destructors, we get templates, we get type-agnostic code. I want this new syntax to be widely accepted, and for people to move to .NET without leaving C++ for C#. I want this partly for selfish reasons, of course: there's value in being a C++ expert only as long as there are other C++ programmers doing my kind of work. Otherwise I'm just the last person to see the light and move to C#. But I also truly believe that if you've gone to the trouble of learning C++ (and really learning it, so you like templates and destructors and operator overloading and the like) then you are foolish to wander away from that and learn a different, less powerful language. You can't beat C++ for interop, and it's a first-class CLR language for libraries, services, and other back end work. Front end work is tough because certain product teams haven't built C++ wizards and designers, but it's not impossible. I for one am agitating for wizards and designers that support C++ and I'll report back as I make progress there.

      To me, this is a turning point for C++, a chance for people who rejected the framework to stick with C++ or rejected C++ to go to the framework to get the best of both worlds. But I know that there's a limit to how many times you can change a language, and if this version is as poorly-liked as Managed Extensions, times will not be happy. The good news is I like C++/CLI a lot, and believe it will succeed as a language to bring .NET to C++ and C++ to .NET.

      Who else feels the way I do? Stan Lippman, for one. He says “I personally guarantee that anyone that feels passionate about C++ will be both delighted by and engaged with the C++/CLI language that will be shipped with Visual Studio 2005.“ You might feel that “delighted“ is a bit strong, but wait till you see for yourself. And if you hate Managed Extensions, you'll chuckle to read how he feels about them. 

      How can you learn more? I have an upcoming codeguru article on the syntax. Herb Sutter had a horrible timeslot at TechEd to talk about this, but you can find the slides at http://216.55.155.2/docserver/slides/DEV333_Sutte%20v3.ppt (I think you need to be a TechEd attendee to log in.) There are links all over http://msdn.microsoft.com/visualc/ as well. I am indeed delighted with the new syntax (am I hopeless or what, but I actually laughed with happiness when I saw how properties are done now,) and I hope you will be too -- for my sake and yours.

      If you're working in C++ now but you're not working on the CLR, should you learn Managed Extensions -- the __gc stuff -- or wait for Whidbey? I guess I'll say get a copy of the Community Technical Preview (it's still pre-beta) and start learning Whidbey/2005 syntax now. If you are using __gc now, get ready for things to be a whole lot nicer really soon.

      Kate

      Monday, 31 May 2004 13:34:37 (Eastern Daylight Time, UTC-04:00)  #    
      # Wednesday, 26 May 2004

      Today I did my webcast, sat on the panel for the Women In Technology Luncheon, and have been hanging in the Cabana ever since. The Cabanas are so cool! There are so many smart people here, and attendees come by with a problem and a tremendous concentration of smart people gather and solve the problem. And because of the location, everyone seems to come by. I am seeing old friends and listening to wonderful conversations. It's full of RDs, too.

      If you're at TechEd and you haven't spent time in a Cabana yet, you really really have to. Trust me. The breakout sessions will be on the DVD. Come to the Cabana and even if you don't have a question, just listen in! There are presentations too, but sit close if you want to hear them.

      (If you're here this afternoon, and wondering whose cell phone is playing O Canada, that would be me. It attracts Canadians remarkably well.)

      Kate

      Wednesday, 26 May 2004 21:20:37 (Eastern Daylight Time, UTC-04:00)  #    

      I can't believe it's only Day 2. My feet are sore enough to have been here a week! Today I stayed in the hotel for a while catching up on work, then went over to the convention centre for a book signing. Unfortunately you were all more interested in eating lunch than coming by the bookstore :-(. Found a quiet place to do a bit more work, then to the RD booth for more insanity. Some very smart fellow got 6 3/4 out of 22 on the quiz -- almost beat the record which is 7. This is a seriously hard quiz. If you think you can do better, come on by.

      What do you think has this crew so interested?

      It's CodeRush and it is seriously cool. Scott Hanselman is making animated gifs, flash demos, you name it of this tool because you have to see it to know what it does. I saw it and I loved it. This is a high-power piece of floor: Clemens Vasters, Mark Miller (it's his product I believe), Scott Hanselman,  Goksin Bakir (just the top of his head), and Mitch Roebush (his back anyway.) That's four RDs in one place and a whole lot of brain power. The feet in the background include Guy Barrette and Malek. And let me just say, my feet love the extra thick carpet in the Microsoft Pavilion.

      Kate

      Wednesday, 26 May 2004 01:50:47 (Eastern Daylight Time, UTC-04:00)  #    
      # Thursday, 20 May 2004

      On Patrick Tisseghem's blog I spotted a link to a Sharepoint quiz. I was pleased to get 9 out of 10 (I lost one mark by underestimating Front Page, easily done.) There are other office quizzes you can take when you get to the site. Nice way to keep from working on a beautiful morning.

      Kate 
       

      Thursday, 20 May 2004 08:06:27 (Eastern Daylight Time, UTC-04:00)  #    
      # Friday, 14 May 2004

      So who tried to sneak a blog out into the world? Michele Leroux Bustamante, that's who. She's an RD, based in San Diego, and my go-to for the other kind of interop questions -- interop to Java and that sort of thing. For example, she's running  a Web Services Interoperability Education Day, on May 22nd, to show .NET and Java tools with WS-Security and WS-Policy support. So, read it!

      Friday, 14 May 2004 08:48:53 (Eastern Daylight Time, UTC-04:00)  #    
      # Tuesday, 04 May 2004

      I spent all day Monday hanging with almost all of the Canadian RDs. If you were wondering who we all are, you can find nine of us at http://msdn.microsoft.com/canada/rd/. Or check the individual pages such as http://kate.regionaldirector.ca. (If by chance you're reading this blog entry at http://kate.regionaldirector.ca, then you need to check out http://www.gregcons.com/kateblog/ which is my regular home.)

      About the picture: I hate it. What can I tell you, I hate pretty well all pictures of me but the ones that people get hold of electronically I hate even more. Enough about that until I managed to replace it with one I can stand.

      What do RDs talk about when you get us all in a room? Business challenges, personal challenges, what's coming in Whidbey, what we're excited about for Longhorn, patch management, and a bunch of other stuff that's under NDA for a while yet. We also talked about user groups, Deep Dives (like this Smart Client one in Toronto or this Web Services Security one in Toronto; there are some in Calgary, Vancouver, Ottawa, and Toronto too) and conferences. VSLive starts tomorrow, then all the TechEds through the summer and the Microsoft Partner Conference in July. Lots of chances for us all to get on stage. We also talked about the things we do beyond speaking, webcasts, and other community touches. Things like my Code Guru column, the RD column on MSDN, books, and developing content. Most people never think about where all the whitepapers on MSDN, the Hands on Labs and PDC and TechEd, and the presentations for tours and events actually come from. Sure, lots are written by Microsoft people, but plenty are written by smart folks who are really into the topic, and a lot of those are RDs. And of course, we talked about our day jobs and the work we're taking on. Don't forget, pretty much all the RDs are available for consulting gigs :-) although some of us are less available than others.

      Looking forward to the next one already.

      Tuesday, 04 May 2004 19:07:03 (Eastern Daylight Time, UTC-04:00)  #    
      # Tuesday, 27 April 2004

      So, read any good buffer-overrun articles lately? Notice how they like to show the hapless programmer cheerfully using strcpy() to copy 11 characters (or 11,000 maybe) starting at the location where only 10 characters worth of space was allocated? Or maybe it's strcat that, merrily continuing till it finds that null terminator in the source string, goes way past its boundaries. Did you ever think to yourself as you read these examples, “Why can't strcpy, strcat, and the rest of them save stupid programmers from themselves?” (It's ourselves, really, but we all suffer from a little denial that we could ever write that sort of code.)

      That's an idea, let's replace the naive and trusting version of strcpy, that assumes no-one ever gives it inappropriate arguments, with another version that doesn't always do as it's asked! Why not? I'll tell you why not: this is C++. And if C++ had a motto, it would be “you're the programmer!” or as I sometimes say, “OK, it's your foot!” Seriously, changing the way strcpy behaves might break code that isn't broken or insecure right now. In C++, we're allowed to write code that some compilers wouldn't let us write.

      And if you were going to rewrite things, you might like to change the signature anyway, so that you could return an error code or other information. That means what you really need is a replacement for strcpy (and the rest) that's a little safer. And maybe to have the compiler warn you on your calls to strcpy so you can go through by hand and switch to these safer ones case-by-case.

      That sounds like a plan. And I don't even have to do it. It's coming in the updated versions of the C Runtime Library for Whid-- er, Visual Studio 2005. And while they're at it, they're adding some overrun protection to the STL in the same timeframe. Intrigued? Read the whitepaper on MSDN. Michael Howard, coauthor of  Writing Secure Code,  lays out some of the problems and how the secure versions of old CRT standbys can keep your code out of hot water.

      Tuesday, 27 April 2004 22:20:37 (Eastern Daylight Time, UTC-04:00)  #    
      # Sunday, 25 April 2004

      If you're a regular reader of Julie Lerman's blog, you know she likes to announce other people's wins and successes whenever she can -- she's covered plenty of mine. So turn about is fair play -- Julie is just the third Rock Star interview for Ziff Davis' DevSource. Want to know what matters to her, and what she's doing about it? Read the interview.

      Sunday, 25 April 2004 14:35:39 (Eastern Daylight Time, UTC-04:00)  #    
      # Wednesday, 21 April 2004

      Are you interested in C++ in the .NET world, but don't want to run out and buy Visual Studio just to try the compiler? Have you heard that the Microsoft compiler is actually a powerful, fast compiler for native applications as well as those targeting the runtime? Have you even wondered about using the Visual C++ compiler to build code that you'll actually deploy onto other operating systems?

      Well, how about a free copy of the Visual C++ compiler? And linker of course, exactly the same tools that ship with Visual Studio. And libraries: the C Runtime Library and the Standard Template Library. Of course you can produce either native code or code that targets the Common Language Runtime. And to round out the toolkit there are four samples that show off some specific features of the tools, with accompanying whitepapers that explain those features and the samples.

      Get yours today at http://msdn.microsoft.com/visualc/vctoolkit2003/, where you'll also find links to the whitepapers.

      Absolutely Seen and Recommended, with the disclaimer that some of the work in there is my own :-)

      Wednesday, 21 April 2004 06:57:20 (Eastern Daylight Time, UTC-04:00)  #    
      # Monday, 29 March 2004

      The first instance of the MSDN column for Regional Directors, .NET in the Real World, is up! Billy Hollis writes persuasively about smart clients. He also reminds us all that everything old is new again. Like Billy, I have some grey in my hair, and I enjoy those times when having a long memory gives you an advantage over those who only remember one or two waves of technology.

      The RD column is to be an ongoing experience. We'll be writing about why certain technologies matter, and what they mean to developers and to businesses. It's a great opportunity to hear some wisdom from some very experienced people. Check it out!

      Monday, 29 March 2004 07:59:29 (Eastern Standard Time, UTC-05:00)  #