Tuesday, March 27, 2007

Books -- Great Innovation

Books are not scrolls. Scrolls must be read like the Torah from one end to the other. Books are random access --a great innovation over scrolls. Make use of this innovation ! Do not feel obliged to read a book from beginning to end. Permit yourself to open a book and start reading from anywhere. In the case of Maths or Physics or anything especially hard,try to find something anything that you can understand.Read what you can. Write in the margins. Next time you come back to that books, you'll be able to read more. You can gradually learn extraordinarily hard things this way.

Funtion to Find whether the String is Palindrome or Not

using System;

class test
{

private static void Main()
{

Console.WriteLine("Is 'ada' Palindrome : {0}",IsPalindrome("ada"));
Console.ReadLine();
}

public static bool IsPalindrome(String strParam)
{
int iLength,iHalfLength;
iLength = strParam.Length - 1;
iHalfLength = iLength/2;

for(int iIndex=0;iIndex<=iHalfLength;iIndex++)
{
if(strParam.Substring(iIndex,1)!=strParam.Substring(iLength - iIndex,1))
{
return false;
}
}
return true;
}
}



Detect OS Version Using C#

// Get the Operating System From Environment Class
OperatingSystem os = Environment.OSVersion;
// Get the version information
Version vs = os.Version;

MessageBox.Show (vs.Major.ToString());
// vs.Major;
//vs.Minor;
//vs.Revision;
//vs.Build;

Adding Errors to Event Log

using System.Diagnostics;

private void AddLog(string sErrSource, string sErrMessage, EventLogEntryType ErrType)
{
EventLog objLog = new EventLog("AppLog");
objLog.Source=sErrSource;
objLog.WriteEntry(sErrMessage,ErrType);
}
This function will create an event log called "AppLog" and adds the source and message into that.
EventLogEntryType enum contains
1. Error
2. FailureAudit
3. Information
4. SuccessAudit
5. Warning

Debugging Problems in ASP.NET

When you try to debug an ASP.NET application in Visual Studio.NET. you may receive the following debugging error.

Error while trying to run project: Unable to start debugging on the web server. The project is not configured to be debugged.

Following are reasons and solutions for this problems.

Possibility 1:

You are not a part of debugger group.

Solution

Local Users and Groups ->Users- > add yourself as a Debugger User (Also check if you are a VSDeveloper

Possibility 2:

You dont have execute permissions on your virtual folder.

Solution

Step 1: Control Panel -> Administrative Tools- >Internet Service Manager

Step 2: Default Web Site -> Right Click on your Project-> Properties->Execute Permissions -> Scripts and Executables

Possibility 3:

You have kept ASP.NET debugging unchecked.

Solution

In VS.NET IDE,

Right Click Project - >Properties->Configuration Properties ->Debugging-> Debuggers Enable Check the checkbox for ASP.NET Debugging

Monday, March 26, 2007

Progammers Productivity

Can you work for 1 day without a mouse? Try it and see the horror on the users' faces. Practice it and see the increase in productivity.

Today's Prgamming :skills to make it work

The quality of a good programmer is the ability to know how to beg borrow and steal the right code - AND when not to try and solve a problem from scratch.

Interview of two candidates
Q Write a class to put these items in a linked list.

Candidate 1 Wrote a nice linked list class and used it - failed
Candidate 2 Derived class from a library linked list class, and used sample code - Got job and went down to pub to celebrate!


As a Software Engineer, problem solving skills are 80% of software engineering. The syntax of programming and programming well is the difference between a good programmer and a great programmer.

I was passed over for a job because I couldn't "Write a function to compute the moving average of a stock price." Heck, I didn't even know what a "moving average" was. But when I got home I sat down and 20 minutes later I had a nifty little recursive function that answered the question. Why couldn't I do that in the interview? Because in the interview I didn't have the resources I would normally have while on the job. A good Software Engineer knows how to use those resources to solve programming problems.

Programmers!!!!!!!!!!????????????

I think what should be tested is not the knowledge per say, but the capacity to pick stuff up, I got my current Job becuase I took an API I had never used before and figured out how to use it. I'm by no means a pro, but I have the capacity to learn by myself, some people can't pick up new things unless they are spoon fed.

University is not an exercise in cramming your head full of knowledge it's an exercise in learning how to learn quickly and efficiently.

When you know the basics you can teach yourself a new language in a few hours, and depending on the complexity learn a new API in an hour to day. Many grads I find dont have that capacity.

I remember at my first .NET course the teacher asking how many people never programmed before. Many hands were raised, and I felt bad for them for choosing a future profession without knowing what it actually was about. Then he asked how many people never touched a keyboard before. How shock was I to see at least 10 persons raise their hand, mostly women.

I think there are too many people out there who don't know how to write code in their head..

But..

That doesn't make them a bad coder or designer to be apt. Coding has become so abstract that most modern coders tend to be designers due to working with heavily gui based apps from Windows form coding to Web apps. So we could blame MS for doing this, but its not really their fault.

The days of the lone coder are gone, most if not all coders have no need to learn or retain any of the stuff they get taught in their college/uni and certainly its not a requirement in a job.

However I think coding should be about architecting a solution and that means working from the ground up. A good coder is someone who has knowledge of each area they are interacting with, not necessarily deep knowledge of a technical component but enough of an understanding to appreciate how their solution will fit into the wider picture.

Coding should be about elegance. It should be like designing a really well made web page that employs lush CSS and is a visual treat to look at. Code should be the same, well commented and fluid in its layout making the code appealing to read.

I have come across too many coders who simply code out of need, usually to meet out of proportion expectations resulting in badly formed code or a solution that has far too many shortcuts in place.

Each to their own though, every problem has a particular solution however I think what this article was touching on was the fact that the core foundation skills of a coder are not present in most interview cases and this is worrying but I think a growing trend.

When you have hand-holding applications like Visual Studio.NET there is no real need to retain information as you can for the most part, cut and paste your way to a solution. :P

199 out of 200 programmers can't write code....!!!!

Somewhere i read it. They wrote that almost 199 out of 200 can not write programs.

What i think is we cannot judge a person simply taking interview for 30 minutes or 45 minutes.We can always learn to pass interview tests of any kind - that doesn't mean We can program or not. These days Technological growth is very rapid which makes us to remember only the concept not the syntaxes. So we cannot expect every one to remember each and every thing.

We studied many concepts during our Engineering Day's in College but many of the concepts we never used at all.For example, I wrote programs like generating Fibonacci series etc which I never used at all in my programming so far.

If someone were to ask me how to swap two variables w/o a temp variable I'd ask them to give me a good reason why.

Not being able to answer that particular question certainly doesn't preclude someone from being a good programmer. That'd be like asking a C# programmer how to do modulo 16 using only a logical and. Why the hell would they need to know that, and how does that help you determine that they understand the ASP.Net framework, etc.?



What matters most is whether we have logical and analytical ability to understand the problem well.

The most obvious way to decide - for me - is to run through these tests (assigning some tasks to perform), emply the person you like the best and then look at the code they've produced after a week. Then you'll know if they can do what you need.

Programmers and Architects

Programmers are implementor's.

Architects are conceptualist's.

Links.......

Followup on the 80 core CPU Intel was boasting about. It's here. It's not commercial yet, but it's real!

If that wasn't enough, here's a Canadian company testing a quantum computer.

There's still some doubt. But if parallel machines weren't enough, quantum computers are just around the corner no matter what. Project V can handle anything that comes along. I couldn't care less what the platform is. What other technology can claim the same?

Here's an article on making best use of system resources, especially the cache, in multi-core systems. This is all too important if you're doing low level programming. Unfortunately, I doubt most people will understand how to properly take advantage of this. Most languages don't let you deal with the cache anyhow.

Celsius to Fahrenheit

int Celsius2Fahrenheit(int Celsius)
{
return 9*Celsius/5+32;
}

limitation: what if we want to pass a floating point number?

How to Interview a Programmer

How to Interview a Programmer
by Bill Venners

Summary
Recognizing good programmers among job applicants is not easy. This article contains interview techniques, garnered from a recent summit on writing better code, that can help you can find the most qualified programmers for your project.


Seven Golden Rules

  • Explore an Area of Expertise
  • Have Them Critique Something
  • Ask Them to Solve a Problem
  • Look at Their Code
  • Find Out What Books They Read
  • Ask About a People Problem
  • Get to Know Them

In January, I attended a Writing Better Code summit in Portland, Oregon, organized by Scott Meyers and Bruce Eckel. At the three-day summit, 15 people gathered to discuss code quality and how they could improve it. Throughout this discussion, one theme was clear: good code is written by good programmers. Therefore, one great way to improve the code quality within an organization is to hire better programmers. The trouble is, recognizing a good programmer among a pool of job applicants is not easy.

Finding good programmers is hard because good programming is dependent on much more than just knowledge of programming language syntax. You need someone who, despite wearing striped pants with a polka dot shirt, has a good sense of taste in OO design. You need someone who is creative enough to find innovative solutions to problems, yet anal retentive enough to always line up their curly braces. You need someone who is humble enough to be open to suggestions for improvement, but arrogant enough to stand firm and provide leadership when they are the best person to provide it. How can you tell all this about a stranger by spending 30 minutes with them in a conference room?

The final morning of the Writing Better Code summit, Bruce Eckel announced he was "hijacking" the meeting. Bruce wanted each person at the table to share his or her interview techniques. He wanted to know how we recognize a good programmer in an interview. In this article, I highlight some interview techniques discussed that morning. If you have more ideas or would like to discuss any techniques presented here, please post a comment to the News & Ideas Forum Topic, How to Interview a Programmer.

Explore an Area of Expertise


Although various interview methods were tossed about that morning, a few fundamental techniques emerged from the discussion. For example, rather than simply look for expertise and experience in the exact area in which the candidate will work, you should look for general programming talent and ability. One way to explore and judge a candidate's talents is to explore an area of their expertise:

Dave Thomas: Hire for talent. One of the biggest mistakes companies make is to recruit from a shopping list: I need a programmer with six years Java, three years Oracle, and two years EJBs. The world changes, so you need to hire folks who change with it. Look for people who know computing, not necessarily particular narrow niches. Not only will they adapt better in the future, they're also more likely to be innovative in the present.

Chris Sells: To identify how good the candidates are technically, I let them choose an area in which they feel they have expertise. I need them to know something well, and I ask them about that. I ask them why. I want them to know why something in their area of expertise works the way it does. I'm not necessarily after an expert in the area I need. If they learned why in the past, I have confidence they'll learn why in the future.

Have Them Critique Something


Another technique involves the importance of creating a dialog with the candidate. To get to know the candidate's talents and personality, you can't merely ask questions that have short factual answers. You have to find a way to engage a conversation. To stimulate dialog, you can ask the candidate to critique some technology:

Josh Bloch: I ask candidates to critique a system or platform that we both have in common, preferably something they will use on the job. For example, I might ask, "What parts of Java don't you like and why?"

Pete McBreen: I give candidates samples of our current code and ask them to explain and critique it. This gives me a sense of their skills, but also lets them know what they can expect.



Ask Them to Solve a Problem

Another way to foster an open-ended dialog is to ask the candidate to perform a task: to solve a problem or create a design. Although everyone at the meeting seemed to agree that this was important and useful technique, it also generated a lot of concern. People felt that asking the candidate to solve puzzles and problems needed to be done with care:

Josh Bloch: I like to ask a candidate to solve a small-scale design problem, finger exercises, to see how they think and what their process is: "How would you write a function that tells me if its argument is a power of 2?" I'm not looking for the optimal bit-twiddling solution ((n & -n) == n). I'm looking to see if they get the method signature right, if they think about boundary cases, if their algorithm is reasonable and they can explain its workings, and if they can improve on their first attempt.

Bruce Eckel: I ask candidates to create an object model of a chicken. This eliminates any problems with uncertainties about the problem domain, because everyone knows what a chicken is. I think it also jars people away from the technical details of a computer. It tests to see if they are capable of thinking about the big picture.

Scott Meyers: I hate anything that asks me to design on the spot. That's asking to demonstrate a skill rarely required on the job in a high-stress environment, where it is difficult for a candidate to accurately prove their abilities. I think it's fundamentally an unfair thing to request of a candidate.

Matt Gerrans: I don't like when I'm asked to write a program that does X on a piece of paper. Don't ask the candidate to write a program on paper. That is a waste of time and sweat. People don't write software on paper, they do it with computers using auto-completion, macros, indexed API documentation, and context-sensitive help. They think about it, refactor it, and even rewrite it. If you want to see a person's work, ask them to write some small module or implement some interface before the interview and bring the code on a notebook PC or on hard copy. Then you can review it and discuss the design, coding style, and decisions that went into it. This will give you a much more realistic and useful assessment of a person's work and style.

Kevlin Henney: I like design dialog questions that don't have a single fixed answer. That way they have to ask me questions, and this sparks a discussion. It's good to have a whiteboard available in the room. A dialog lets the interviewer see how the interviewee works, whereas a question of fact is just that: it is great for TV quiz shows, but doesn't tell you how someone will work and approach things over time. A puzzle question requires knowing a trick, which is in essence something that is either known or unknown. I dislike puzzle questions, because they don't require dialog.

Josh Bloch: What constitutes a reasonable question depends a lot on the candidate's experience and maturity.

Dave Thomas: I look for people with curiosity. Present problems, not puzzles.

Look at Their Code


Josh Bloch suggested one technique we all seemed to like: Have the candidate bring a code portfolio to the interview. Look at the candidate's code and talk to them about it. Although we were concerned that some candidates may not have code they could legally bring to the interview, we figured most candidates could probably come up with something. It can't hurt at least to ask a candidate to bring to the interview a sample of code they had written in the past.

Josh Bloch: I want to see their code. You get to see what they pick. You learn what they value. You learn how they communicate.

Find Out What Books They Read


Several people indicated that they ask candidates about the programming books they read to see if a programmer is self-motivated or concerned about improving their own programming skills:

Matt Gerrans: I ask candidates, "What books have you read about programming?" If the book is beyond syntax, that's important.

Randy Stafford: I find out what books they read because it's important to me that they educate themselves of their own volition.



Ask About a People Problem

As important as technical ability, or perhaps more important, is personality. How well would the candidate fit the team? How well would they fit the work environment? People used various techniques to judge personality:

Randy Stafford: Good citizenship is probably more important than technical prowess, because if you have people with the right kind of attitude and demeanor, you can help them gain the technical knowledge and software development habits. But if you have people who lack humility and maturity, it can be extremely difficult to get them to cooperate in reaching a goal, no matter how bright they are or what they've accomplished in the past.

Chris Sells: I ask candidates, "Tell me about a problem you had with a boss or teammate. Tell me how you've dealt with a problem with a boss."

Jack Ganssle: I check references. Now, I know these people are the candidate's five best friends, and will not say anything negative. But I ask those references for names of people who know the candidate, and go to these others for insight. This way I spread the net beyond anything the candidate ever imagined.

Kevlin Henney: I try to imagine if I would go to a pub and talk non-tech with them—not if I like them, but whether I could get along with them. Are they pubbable? Could I talk to them in a non-office situation?

Dawn McGee: The most likable person is often not the best person.

Dave Thomas: I think every team of a certain size needs a professional pain in the ass, because teams get complacent, fixed in their ways. They need nudging out of their comfort zone once in a while, so they can look at problems from a different perspective. There are two kinds of pains in the ass: the obnoxious boor—to be avoided on all teams—and the person who never learned that grownups shouldn't ask "Why?" all the time. The latter is a treasure.

Get to Know Them


Perhaps the prominent theme of our discussion was that you need to try to get to know the candidate as best you can. Talk to the candidate in the interview. Try to get a feel for them. If possible, bring them in on a trial basis or for a probationary period. That would give you more time to get to know the candidate, and give the candidate more time to get to know you:

Chuck Allison: I talk to them. I get a feel for them. I always ask about what they've done. I have found that by discovering what a person is excited about technically, you can learn a lot of important things about them. In the past I've asked people to describe a project that was especially interesting to them, or that was challenging and successful. On occasion I've asked what they've done that they're the most proud of. This usually reveals the depth of one's understanding and mastery. It also gets them to turn on the fire hose verbally, and you can sit back and get most of the answers you need.

Randy Stafford: I look at past projects listed on their resume, and ask them to talk about those projects—how was the team organized, what the technologies and architectures were used, was the software successful in production, etc. In their answers I'm listening for what lessons they learned from those experiences, and whether those lessons match with lessons I've learned from my experiences and from professional literature. I get a glimpse into how they perceive themselves in relation to the world around them. Some come off as arrogant, some ignorant, some helpless. Others sound humble, intelligent, and motivated. I often ask them what software development literature they read. Continuous education is very important to me.

Angelika Langer: In Germany, hiring is like marrying someone. It's "until death do us part"—a marriage without the backdoor of a divorce, because you can't fire employees. The only chance for firing someone is during a three- to six-month probationary period, or when the company goes out of business.

The major filtering is done before the interview, based on the curriculum vitae (CV) and submitted papers, such as evaluations from former employers. (In Germany, employers must provide every employee with a written evaluation when they leave the company.) The interview itself is usually brief. The main tool in filtering is scrutinizing the CV and papers; 98 percent of all applicants are disqualified in this phase. The interview should confirm the impression you gain from the applicant's papers and allows you to sense their personality. The lucky winner then goes on a probationary period.

Probation definitely does not replace the filtering; it just keeps a last exit open until you really must commit.

Andy Hunt: We've hired people who interviewed well, but they were terrible at the job. If possible, hire them in for a trial period.

Dawn McGee: You could also bring candidates in for half a day, and have them do what they would be doing on the job.

Conclusion


To sum up the overlying themes from our hour-long discussion in Portland: You should look for talent and fit more than specific skill sets. Ask open-ended questions to initiate revealing dialog. Ask candidates to critique something. Ask them to design something. Investigate their past experience. Review their code. And through conversation and, if possible, a trial period, you should try to become familiar with the candidate's technical abilities, talents, and personality.

How Do You Interview a Programmer?

Do you have an opinion on the techniques mentioned in this article? Do you have a tool or technique you use to find good programmers? Please share your ideas in the News & Ideas Forum Topic: How to Interview a Programmer.

Source :http://interviewinfo.net/blogs/for_employers/archive/2006/11/14/224.aspx

My notes:
Hire the natural self-taught talent! Having a CompSci college degree only means that they wasted 4 years (or more) of their lives. Whereas the self-taught programmers were busy writing software during those 4 years. And, why not test the interviewees on something more pragmatic, like create a business object that handles the CRUDs for s simple 3 or 4 property entity (or test them on something else that would be common for your company to write).

One thought about support

As a software developer, I work with systems and software in the real world every day, not just at home for fun. Problems do happen. What is important is how often these problems happen and how quickly they are resolved. But very less companies concentrate on providing good customer support and resolve the issues faced by customers.

Things you should know about AI,Neural Net,Cryptography.......part 2

In this part i will tell you about a method to fight spam's. This concept is called CAPTCHA(Completely Automated Public Turing Test to Tell Humans and Computers Apart).

This test will tell whether the participant is a human or a machine. i think every one knows about an distorted image whenever you try for registration or try to post some thing on orkut like websites. (Take a look at the image below)
This prevents automated code to register or post. So by this now a days companies are trying to fight spams.

It has many applications also apart from fighting spam.I will write about it in future.

I am busy.......

Sorry for the late posts.........i am bit busy with a project related to HP(Hewlett-Packard).........it will take another month to finish up and then i can post new things..............

String Date Validator in C#

Simple string date validator.

I am a big fan of maintaining a library of simple and clean helper methods. Here is a simple and clean way to verify if a string formatted date is a valid date. This allows you to encapsulate the exception handling making it easy to use and very readable - another important coding practice.

private static bool IsDate(string sDate)
{
DateTime dt;
bool isDate = true;

try
{
dt = DateTime.Parse(sDate);
}
catch
{
isDate = false;
}

return isDate;
}

Monday, March 12, 2007

Things you should know about AI,Neural Net,Cryptography.......part 1

Links to interesting sites about AI, Neural Nets, NLP...........

1. www.pandorabots.com
2. www.alicebot.org (2004 Loebner Prize
3. http://y.20q.net/anon (
Think of an object, answer some questions, and it will guess that object.)
4. http://www.20q.net/index.html (Neural Net on the Internet.)

Saturday, March 10, 2007

Saving Shockwave Flash swf in IE and Mozilla

Firefox
a. Click Tools - Page Info
b. Click the Media Tab on the Page Info Windows
c. The media tab has a complete list (with preview) of Images, CSS Files and Shockwave Flash files that were downloaded by the Firefox browser while rendering (loading) the page.
d. Scroll down the list and locate the swf file.
e. Click the "Save As" button. Select some directory on your hard drive and save the file (No need for a third-party plug-in)

IE browser

a. Click Tools - Internet Options
b. In the General Tab, click the Settings button available in the Temporary Internet Files group.
c. Click View Files to open your Temporary Internet Files folder. Depending upon your IE settings, the Temp. folder can contain tens of thousands of files.
d. Click View - Details. Now click View - Arrange Icons By - Internet Address. Depending upon the webpage, there could one or more Flash files (Shockwave Flash Object) under the Inernet Address.
e. Once you find the right flash file, right-click and choose Copy. Then paste the swf file in any other directory. Be sure to
keep the page and IE open to avoid purging of the cache file.

For newbies, I suggest the following approaches:
1. Get a download accelerator like Flashget and tell it to automatically download the shockwave extention (*.swf)
2. Or download a free IE plug-in for saving flash files.

Firefox for Geeks and Power Users
a. Type about:blank in the Firefox address bar
b. Now click List cache entries or directly type about:cache?device=disk (Disk cache device)
c. Press Ctrl+F and try to location the flash file by typing some part of website URL or the flash file name or just .swf. After some hit and trial, you should be able to locate the swf file URL
d. Click the SWF URL to open the Cache Entry Information page. Right click on the link and choose "Save link as"

Wednesday, March 07, 2007

Links to Free Windows Software from Microsoft


Microsoft has over 150 FREE Windows & Office Programs available for download -- finding them all is extremely difficult . . . until now.
THANKS DIGG! Wow, over 3,400 digg's for free Microsoft Software!
THANKS Del.icio.us Over 3,700 tags here too!
THANKS Google over 50,000 links to this page!

WINDOWS XP GOODIES
Agent components provide animated characters (Genie, Merlin, Peedy, Robby & "Custom") to appear during specific help or instruction. (Support FAQ)
Alt-Tab Replacement in addition to the icon of the application window you are switching to, you see a preview of the page.
Calculator Plus also performs many types of conversions.
ConferenceXP enables you to see & hear others in a virtual collaborative space, called a venue. You collaborate on an electronic whiteboard or PowerPoint presentation, send messages and more.
Feeds Plus is an Internet Explorer 7 add-on for RSS pop-up notifications.
FolderShare keeps important files at your fingertips - anywhere. All file changes are automatically synchronized between linked computers, so you always access the latest files.
GroupBar desktop tool offers enhanced window management capabilities in a taskbar-like setting. Through simple drag-and-drop operations on window tiles within the bar, users can create lightweight, transient grouping relationships that allow them to perform certain higher-level window layout functions on multiple windows at once.

Location Finder turns a regular WiFi enabled laptop, Tablet or PC into a location determining device without the addition of any separate hardware. Location Finder uses WiFi access points - or reverse IP lookup when WiFi is not available - to center and display the person's location on the Windows Live Local.
MapCruncher converts existing maps into an online format that’s easy to use as Virtual Earth. PDF and raster maps can be converted just by clicking on corresponding landmarks on the user's map. (Support: Website)
My Font Tool converts your handwriting into a TrueType font, making typed text appear written by hand.
Open Command Window Here adds an "Open Command Window Here" context menu option on file system folders, giving a quick way to open a command window.
Power Calculator graphd and evaluated functions as well as performs many conversions.
Scalable Fabric task management system. A central focus area, defined by you, contains windows that behave in the traditional way. When you drag a window into the periphery, it becomes smaller and continues to get smaller the closer you get to the edge of the screen. This makes it possible to keep windows open all the time, and change "minimize" to mean "return to the periphery". (Support: Website)
Snip IT can email selected text within Internet Explorer.
Taskbar Magnifier magnifies part of the screen from the taskbar.
TIME ZONES: There are two programs that help deal with multiple Time Zones: Premium Time Zone requires genuine Windows XP, the Standard Time Zone program does not. (Support: Working with Time Zones)
Tweak UI gives access to system settings not exposed in the default user interface, including mouse settings, Explorer settings, taskbar settings, and more.
USB Flash Drive Manager backup & restore files to/from a USB Flash Drive device.
Virtual Desktop Manager manages up to four desktops from the Windows taskbar

Virtual Machine is Microsoft's Java Virtual Machine for Internet Explorer, allowing you to view java applets on Web pages.
Webcam Timershot takes and saves pictures at specified time intervals from a Webcam.
Windows Live Writer blogging authoring tool
XML Notepad 2007 provides browsing and editing XML documents. (Support: Design Doc)
ZoomIt is screen zoom and annotation tool for technical presentations that include application demonstrations.
EBOOKS READER
eBooks Reader offers digital versions of printed books using ClearType technology.
Optional Reference & Dictionaries
UTILITIES
ActiveSync synchronization of Outlook information, Office docs, pics, music, videos and applications from your desktop to Windows Mobile-based Pocket PCs & Smartphones.
Clear Cache Feature for Internet Explorer – automatically deletes all temporary Internet files, cookies, and history files. This was developed to programmatically clear these files when a corrupt entry caused errors with Internet Explorer.
ClearType Tuner fine tunes the ClearType technology via the Control Panel, making it easier to read text on your screen. A necessity for LCD screens (portables and flat screens) -- Or try it On-Line. [Bonus = Consolas ClearType Font Pack]
Color Control Panel Applet adds a new "Color" item to the control panel, providing viewing and editing color management settings.
Desktop Language Settings changes language, keyboard, and regional settings for Windows, Internet Explorer, and Office.
Desktop Search 3.0 helps you to find, preview, and use your documents, e-mail, music, photos, and other items. (Support KB917013)
Font Properties Extension adds several new property tabs to the fonts dialog box. (Support: Website)
ISO Recorder Power Toy makes images of CDs & DVDs to create ISO images.
Keyboard Layout Creator create & modify keyboard layouts.
MSN Search Toolbar software and components.
Mount ISO Files Virtually - this tool allows ISO image files to be mounted virtually as a CD/DVD device.
RoboCopy GUI - GUI for Command Line Utility ROBOCOPY
SequoiaView - Treemap visualization of hard drive’s contents. (Utilityapproved by the PowerToys group)
Shared Computer Toolkit is designed for schools, libraries, Internet and gaming cafés, community centers, and other locations where are "shared" computer is used.
SyncToy helps copy, move, and synchronize files with digital cameras, e-mail, cell phones, portable media players, camcorders, PDAs, and laptops. (Support: How to . . .)
System Configuration Utility (msconfig) has been updated with a Tools Tab. The System Configuration utility automates the routine troubleshooting steps used when diagnosing system configuration issues. (Support: How to MSCONFIG & How to perform advanced clean-boot troubleshooting)

Terminals is a "tabbed" terminal services/remote desktop client used for controlling multiple connection simultaneously.
Transliteration Utility (TU) tool for transliterating one natural language script to another (like Serbian Latin to Serbian Cyrillic or Latin to Inuktitut). Plus, it can be used to create, edit, debug, and test natural language transliteration modules used to convert one script to another. (Support: How to . . .)
Tweakomatic utility that writes Windows Management Instrumentation (WMI) scripts enablimg you to retrieve and/or configure Windows and Internet Explorer settings locally or remotely.
User State Migration Tool (USMT) migrates user files and settings during large deployments by capturing desktop, network and application settings as well as a user files, and then migrates them to a new Windows installation. (Support: Homepage)
Virtual PC is a powerful software virtualization solution that allows running multiple PC-based operating systems simultaneously on one workstation. (Support: Technical Overview)
VirtualWiFi abstracts a single WLAN card to appear as multiple virtual WLAN cards to the user. The user can then configure each virtual card to connect to a different wireless network. Therefore, VirtualWiFi allows a user to simultaneously connect his machine to multiple wireless networks using just one WLAN card.
Wntipcfg This GUI tool gives you information about your IP configuration.
SUPPORT & TROUBLESHOOTING
Bootvis – Microsoft states this tool is not available, but they still “support it”. Bootvis “was” a performance tracing and visualization tool designed to help identify performance issues for boot/resume timing while developing new PC products or supporting software.
COMDisable tool, views, disable or enable a list of available COM ports.
DebugView monitors kernel-mode and Win32 debug output on your local or networked TCP/IP computer.
Desktop Heap Monitor examines usage of a WIN32 subsystem that has an internal heap area known as "desktop heap". When running large number of programs, "Out Of Memory" error messages appear when you attempt to start new programs or try to use programs that are already running, even though you still have plenty of physical and pagefile memory available. (Support: KB126952)
DiskMon logs and displays all hard disk activity.
DLL Online Help Database – helps identify DLL version conflicts.
Fiddler is an HTTP Debugging Proxy which logs all HTTP traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP Traffic, set breakpoints, and "fiddle" with incoming or outgoing data. (Support: HTTP Debugging)
Guided Help (depending on the problem) can automatically guide you through various steps to perform some diagnostic tasks yourself. (Support: How to . . .)
Kernel Memory Space Analyzer helps expert debugging engineers analyze crash dump files.
MDAC Component Checker helps you determine installed version information and diagnose installation issues with the Microsoft Data Access Components (Support: MDAC Website)
Memory Diagnostic tests the Random Access Memory (RAM) on your computer for errors. (Support: Users Guide)
Network Diagnostics for Windows XP tool (xpnetdiag) analyzes information about your network connectivity to help troubleshoot common connection problems. (Support: KB914440)
Portmon monitors and displays all serial and parallel port activity on a system. Advanced filtering and search capabilities make it a powerful tool for tracking down problems in system or application configurations.
PortQry Command Line Port Scanner is a command-line utility that troubleshoots TCP/IP connectivity issues by reporting the port status of TCP and UDP ports on a computer you choose. For details, see KB310099 and description. (Description of Microsoft Port Numbers & All Port Numbers)
Port Reporter logs TCP and UDP port activity on a local Windows system by running as a service logging which ports are used, which process is using the port, if the process is a service, which modules the process has loaded and which user account is running the process. (Description of Microsoft Port Numbers & All Port Numbers)
Port Reporter Parser Tool is a log parser for Port Reporter log files. Port Reporter Parser has many features that can help you analyze Port Reporter log files.
Process Explorer shows information about which handles and DLLs processes have opened or loaded.
Process Monitor shows real-time file system, Registry and process/thread activity.
Product Support's Reporting Tools and Premier Services Reporting Utility (Alliance version) facilitates the gathering of critical system and logging information used in troubleshooting support issues. There are 8 specialty versions, one for each of the following support scenario categories: Alliance, Directory Services (not for NT 4.0), Networking, Clustering, SQL, Software Update Services, MDAC and Base / Setup / Storage / Print / Performance. (Support: Blog Article & Overview)
Sysinternals Troubleshooting Utilities zipped into a single file containing the individual troubleshooting tools and help files.
User Mode Process Dumper (userdump) dumps any running Win32 processes memory image (including system processes such as csrss.exe, winlogon.exe, services.exe, etc) on the fly, without attaching a debugger, or terminating target processes. Generated dump file can be analyzed or debugged by using the standard debugging tools.
User Profile Deletion Utility (Delprof) deletes all data that is stored in a user profile including desktop settings, favorites, program-specific data that is contained in the Application Data folder, and the contents of the My Documents folder.
User Profile Hive Cleanup helps with slow log off and unreconciled profile problems ensuring that user sessions are completely terminated when a user logs off when using Roaming Profiles or locked profiles as implemented through the Shared Computer Toolkit.
Video Decoder Checkup Utility helps determine if an MPEG-2 DVD video decoder is installed, and whether it's compatible with Media Player 10 or Media Center Edition.
Windows Installer CleanUp Utility can remove a program's configuration information if experiencing installation (Setup) problems.
Windows Support Tools are intended for use by Microsoft support personnel and experienced users to assist in diagnosing and resolving computer problems.
SECURITY, ANTI-SPYWARE & ANTI-VIRUS
Baseline Security Analyzer includes a graphical and command line interface that can perform local or remote scans of Windows systems. MBSA will scan for common security misconfigurations in the following products: Windows 2000, XP, Server 2003, IIS 5.0 & 6.0, SQL Server 7.0 & 2000, MSIE 5.01 and later, and Office 2000, 2002 & 2003. MBSA also scans for missing security updates, update rollups and service packs published to Microsoft Update. (Support Tool: Visio Connector for MBSA 2.0, MBSA Homepage)
Malicious Software Removal Tool checks for infection by specific, prevalent malicious software (including Blaster, Sasser, and Mydoom) and helps to remove the infection if it is found. (Updated on the second Tuesday of each month.)
Promqry and PromqryUI detects if a network sniffer that is running on a computer. If a system has network interfaces in promiscuous mode, it may indicate the presence of a network sniffer running on the system.
PromqryUI provides a Windows graphical interface that can be used to detect network interfaces that are running in promiscuous mode.

Promqry is a command line tool that can be used to detect network interfaces that are running in promiscuous mode.
Windows Defender protects against pop-ups, slow performance and security threats caused by spyware and other potentially unwanted software.
Windows Live Safety Center – Web service designed to ensure the health of your computer with free scanning tools helping get rid of unwanted software.
OFFICE APPLICATIONS
EXPRESS EDITIONS FOR DEVELOPERS
MULTIMEDIA
CD Slide Show Generator can view images burned to a CD as a slide show.
"Decades" Auto Playlist Pack include dozens new auto playlists to organize your music by decades—from the 1940s through the new millennium.
Device Manager Software Development Kit (SDK) works with devices that support the new Media Transfer Protocol (MTP).
Easy Camera Calibration Tool determines a camera’s internal parameters (focal length, aspect ratio, radial distortion, etc.). The technique only requires the camera to observe a planar pattern shown at a few (at least two) different orientations. Either the camera or the planar pattern can be freely moved. The motion need not be known. (Support: Website)
GroupShot creates a composite image from a series of photos. The photos must be of the same scene, taken from the same point of view within a short period of time. (Support: Help, Website & Channel 9 Video)
HTML Slide Show Wizard creates an HTML slide show of your digital pictures.
Image Resizer resizes one or many image files with a right-click. (Support: How to . . .)

JetStream Image Editor with cut and paste tool, based on sequential curve growing with interaction. (Support: Website)
Media Audio 9 Lossless to PCM Converter - command line tool converts files encoded using Windows Media Audio 9 Lossless back into the original PCM WAV format.
Media Bonus Pack: utilities, PowerToys, visualizations, skins, sound effects, and much more. (Net Install Version)
Media Capture capture uncompressed AVI video files with mono, stereo, 5.1, or 7.1 channels of audio, with up to 24 bit resolution and sampling rates up to 192KHz.
Media Encoder provides support for high-quality multichannel sound, high-definition video quality, new support for mixed-mode voice and music content, and more. (Support: Introduction to . . .)
Media Encoder Studio Edition for video professionals, focused on the creation of high-quality, offline encoded content.
Media Mono to Multichannel Wave Combiner 9 Series - command line tool will combine 2, 6 or 8 mono WAV files into an audio-only AVI file that can be used as a source with the Windows Media Encoder 9 Series.
Media Player Software Development Kit (SDK) introduces a range of new features and functionality for customizing the Player and Player Control.
Media Professional Exhibitor intended for playback at full-screen resolution at all times. All transport and playlist controls appear on a (required) second monitor allowing for a theatrical viewing experience.
Media Transfer Protocol Porting Kit introduces the new Media Transfer Protocol (MTP), which enables you to manage content on any portable device.
Movie Maker create, edit, and share home movies easily with drag-and-drops. [Fun Packs: Winter 2002 & 2003 - Creative Audio, Titles, Custom Effects and Transitions] (Support: Blog Posting)
Photo Info allows photographers to add, change and delete common "metadata" properties for digital photographs from inside Windows Explorer. (Support: FAQ)
Paint.Net originated as a Computer Science senior design project at Washington State University, and is still developed by the two alumni Rick Brewster and Tom Jackson who now work for Microsoft. Don't forget the Free Paint.Net Plug-Ins!
Photo Story create slideshows using your digital photos. With a single click, you can touch-up, crop, or rotate pictures. Add stunning special effects, soundtracks, and your own voice narration to your photo stories.
Producer 2003 for users of PowerPoint 2002 & 2003, includes improved audio and video quality, better synchronization, and presentation-sharing tools.
RAW Image Thumbnailer and Viewer for serious photographers. Organize and work with digital RAW files in Windows Explorer, providing thumbnails, previews, printing, and metadata display for RAW images. (Support: White Paper)
TweakMediaPlayer gives access to advanced settings for the library, CD burning, and full-screen mode. Adjust music queuing in the library, automatic volume leveling for burning audio CDs, full-screen animations, and much more.
Video Cube loads an AVI movie file as a volume, and play back the movie sampling space and time in different ways. It also provides a single cutting plane for interactively viewing single spacetime slices of the video. (Support: Video Cubisum)
GAMING
3 Degrees connects people into a small group, so you can do fun things together. Throw animations to each others' desktops with winks. Listen together to a shared playlist created from music that you own with musicmix.
Carioca Rummy Card Game is a fun form of Contract Rummy popular in Argentina and Chile.
Game Voice Share Talk strategy to your teammates. Talk trash to your opponents. Game Voice brings the power of voice to games, whether you're online, on a LAN, or offline. (Support: How to . . .)
Match-Up! Similar to the game "Concentration", test your memory and matching skills while racing against the clock.
SafeDisc – When running a restricted user account with fast user switching under Windows XP, some games will not start correctly. The game requests that the original disk be placed in the drive, even if it is already present.
HARDWARE
Fingerprint Reader - DigitalPersona Password Manager 2.0 (Support: How to . . .)
Mouse & Trackball - IntelliPoint 6.1 for Windows XP & Windows Vista, Windows XP 64 & Windows Vista 64 (Support: How to . . . ) -- New Habu Mice
Webcams - LifeCam 1.21 for Windows XP & Windows Vista
SCREENSAVERS & THEMES
4 the Dogs (Patas) - Four themes with "mans best friend."
BlueScreen of Death Screen Saver (BSOD) Who say's Microsoft doesn't have a sense of humor?
Brazilian Beaches (Praias do Brasil) - Four of Brazil's famous beaches: Florianopolis, Buzios, Jericoacoara e Fernando de Noronha.
Brazilian Carnival Three types of parties according to regions: Olinda, Salvador and Rio de Janeiro.
Creativity Fun Pack PowerToys automatically select images for your Desktop or Screen Saver.

Danish Spring & Summer themes by photographers from the Nordic countries.
Desktop Wallpapers from Microsoft Employees: Michael Swanson & Mikhail Arkhipov's 1920 x 1200 (16:10 aspect ratio "widescreen") and 1600 x 1200 (4:3 aspect ratio "standard"), Peggi Goodwin's Gorgeous Nature Images (various resolution) and three from the Exchange Server Team.
Dungeon Siege Screensaver from the magical Land of Ehb.
Flight Simulator X Screensaver
Holiday Snowflakes Screensaver.
Ireland Desktop Theme by Fáilte Ireland and the Northern Ireland Tourist Board.
The Lord of the Rings: The Battle for Middle Earth Skin for Windows Media Player 10 The skin was created in partnership with Electronic Arts and designed by The Skins Factory.
MSN Screensaver personalize your screensaver with background photos, news and weather information from MSN or any RSS feeds from websites you choose.
Nunavut (Canadian Arctic Region) - Desktop Theme
New Zealand Bliss A special Queen's Birthday 2005 edition (Preview Samples)
Office Dinosaur Screensaver. Share the Microsoft Office Dino's pain as he dances his way through one embarrassing technological difficulty after another.
Ontario Canada - Desktop Theme
Plus! Dancer LE enables you to experience the fun of entertaining dancers that groove to beats of the music that's playing on your desktop.
    • Cobey See Cobey get down to Hip Hop!
    • Evan & Michele Spice up your desktop with the sexy Argentinean tango.
    • Scooby-Doo See Scooby-Doo do the Scooby Shuffle!

Portuguese Discoveries Theme Pack produced in cooperation with Protugal's National Library - Ministry of Culture.

Ree Ree Khao Sarn, the traditional Thai children's game includes colorful wallpaper,icons and animated screensaver with sound, demonstrating children play.
Royale Noir: "Secret" internal Microsoft XP Theme.
San Fermín Desktop Theme is specifically designed for the Spanish speaking community.
Security Screensavers two screen savers remind us of basic security practices -- Ten Immutable Laws of Security, & Ten Immutable Laws of Security Administration.
TimeDimension Screensaver futuristic "clock" by Brazilian designer Hans Donner
Valentine's Day Screensaver celebrates (duh) Valentine's Day.
Video Screensaver includes sample movie footage of countries all over the world.
World of Warcraft Skin for Media Player 10 - Blizzard's official World of Warcraft skin.