# 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?


Wednesday, 28 July 2010 11:48:33 (Eastern Daylight Time, UTC-04:00)  #    Comments [1]
# 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.


Monday, 26 July 2010 15:16:30 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# 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.


Saturday, 24 July 2010 12:15:24 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# 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.


Thursday, 22 July 2010 11:55:10 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# 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!


Tuesday, 20 July 2010 10:41:26 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# 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!


Sunday, 18 July 2010 15:31:09 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# 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.


Friday, 16 July 2010 13:46:01 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 14 July 2010

Here is something I've been asked more than once, and seen asked on various forums as well. I'll paraphrase rather than quote one specific asker:

We have an application written 15 years ago that's been working flawlessly. But when we run it on Windows 7, the users can't find the files it writes. Worse, there are no error messages, so they think they've saved the files, but when they go to C:\Program Files\MyGreatSoftware\UserExports - the files aren't there! 

Often, the question trails off into a rant about how sneaky and mean Windows 7 is to somehow prevent access to Program Files but not give error messages. The rant might also include a paean to how amazing the lost files were and how many workyears of productivity have been lost now that these files cannot be found, and why this means you can't trust Windows to do something as simple as write a file to the hard drive. Sometimes, the asker has established that this is related to UAC and they are recommending everyone turn it off to avoid this disaster. I thought I would make some less drastic suggestions.

First, your files are not lost. A few people know this, but they then claim the files are almost impossible to find and no end user will ever find them. Let's tackle this one first because if you know this trick you may be able to get by without changing anything else about your application. Tell the user to go to the place they expect to find the files, say C:\Program Files\MyGreatSoftware\UserExports. Then have them look in the toolbar for a button that says Compatibility Files. Click it. Ta-da!

Ok, now the next thing is, why the heck are your files being written there? Because you are trying to write to a protected area and you don't have a manifest. You have several things you can do about this, and they boil down to two main things:

One, don't write to a protected area. You can get this by installing somewhere other than Program Files (not a good idea) or by changing the application to write to a better place. Two, get permission to write to the protected area. This means running as administrator. Train the users to right-click Run As Administrator when they run the app, or train them to set the Compatibility Settings for the app (neither very likely) or ship the application with a manifest that includes requireAdministrator. Now matter how you arrange this second thing, your users are not going to like agreeing to the UAC prompt every darn time. So really, that brings you back to number one, don't write to a protected area. Use AppData instead - there's a simple function call to get that path on any machine (including older XP machines) and you'll be in fine shape. If you think your users can't find that, and the files are for the users and not just some internal settings, then use a folder under Documents - again, there's a simple function call that will get you the path.

If virtualization makes you nuts - that your code thinks it's writing to C:\Program Files\whatever but really it's writing somewhere else, and the OS is cheerfully lying to it and saying all the writes succeeded - then put a manifest on your app. Doesn't matter whether it's requireAdministrator or asInvoker. Doesn't matter whether it's embedded (VS will embed them for you from 2008 on easily, and there are tools that do just manifest adding) or just a file of XML in the same folder as the exe. Once the app has a manifest, virtualization stops. Of course this may mean the users get all kinds of Access Denied errors that they don't like. Now you see why virtualization was invented.

Should you rely on it? No. For one thing, it may go away in some future version of Windows. And it goes away when you add a manifest, which for many people happened when they migrated to a new version of Visual Studio. What you should do is understand it, including how to find the virtual store, so it doesn't make you quite so crazy.

Now go turn UAC back on,


Wednesday, 14 July 2010 09:25:20 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]