Tuesday, October 16, 2007

A wasted opportunity?

This screen seems like a terribly wasted opportunity.
I went to the trouble of entering my email address in a website to subscribe to a newsletter.
I even clicked the 'confirm' link in the email I was sent.
But then I am presented with this screen.
It doesn't make it clear what I'm confirming.
It doesn't give me anything to do next.

EDSK ... self discipline and motivation

Every developer should know self discipline and motivation.

Why is this important?

There are many elements to software development. The chances are that you aren't going to enjoy all of them. Unfortunately though, there will be times when you have to do them. If you don't: certain bugs won't get fixed; features may not get added; customers may be lost; users will be frustrated; documentation won't get written; and your software won't be as good as it should be.

What do you do once you know this?

You find a way to to motivate and discipline yourself to do the things you'd rather not. There are lots of possibilities. What is important is that you find what works for you and don't give up until you do.

What do you think?
Is this something every developer should know? Have you say in the comments.

Delete old folder on upgrade

Here's the installscript funciton I wrote to delete the start menu shortcuts using the old company name when a folder structures were updated to reflect the new company name.

This worked with Installshield 11.
The following function was added to a .rul file. A custom action was then created for the funciton. The custom action was then added to the execute sequence.

function DeleteOldCompanyNameShorcuts(hMSI)
//Errors should not be highlighted as this function will be called multiple times
// on subsequent calls there should be nothing left to delete
// Also, there may not be anything to delete in the first place

//default group type is common
//Delete old company name shortcuts from all users menu
DeleteProgramFolder(FOLDER_PROGRAMS ^ "Old Company Name");

//Delete old company name shortcuts from current users menu
DeleteProgramFolder(FOLDER_PROGRAMS ^ "Old Company Name");

.Net past and present

(Visual Studio)
VS.NET 2002VS.NET 2003VS2005VS2005
+ Extensions
LanguagesC# v1.0
VB.NET (v7.0)
C# v1.1
VB.NET (v7.1)
C# v2.0
VB2005 (v8.0)
as beforeC# v3.0
Framework LibrariesNetFx v1.0NetFx v1.1NetFx v2.0NetFx v3.0NetFx v3.5
Engine (CLR)CLR v1.0CLR v1.1CLR v2.0same versionsame version

Friday, October 12, 2007

EDSK ... not to use mapped drives

Every developer should know not to use mapped drives.

I'll start by admitting that this is something that really annoys me. I'll also admit that it may be appropriate to use mapped drives if, and only if, you are creating a mapped drive to connect to a directory that only you will ever need to connect to. An example being your personal area on a server.

If you're not sure what I mean by "mapped drives" or want to confirm that what I mean and what you understand are the same, take a look at these two Wikipedia articles:
Drive mapping
Drive letter assignment

I'd sum it up like this:
Rather than have to specify a long file path, such as:
\\aServer\folder\directory\another folder\another directory\my files\file.ext
It is possible to tell Windows that the letter X should be mapped to \\aServer\folder\directory\another folder\another directory. This means that it is now possible use the drive letter X, when specifying the path to the file (X:\my files\file.ext)

Now I've got the boring part you already know out of the way.


Why not?

Because using mapped drives causes problems down the line.

Need to set up another machine?
Lost your mapped drive settings?
Which drives do you need to map? and where?

Someone else wants to know where a file is? Telling them it's on Drive T doesn't help them unless they know where you have drive T mapped to. And why would you remember? You mapped the drive so you wouldn't have to.

Mapped drives provide no meaning.

//Server1/Departments/Support/Customers/Acc01234/history.crm - has meaning.
H:\history.crm - has little.

They are user specific.
Different users can map the same drive letter to different paths.
This can lead to all sorts of problems. Especially if there are files of the same name in the different mapped paths.

They add unnecessary and artificial constraints.

Using a mapped driver anywhere in the development or build process can cause problems.

Very rarely is the development of a piece of software done by a single person, on the same machine for the lifetime of that piece of software. If more than one person will be working on an application, ever. Requiring a mapped drive will just be one more thing to configure and this flies in the face of what every developer should aim for. Removing all unnecessary complications from the development process.

What do you do once you know this?

Ensure that the software you create software that can support file paths in either (any) format.

There should definitely be no excuse for ever creating software which can only connect to a file if using a mapped drive. You'd just be creating problems for other people.

What do you think?
Is this something every developer should know? Have you say in the comments.

Wednesday, October 03, 2007

How I blog and still do everything else I want to?

Time is precious and I often find that I have very little of it to do all the things I would like.

How do I still find time to write in my blog?

I make the time when I can and try not to worry about it when I don't or can't.

Yes, this means that I'll never have the most prolific blog with thousands of regular readers. For some people that would be hard to say. Some people want to blog to have fame and fortune and if that's what they want to then fine.
I never want to look back and say that I wanted to spend more time with my family or friends or to have been doing something else.

Spend time on what is important to you. You're likely to regret doing anything else.

Nod and Wink: http://www.problogger.net/archives/2007/10/04/24-hour-giveaway-blogging-tips-get-24-prizes/