How to connect Remote Spy to Windows Mobile emulators in Visual Studio 2008

I don’t see any problem doing so, but I got a question from a comment of one of my earlier post.

The question states

Hello! Could you please tell more about how to make Remote Spy++ connect to WM 5.0 emulator, which I got with MSVS2008? I've read some articles at microsoft.com, but they say you can't connect to Windows Mobile, only Windows CE...

So I want to explain the process to connect Remote Spy to Windows Mobile emulator in Visual Studio 2008.

Here are the steps:

1. On the Debug menu of Visual Studio 2008, click Start Debugging.

Note: Make sure you selected the correct emulator, for example, USA Windows Mobile 5.0 Pocket PC R2 emulator, depending on what Windows Mobile SDK you’re using for your project. The step is the same for Windows Mobile 6 and 6.1 emulators.

2.  On the Start menu, click All Programs, expand Microsoft Visual Studio 2008 folder, click Remote Spy in the Visual Studio Remote Tools folder to start Remote Spy.

3. In the Select a Windows CE Device dialog box of Remote Spy, select the emulator (or device) you want Remote Spy to connect to (the same one as you selected in step 1). Then click “OK.” Shortly you will be able to see the Windows List shows up.

Let me know if there’s any problem, and I will figure it out for you.

Posted by Nuo Yan | with no comments
Filed under:

Begin making improvements on SDK documentations before losing your developers

 

SDK documentation is the most official documentation and support material for developers to learn how to use the Application Programming Interfaces (APIs) the platform provides. The quality of SDK documentation directly affects the willingness and difficulty of the developers to create applications on that certain platform. However, in the current market, it's just so hard to find perfect SDK documentations. Most developers have to rely on extra information such as books and technical communities to do their development. What are missing from the SDK documentations? Why the developers don't like about the documentations? I think the lack of sample code, the lack of integration, and lack of innovation are some of the main reasons.

Lack of Sample Code

Many SDK documentations only explain what the APIs are, the methods and properties, and how to use them. But there aren't significant amount of sample code to show exactly how to use those APIs.

For example, let's look at the documentation of the ConfigurationManager class (http://msdn.microsoft.com/en-us/library/microsoft.windowsmobile.configuration.configurationmanager.aspx) in the Managed Windows Mobile Class Library. Suppose you are not an expert in developing device applications using .NET Compact Framework, can you figure out how to use the ConfigurationManager programmatically in a very short time? I guess not. It's not your fault, but the absent of some sample code. Though in this particular case  there is a particular section in the Windows Mobile SDK which contains many sample applications, that doesn't help enough. Code segments are very necessary to be included along with the API descriptions.

But then let's look at the Address.AddressLine Property in the Live Search API Reference (http://msdn.microsoft.com/en-us/library/bb251813.aspx). In this case, thanks to the large amount of sample code, I'm positive that developers can get the idea very soon, because I personally do and I never developed any single application using Live Search APIs before.  

The developers will still be able to figure out how to use the APIs without good sample code segments after some time, but if the sample is there, then the developers will be able to figure it out immediately. This shows the importance, the value, and the "magic" of the code segments that most current SDK documentations don't have, which is quite unfortunate.

Lack of Integration

Every single API is documented, but unfortunately, nobody knows how to use them together from the documentation.

Sample applications and starter kits do solve part of this problem and provide valuable information to the developers on how to use different APIs together. But looking at a sample application or starter kit with more than 500 lines of code just to know how to use two simple APIs together doesn't seem efficient.

I don't know whether there can be any good way to completely solve this problem, but creating more topics on how to use some of the APIs together seems to be a good idea, because these topics will be of high value. An SDK documentation certainly needs to have some low value contents to cover everything, but users need high value documentation, and the high value part is the set of contents that they will use and appreciate the most.

Users don't need information in using all the combinations of the single APIs (that will be huge amount of contents to create, but low value). The creator of the documentation should do enough user research to understand what combinations of APIs are of the highest demand, then create topics on how to use those APIs together.  I bet the developers will like that. Well, don't trust me, your user research will tell everything.

Lack of Innovation

Every SDK documentation in the market looks similar in format and style. Every SDK documentation looks like a dictionary. As I mentioned above, it's necessary for an SDK documentation to include every public API the platform offers, but the documentation can be a lot more flexible in addition to that. The creators focused too much on trying to document every API and fix every bug, but invested too little on researching the users and finding new and innovative ways to present the information.

Then what are such innovative ways? There are a lot; and there are a lot that I don't know. As mentioned above, providing some topics of using certain combinations of APIs (of highest demand) is one possible way to improve the usability and value of the documentation. In addition, I'm also thinking about the way the contents being presented can be improved so that when a developer needs help on a task (note, a task, not an API), information such as the APIs he may use, samples, alternative approaches, etc should be available to the developer. Then the developer can grab the information he needs very easily, and complete the task easier than ever.

Creating high value SDK documentations is the same as creating high quality software products. Users are very important in the process. Formal user studies are very necessary in creating documentations, to determine what innovations can be done to best satisfy users' needs.

Such improvements need a lot of work to be done, and that's why we haven't seen this happen yet. But again, developers don't only need a "dictionary", they need innovative and high value support contents that ultimately help them finish their work. SDK documentation creators should really realize and understand this. But since the demand is there, I'm positive that I can see some innovations  on SDK documentations in the future.

The good thing

The good thing is that every major company creating SDK documentations also provides community support materials such as webcasts, blogs, and forums to assist developers. In the mean time, if such community support can be continued, and at the same time adding more code segments to existing topics, creating more high value topics in addition to the dictionary of APIs, begin to do formal user studies on documentation, and do some useful innovations, then the whole customer (developer) experience will be a lot better. As an Independent Software Vendor programming on many different platforms, I really hope I can see that happen as early as possible.

 

 

Posted by Nuo Yan | with no comments

No way to join the social – Is the lack of global languages support on Zune a problem, or not at all?


It’s been a pretty long time since the first generation of Zune came out. Microsoft wants to attract us as potential users to join the social – they made pretty good media sharing and community features so that to distinct from similar products made by other companies.

However, Zune has a very serious usability problem that even though a huge amount of users have been complaining all the time, it’s never been solved. It is the lack of support for most of the global languages.

It’s true that Zune has not yet been available globally. However, the assumption of people in North America only listen to English, French, and Spanish songs just does not make sense. There’re people originally from almost anywhere in the world reside in North America temporarily or permanently. They speak different languages and they have their entertainment needs as well. They listen to English songs, but they also listen to songs on their own languages.

You will be able to see the demand of global languages support by just doing a simple search on the Internet. You will see a huge number of complains from the date the first generation of Zune came out all the way up to the present time.

The users do not even need Microsoft to have Zune menus displayed in their languages. They just need Zune to have the ability to show their song information correctly on the device. Technically, this is really a simple task for Microsoft to do. So it’s become a do-or-not-do decision for Microsoft. But provided the fact that until the newly released version 2.5, Zune still doesn’t support most global languages, I guess Microsoft made the not-do decision. But I still hope in the upcoming third generation, they can do it.

If you now think that Microsoft has done nothing about this issue, you are wrong. In order for the users to solve this design or usability problem, Microsoft published a Knowledge Base article (http://support.microsoft.com/default.aspx/kb/928210/en-us?sd=zune). It simply asks the user to change all the song information in other languages to their equivalent English representation. Well, does anybody like to find some spare time to translate and change the name, album, and artist information of 10,000 songs in the media library? Or do you, as a user, want to just simply buy an ipod, iriver, or Creative zen?  Microsoft tried to ask the customers to solve their own design issues. This will not work out in this user centric era!

As the result, people have songs in foreign languages are in a frustrating situation. They may like their Zunes; they may like the social; but they don’t want to see the boxes showing in the device instead of the correct characters or languages anymore! Finally, they decide to switch, they either buy a much cheaper music player but supports 20 languages including their own, or go to use an ipod.

Microsoft should really do something to solve this – provided it’s really just a matter of whether or not putting some font files in the system partition with just a little extra work.  
 

Who are you talking to on the Internet - Your next girlfriend, or her dog?


Social networking web sites like MySpace are more and more popular in young people’s everyday life in recent years. People have the desire to make new friends on the Internet for various reasons, such as dating, for a relationship, for friendship, or for business networking; people also like to re-connect with old friend through such web sites.

However, identity issues have never been completely solved for years. Years ago, everybody on the Internet can claim himself or herself to be anyone (without any technical restrictions). One person can steal pictures from another person’s web site and claim to be that person. Even in the present time, there’re a lot of profiles on web sites like MySpaces are fake ones. They claim (appear) to be pretty girls or handsome boys, and attract large amounts of people to add them into their friend lists.

I’ve never done any research on this, but personally I think they may have the following goals in mind when stealing those identities and making those fake profiles.

1.    Collect relatively a large number of users’ information for various illegal business purposes (i.e. but not limited to send Junk messages or any form of advertisements). They attract a lot of users in their desired genders to be in their friend lists, so that they can more or less get some personal information from them. There are, and actually quite a few young people provide real information in this kind of web sites.

2.    To get their psychological satisfactions. Some people with psychological issues have the desire to be a completely different person online and get a lot of followers.  They enjoy doing so and get the satisfactions they desire to have by doing so.

3.    Just for fun. Yes. Many people make a fake profiles just for fun.

I believe there are many other reasons that I yet to know. But this is truly a problem. How can you ensure you are chatting with your potential date but not her dog on the Internet?

Some new social network systems like Facebook provide ways to verify users identity. For example, if you want to register as a college student, you may have to use your college email address; if you want to register as a company employee, you may have to use your work email address; etc. But even so, you can still find several Bill Gates, several Steve Ballmer’s and etc in the system. People can still register for a profile freely and use a fake identity.

As the result, this kind of identity issue is really a human issue, but not a technological issue. Indeed, my answer to the previous question I posed is “ to be careful.” Know your goal when you are using these web sites and don’t abuse. Try to verify whom you are really talking to before disclosing too much information. Learn to protect yourself. Young people like teenagers usually don’t protect themselves enough when trying to get to know new people. They should take more care.  And parents should provide more education to their children about protecting themselves online.  

In fact, even in an ideal environment that everyone uses their own identity (can be real or imaginary but need to be their own, not stolen), there are still issues. For example, boyfriend may know girlfriend’s password so when you are talking to someone online, it’s possible that you’re really talking to her boyfriend; in the same sense, wife may know husband’s password, too.

As the result, these issues are not likely to be technically solved, at least in a short time. Think about what information you want the others to know before disclosing; and think about if there’s any unexpected person who may potentially know this information as well before disclosing. Do some verification to make sure the one you’re talking to is the one you want to talk to. If you do all these carefully, I’m positive that you won’t email me and tell me that you’re in a relationship with a dog any more.
 

Posted by Nuo Yan | with no comments

Xiaonei and Facebook - Huge differences, but who cares?

Xiaonei, which is called “the Facebook of China,” has a very similar user interface as Facebook. It provides similar but simplified functionalities. While western media often compare the two and discuss about the potential competitions they may have, I don’t think in recent time there will be any big competition between them.

In many senses Xiaonei and Facebook do the same thing. They are both social network systems and are both platforms designed mainly for people who already know each other to get connected or reconnected. However, there’s really a long way to go for both of them to have a real competition with each other.

Xiaonei has absolute advantage in China. They started in as early as 2005 and accumulated a huge number of Chinese users. According to the recent news reports, they also raised a lot of money. But Facebook, on the other hand, has not even officially entered China (or just started to do so). As the result, even with the assumption Facebook gets started to enter the big Chinese market, they still need a lot of efforts to get the users to them. And many Xiaonei users may even think that Facebook copies Xiaonei, since they’ve never known Facebook before.

However, Facebook currently has absolute advantage in technology. Although Xiaonei looks really like Facebook, they don’t get the same underlying technology, even for basic features. Every single software system has problems and bugs, but Xiaonei still has enough technical problems (bugs) to give users a bad experience. They need a long way to go to be technically comparable to Facebook.  As a user, I hope Xiaonei will invest more to the development team and create software with better quality. In addition to the quality issue, Facebook makes itself an open platform. They provide Application Programming Interfaces (APIs) to third party. Independent Software Vendors (ISVs) can develop their own applications or plug-ins for Facebook. By doing so, the contents of Facebook have been dramatically enriched. This also help creates a better user experience.

Now you may realize why I make the point that Xiaonei and Facebook will not even in competition in a short time. They both have advantages that the other can’t catch up in a short time. Xiaonei will get more and more users and eventually succeed within China, while Facebook will continue their success in other parts of the world. I, as a user of both systems, just hope both of them can get better and provide us a great user experience. I hope Xiaonei can continually improve their technology; and Facebook can continue their efforts on globalization.

It will be fun to see what the situation is again in 5 years.

Microsoft Most Valuable Professional (MVP) Summit 2008

The upcoming summit, April 14-17, will feature a keynote from Microsoft CEO Steve Ballmer and closing by Chief Software Architect Ray Ozzie, in addition to several sessions, including topics ranging from social media for peer-to-peer support to new developments such as Silverlight mobile to Skydrive. Nearly 1,800 MVPs are planning to attend. 

 

In conjunction with the summit, the Code Trip (www.thecodetrip.com), which launched from MIX and has been traveling around the western U.S., is an RV housed with Microsoft developer evangelists spreading the word about new technologies and meeting MVPs at each stop. The final destination of the 21 city trip is the MVP summit.

 

As an MVP, I'm looking forward to attending the event. I am sure that it will be great, and I can't wait to meet other attendees, including technical experts from around the world and people from Microsoft product groups. 

P.S. 

Data points the significant role MVPs play.

  •  Worldwide there are more than 100 million participants in technical communities.
  •  Of these participants there are only 4,000 MVPs located across 93 countries, spanning more than 30 languages and more than 90 Microsoft technologies.
  •  There has been a 10 percent to 15 percent MVP audience growth in countries such as China, Russia and Korea.
  • Over the past few years new regions with MVPs include the Republic of Congo, Ghana, Nepal, Macedonia and Macao
  • In recent years, a handful of MVPs have been awarded in new categories such as MSN, Xbox, Visual Studio Tools for Office, Microsoft Dynamics and Visual Studio Team System. 
  • MVPs are a diverse group that includes accountants, teachers, artists, government workers, engineers and technologists.

 

Posted by Nuo Yan | with no comments

Usability Issue - Windows Security Center

My friend went to China for a 3-month vacation last December. Just now she asked me to help turn on her computer and send her a file in her computer. Since the computer hasn't been on for two months, the first notification I got when I logged in was a security notification said Windows Defender needed to be updated.

I clicked the balloon notification, and it guided me to the Windows Security Center. Then I noticed that Spyware and other malware protection is out of date, so I clicked Update Now.

Then a small dialog box pops up, as shown in the figure.

There isn't any problem so far. But if you look at the small dialog box, there are two buttons on it: "Cancel" and "Close".

As a user, I feel confused about the "Close" button. I clearly know by intuition that pressing the "Cancel" button will cancel the update process and return to Windows Security Center. But what does "Close" do? Does it just close the pop up dialog box and continue the updating process? Or does it end the updating process as well?

It's just confusing.

There can be many ways to solve the problem, such as changing "Close" to "Minimize". It may be worth to survey some users about this problem to know if the general users consider this a problem. At least I personally consider it an usability issue. 

Posted by Nuo Yan | with no comments

Usability Issue - My Keyboard's "Logout" Button

There are three shortcut buttons on my keyboard which are linked to the calculator, logout command, and sleep command respectively. They are next to each other. I like this design since these shortcut buttons have saved me a lot of times for these activities, especially for the calculator.

However, one day when I try to use the calculator, I mistakenly pressed the "logout" button. My system immediately logs out without double checking with me. I didn't lost my work, but logging back-in and open up the applications I need takes time.

I consider this as a usability issue. The three buttons are placed very close to each other, so there will be chances for the users to accidently press the wrong button. Actions like "logout" and "sleep" are not like just launching a program, a double check with the user is a quite necessary routine.

The User Interface or Experience Designers of the keyboard should realize about this; design usability studies to test the users; and make improvements. The usability study should be detailed enough to test every possible interaction between the user and the interface. For example, it shouldn't only testing whether the user can find the button which executes the logout activity, but also need to test the scenario that the action has been done by accident. In this case, a relatively long term test by the users may also help in collecting more valuable feedbacks.

 

 

Posted by Nuo Yan | with no comments
Filed under:

Usability Issue in Windows Recycle Bin on the Desktop

If you put a Recycle Bin on the desktop, you might empty it by right clicking it and click "Empty Recycle Bin" form the menu.

But you may have noticed that there is another option in the menu called "Delete" which is for deleting the Recycle Bin shortcut from the desktop.

I saw many people mistakenly clicking the "Delete" menu item instead of the correct "Empty Recycle Bin" for emptying the trash, so I consider this as a usability issue for this design.

One way to solve this issue is to replace the "Delete" menu item with other names such as "Remove this shortcut." Currently I don't have any better idea.

New Windows Mobile Starter Kits

There are some new Windows Mobile Starter Kits published recently on MSDN demonstrating different technologies include DirectDraw on mobile applications, WIndows Mobile Ink APIs, Home Screen APIs, etc.

A starter kit is a useful and ready-to-run project which helps developers to understand the concepts of various technologies. It comes with a detailed documentation which helps developers to understand the code and structure of the programming project in the starter kit. Developers can develop their own application based on the existing starter kits.

The following link on MSDN explains the details of the starter kits and provides links for you to download them.

http://msdn2.microsoft.com/en-us/windowsmobile/bb264330.aspx

Posted by Nuo Yan | with no comments
Filed under:

Windows Mobile Ink: The Correct Way of Getting Recognition Results

 

Windows Mobile Ink APIs are new in Windows Mobile 6 SDK. I guess they are trying to replace the old RichInk APIs.

The way of using Windows Mobile Ink is not complex. The basic idea is to have a IInkOverlay object as an ink collector; an IInkDisp object as a container of strokes data; an IInkStrokes object as a collection of IInkStrokeDisp object. The IInkOverlay object collects the ink data and put them in the IInkDisp object. Then the IInkDisp object put the strokes to the IInkStrokes object.

When the strokes data are in the IInkStrokes object, it's time to get the best recognition result. Currently there are two ways of doing that. One is to directly use the ToString() method to get the best recognition result; the other is to create an IInkRecognitionResult object and use get_RecognitionResult property to get the recognition result set from the IInkStrokes object, then use get_TopString() property to get the best fit result and put it in the BSTR. 

 /**

* pInkStrokes is the IInkStrokes object. 

* pInkRecognitionResult is the IInkRecognitinoResult object.  

* StringRecognitionResult is the BSTR.

**/

//Get the best recognition result to the IInkRecognitionResult object

pInkStrokes->get_RecognitionResult(&pInkRecognitionResult);

//Get the best recognition result to the BSTR

pInkRecognitionResult->get_TopString(&StringRecognitionResult);

 

The first way, using ToString(), seems to be much easier than the second way which is to use IInkRecognitionResult object; However, ToString() is not recommended to be used in this case. I've ever mistakenly used ToString() in this case and had some strange exceptions raised (i.e. WinCE501bException) when my application is not used properly. As the result the correct way of getting ink recognition results is to use IInkRecognitionResult object and its properties.

Posted by Nuo Yan | 3 comment(s)
Filed under:

Windows Mobile: Getting Screen Size Information Before Main Window Is Loaded

I wanted to develop a screen size aware application, which will draw all application dialogboxes and windows dynamically depends on the actual screen size of the device. It will not be that hard to adapt the main application window to the screen size because GetWindowRect() or GetClientRect() functions can be used to get the screen size when the main window is loaded.

However, if the application has a pop-op dialogbox for user to do some selections before the main window is loaded, how can I make the dialogbox aware of the screen size? Since main application window hasn't loaded yet so GetWindowRect() and GetClientRect() won't get the correct value for screen size.

I thought about it, asked people around me and looked for some related resources, then I found two solutions.

The first way of doing it is to use GetSystemMetrics() function. It can get the screen size even the main application window hasn't been loaded yet. So if I define two int variables height and width, then I can set:

height = GetSystemMetrics(SM_CYSCREEN);

width = GetSystemMetrics(SM_CXSCREEN);

Then I can use MoveWindow() under WM_INITDIALOG message handler to make the dialogbox aware of screen size.

The second way of doing it can be delaying the display of the dialogbox until main window is initialized (not necessarily shown). To implement it this way, I need to have a global integer variable storing the state of the application. It can be set to a specific value, then as the main window has been initialized, set the global integer to another value. Then have a test of the value, to judge when to display the dialogbox. At the time the dialogbox can be displayed, main application window is already initialized so GetWindowRect() function can return the appropriate screen size information. 

Posted by Nuo Yan | with no comments
Filed under:

Using Remote Spy++ To Check Window Messages in Windows Mobile Applications

Windows programming in native C++ is generally considered far more complex than in managed code. Programming for Windows Mobile devices is very similar with Windows programming. Sometimes we need to figure out which Window message is sent so we can write the corresponding event handling code. However, we can't use Spy++ to do so because we are either debugging our application in the device emulator which is a virtual machine or an actual device.

Visual Studio has a tool called Remote Spy++ (with an array of other remote tools), which provides us the functionality to work with device emulators and/or  actual connected devices. So if you don't know this guy yet and want to use Spy++ for your device application, you can go ahead and try. It's pretty cool and may save you a lot of work to watch for the right messages.

Posted by Nuo Yan | 2 comment(s)
Filed under:

Book Recommendation

Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs (Microsoft Programming Series)

Yes it's an old book which was published in 1993, but it's really awesome! I first got this book in last Saturday night, then I spent several hours finished reading it. I just couldn't stop until I finished!

I recommend every C programmer to read it, if you haven't done so yet.

Nuo

Posted by Nuo Yan | with no comments
Filed under:

Some Thinkings In Software Piracy

Last Friday when I was visiting an internet portal consisting of a chat room of a specific group of people, I saw the following conversation:

A: How can I configure the system to prevent keeping getting the messages which notify me that the software I use is not genuine?

B: Just ignore the messages, as you still can use the software.

It just doesn't make sense why somebody wants to ask such question, and why the other answers like that. The answer should be "go to buy and use a genuine copy."

We all know the fact that in many places in the world there are still a lot of people using pirate software, but we realy need to think further about the reason. Are they really just can't afford to buy genuine software? No, I don't think so. The answer is not that easy. Many of the people can spend hundreds of dollars for dinner, for clothes, etc, but they just don't want to spend the same amount for a genuine copy of software.

I don't know anything about psychology, but I guess such people are using a way of thinking which is in the wrong logic. They may probably think that there's no reason to spend money to buy something which can be found elsewhere for free. But they may not know (hopefully) that doing so is just like somebody steals something and give to them to use. By doing so in a long time, this has become a using habit and people don't want to buy genuine software anymore.

As the result, software piracy is not just a problem of rich or poor. It's true that decreasing software price in specific places of the world may increase the sale; However, proper education and time are also quite necessary. This should be a collaboration of different parties. Schools should provide such kind of education in a very early stage so people know that using priate software is a kind of guilt from their early ages. People has enough money should begin using genuine software, to enjoy better services. Softwre companies should increase the quality of software, and increase the quality of the services provided for genuine users. If the users who are currently using pirate software get same functionality and same level of services or support when they are using genuine software, they would probably continue using pirate software because it's free. Governments also need to provide support on policies for genuine software. Pirate software will not disappear in a minute, so we also need some time. If you know some of your friends may be using pirate software, tell them why using genuine software is important; and tell them how they can benefit from doing so. If they can't afford using genuine copy, there are also a lot of free software and evaluation software available. Pirate one are not their only choice.

All the things above are just some personal ideas, the concepts are not new and most people may already know.  My intend is just to let even more people, especially those who are currently using pirate software but actually can afford genuine software, know the importance and benefits of using genuine software. Using pirate software is not free, but it costs much (guilt, illegal in some places, etc). As the result, let's help everyone around us stop using pirate software; let's help make the software industry better.

Posted by Nuo Yan | with no comments

Calculating Required Storage In a Direct-Mapped Cache

Suppose a 1-level direct-mapped cache need to have 64 KB's data, each block is 16-byte, and the memory address is 32-bit.

To  calculate the total bits needed for the cache, we could go through  the following steps:

  • We need to have 64 KB's data (2^16 bytes) in the cache, and each block is sized as 16 bytes (2^4), so we totally need 2^12 blocks for the data, let's call the "12" as "a." This means a bits are used for the index.
  • Each word has 4 bytes, then in this case each block has 2^2 words, let's call the exponent 2 as "b." This means b bits are used for word in each block.
  • The size of the tag is determined by the equation "length of address - (a+b+2)," the 2 bits here are the byte offset of the address. So, in this case, it's "32 - (12+2+2) = 16."
  • Each block has 16 bytes, each byte has 8 bits, so the amount of data for each block is 16 * 8 + tag + valid bit = 128 + 16 + 1 = 145 bits.
  • Times the amount of data for each block (145) to the number of blocks (2^12). Then we get 593920 Bits. Convert to KB, it is 72.5 KB.

So 72.5 KB's of data is required to make a 64KB 1-level direct-mapped cache .

In general, the idea is very simple: total bits required = number of blocks * bits required for each block. Mistakes can usually be made during the process of calculating the size of the tag. Sometimes it's also easy to forget to add the valid bit. But if doing it carefully, we could realize that the way of calculating it is quite simple.

Posted by Nuo Yan | 7 comment(s)
Filed under:

Terminologies of Earned Value Management In Project Management

Earned value management is an important and useful part of performance measurement in the whole project cycle. The terminologies are important to remember (or at least to know) to manage Earned Value of the project. I will list the most basic ones in this blog entry, as a simple source of reference.

Cost - the amount of money for completing the project. Note this is NOT the price which the customer pays. For example, a bottle of soda costs $0.5 for production, but the price in the store of the same soda is $1.00. 

Planned Value - The planned cost of the project. We have this value before project starts.

Earned Value - The planned cost of the project as it is at some point of the progress. We have this value when the project has started and in progress.

Actual Cost - The actual cost of the project as it is at some point of the progress. We have this value when the project has started and in progress.

For example, if we have a project planned for 2 days, the first day has $500 planned budget and the second day has $300 planned budget. But when the project actually starts, it only has done half in the first day and done the originally planned first day's work in the end of the second day. Then at the end of the second day:

1. The Planned Cost for the first day is $500 and for the second day is $300. Total $800.

2. The Earned Value for the first day is $500 (because project members are working full day), and for the second day is $0. Total $500.

3. The Actual Cost for the planned first day's work is $700 (suppose), the planned second day's work hasn't started yet so no Actual Cost for that. Total $700.

So we can calculate some important values:

1. Cost Variance: Earned Value - Actual Cost = $500 - $700 = - $200, which means the actual cost exceeds the planned budget at this point of progress.

2. Cost Performance Index: Earned Value / Actual Cost = $500 / $ 700 = 0.714 = 71.4%, which means we get 71.4% of what we spent (or invested).

3. Schedule Variance: Earned Value - Planned Value = $500 - $800 = - $300, which means we are behind schedule (negative value).

4. Schedule Performance Index: Earned Value / Planned Value = $500 / $800 = 0.625 = 62.5%, which means our productivity is 62.5% of planned.

5. Estimated Costs At Completion: Planned Cost at Completion / Cost Performance Index = $800 / .714 = $1120, which means now we need to estimate $1120 for the total project.

Posted by Nuo Yan | with no comments

Privacy, Privacy, Privacy...

Not a very long time ago I studied Human Computer Interaction for a quarter. Not saying how much I learned in the class, even after the course I still keep noticing useability issues of everything in my everyday life.

Last week I went to a ticket office to buy a ticket for a show. There was a line with many people waiting. The sales person in the ticket counter asked the same question loudly to every single one: "What's your address and phone number, please?"

First of all, many of us may concern about why they are collecting such personal information. In ohter words, how they will use the information. Some may also concern about the security of the information stored in their systems. For example, whether they will disclose the information to any third party or not. As the result, at least they should explicitly state they would use the information properly and would not disclose to any third party.

Second, they asked everyone for personal information in speaking, which means all others in the line could hear the information. This is actually disclosing their personal information to many third parties. Nobody knows what others in the line do. Any people in the line can simply record the voice containing personal information to a mobile or portable device, then use or distribute/disclose the information illegally in the future.

In such situation, I guess a lot of people would not provide their real address and phone number. Then from the ticket company's point of view, many of the personal information they collected would be invalid. Then they cannot do what they intended to do with such information.

A Better Design

1. Privacy and disclosure statements are necessary.

2. In such privacy and disclosure statements, must explicitly state how the information will be used.

3. Provide a form for everyone to fillout, including their address and phone number, and explicitly print the privacy and disclosure statements on the form.  

By doing so, though there must still be people who don't want to write their true information, at least all people are doing the ticket-buying process with comfort. They don't have to worry about how others in the line will hear their personal information. And similarly, they can at least assume the company will use the information properly, as stated in the explicit privacy and disclosure statements on the form.

Posted by Nuo Yan | with no comments

Microsoft Recognizes Most Valuable Professionals (MVPs) at 2007 MVP Global Summit

Below is the news release from Microsoft PressPass. I will be at the conference in March. I also look forward to seeing my fellow MVPs.

About 10 years ago when I first had a computer, MVPs in the technical communities helped me a lot for learning how to use a computer. About 5 years ago I thought I had enough knowledge to help others, then I did so and was later awarded as an MVP.

For about 4 years as an MVP, I have been given great support by Microsoft for my technical knowledge enrichment, educations and careers. I've attended every Global Summit ever since I became an MVP. I love the conference a lot. In the Summit, there are usually a lot of opportunities of seeing new technology, meeting corporate executives and networking with peer MVPs.  

See you in the Summit!

-----

Microsoft Recognizes Most Valuable Professionals (MVPs)
at 2007 MVP Global Summit

Gathering acknowledges the technical community contributions of more than 3,500 individuals

REDMOND, Wash. —Feb. 20, 2007 — In the wake of the largest product launch in the company’s history, Windows Vista, 2007 Office system and Exchange Server 2007, Microsoft Corp. will host the 2007 MVP Global Summit. This annual event recognizes the value that Microsoft designated MVPs around the world provide in helping to make its products successful while honoring their contributions to the objective exchange of knowledge and their dedication to enriching the Microsoft user experience.

            MVPs are individuals recognized by Microsoft as outstanding technical community leaders who make an exceptional impact on the IT industry by actively, and voluntarily, sharing their expertise in technical communities worldwide.  Recent examples of the MVP influence on Microsoft’s products and technology users include:

· More than 2000 MVPs participated in the Windows Vista beta program

· On average, a newsgroup posting by an MVP will receive more than 43,000 views

· In 2006, the MVP community contributed more than 300 Knowledge Base (KB) articles in 7 languages across all Microsoft products.

 “Every year, the MVP Award program continues to evolve to reflect the diversity in today’s technical communities,” said Sean O’Driscoll, general manager of Community Support and MVP, Microsoft. “This year is no different. The MVPs serve as an inspiration, sharing their expertise and passion for technology communities with an unyielding drive to help others.”

Scheduled for March 12 – 15, the 2007 MVP Global Summit will be held in Seattle, WA at the Washington State Convention Center and at Microsoft’s headquarters in Redmond, WA.  The event will kick off with a keynote address by Microsoft Chairman, Bill Gates.  More information can be found at http://mvp.support.microsoft.com/MVPsummit.

About the Microsoft MVP Program

Microsoft began the MVP Awards in 1993 as a way to recognize members of the general public who devoted their time and technical expertise to helping users in various online technical forums. Over time the program evolved, and today awards are given to members of technical communities worldwide for their contributions to traditional communities (such as public newsgroups, forums, third-party websites, user groups, book  authors, event speakers) and emerging forums (such as web boards, blogs, and wikis). More information about the MVP Award and the 2007 MVPs can be found at http://www.microsoft.com/mvp. More information on Microsoft technical communities can be found at http://www.microsoft.com/communities.

About Microsoft

Founded in 1975, Microsoft (Nasdaq “MSFT”) is the worldwide leader in software, services and solutions that help people and businesses realize their full potential.

#########

Microsoft, MSN and Visual Studio are either registered trademarks or trademarks of Microsoft Corp. in the United States and/or other countries.

The names of actual companies and products mentioned herein may be the trademarks of their respective owners.

Note to editors: If you are interested in viewing additional information on Microsoft, please visit the Microsoft Web page at http://www.microsoft.com/presspass on Microsoft’s corporate information pages. Web links, telephone numbers and titles were correct at time of publication, but may since have changed. For additional assistance, journalists and analysts may contact Microsoft’s Rapid Response Team or other appropriate contacts listed at http://www.microsoft.com/presspass/contactpr.asp.

Posted by Nuo Yan | 2 comment(s)
More Posts Next page »