PMP: Study Material

Earlier posts in this series: PMP: The Plan

I referred to just two sources for my PMP preparation.

1. PMBoK

This one is fairly obvious. PMI conducts the PMP exam and if it publishes a book and names it Project Management Book of Knowledge, you better use it for preparation. This book is the bible for PMP exam. It contains the list of Knowledge Areas, the processes contained within each Knowledge Area and the ITTOs (Inputs, Tools & Techniques, Outputs) for each process. There are 10 Knowledge Areas, a total of 47 processes. You are better off if you can memorize the table that details out the Knowledge Areas and their processes categorized according to phases.  I will go one step further and say memorize the ITTOs too. I know it is not easy, but it is doable. I did it developing my own mnemonics and it helped me a great deal in the exam. I had more than 30 ITTO questions, so do not take this lightly. It took me 2 days to memorize the ITTOs and once I had it down, it was revising it everyday for 20 minutes to make sure I can reproduce it from memory. I hope to cover the memorization process I used later in the blog.

2. Rita Mulchay’s PMP Exam Prep

If you are not very confident of your PM experience and still want to ace the exam, this is the book for you. The unique thing about this book is while it prepares you for the PMP exam, it also teaches you a lot of things about project management. There is an exercise at the end of every chapter and this helps in identifying your gaps. For the chapters where you score low, make sure you revisit and re-read and retake the exercise.

The study method I followed was like this. I read PMBoK once to know what PMP is all about. At the end of this, I had a fair idea where I stood. I memorized the process chart. Then I started the second round of PMBoK, focusing on the ITTOs. I would read one chapter from PMBoK, memorize the ITTO, read the corresponding chapter from Rita’s book and then answer the questions. One knowledge area would take me 2-3 days because I would go deep into each topic to understand. Rita’s book helped me a lot in understanding why the ITTOs were used for the process. The logic plus the memorization was a big help. Apart from these two books, I often visited Edward’s PMP Notes to see if there was something I should know which wasn’t covered. If I came across something, I would google and learn it before proceeding further.

After I finished this cycle, I took up mock exams, which helped me identify my weak points and revisited these in PMBoK and Rita. There are many sites online which help you answer questions from a particular Knowledge Area, which I used to fill the gaps.

A few other books which I often saw recommended are Head First PMP and How to pass PMP in your first try. I did not read these books because I didn’t have these books and I didn’t want information overload. In hindsight, it was a wise decision because I did not see any ‘out of scope’ question on the exam.

More than the studying itself, I owe a lot to the mock exams. They really helped me in filling gaps and improving my confidence. It also helps to know what it takes to sit at a place for four hours for the exam.

PMP : The Plan

I decided to pursue PMP as it would give me the required push to take the big leap from technical to project management path. And I don’t mean just job opportunities wise. Though I did have some PM experience when I took up PMP, I realized while I was preparing for it that I had lot of gaps which I had to fill. The preparation for the exam helped me identify and fill these gaps which will help me in my work. While textbook learning is not the same as hands-on experience, it equips you with the knowledge and tools required to do the work.

I gave myself 60 days of time for preparation. I arrived at this number based on the suggestions I saw on the internet and my personal evaluation of how much time I would need to prepare. I based this on PMBoK and Rita Mulchay’s book (details later in the post). Once I had the exam date in hand, I made a detailed plan. I made a list of the things I had to study and the different mock tests/exams I had to take. This is what I ended up with:

Study material:

1. PMBoK

2. Rita Mulchay’s PMP Exam Prep

I know there are many books out there which are highly recommended. Some names I heard were Head First PMP, How to pass PMP on your first try, but I didn’t read those. I found PMBoK and Rita to be sufficient.

Mock Tests/Exams:

While I limited my study material to just two, I more than made up for it in mock exams. I went the whole mile and took whatever exams I could find. The complete list:

1. Simplilearn exam

2. Head First PMP Exam

3. Oliver Helmann 75 questions

4. PMZilla 30 tough questions and 200 tough questions (the latter is not free)

5. Exam Central

6. PMP For Sure (Register to access the free exam)

8. Tech FAQ 360

9. Prepare PM

10. BrainBoK

11. PM Champ Quality Questions

12. Christpher Scrodo (Available to PMI members. Access the URL after logging in to PMI)

13. Exercises at the end of every chapter in Rita Mulchay’s book

Of all these, I found Rita and Scrodo to be very similar to the actual exam questions in terms of structure and difficulty. The other tests helped me find my weaknesses so that I could focus on that.

A new journey

Not that anybody noticed, but I had been away from this blog for quite sometime. I was very much in touch with the corporate world, happily coding away, it is just blogging which I turned away from. No reason as such, apart from the fact that I suddenly found myself nothing new to say on this blog. And now I am back because I feel I should share my experience about my latest journey.

The journey I am alluding to is my PMP journey. I started out as a developer and slowly down the path, I took a turn towards project management. After gaining some hands-on experience, I decided to take up the mother of all PM certifications, PMP. It was a 2-month long, arduous journey, but very enjoyable and fruitful. I cleared the exam with 4P (Proficient) and 1MP (Moderately Proficient). While there are countless sites and blogs out there which tell you how to pass PMP at the first attempt and I might not have anything new to offer, I still want to share my experience, mainly because my intent is to share and not gain anything out of it.

I plan to do this as a series and cover study material, mock exams, question banks and my own study notes. Stay tuned.

Tagged , ,

Javascript: Limiting string length in textbox

I am wetting my beak in the Javascript world and I learn something new every day. When I faced this problem of limiting the length of string that the user can enter in a textbox, Google failed to return a satisfying result. My co-worker told me about the amazing attribute maxLength that is available for textbox. Works like magic.

If you want to restrict the length to 50, then just add an attribute ‘maxLength’ like this:

<input id="myTextBox" type="text" name="myTB" maxLength=50>

If you want to do this in javascript using jquery, then you need to add this line in your js file:

$("#myTextBox").attr("maxLength", 50);

I wonder why Silvelright textbox does not have something similar. This is a very helpful attribute for developers, do you agree?

Silverlight 4 XAML Parsing Error

If you are using Silverlight 4, chances are you have encountered the nasty exception while parsing a XAML file, something on the lines of : “Parser internal error: Object writer ‘xClassCanOnlyBeUsedOnLoadComponent'”. It can be quite frustrating to debug this because you can’t step into the Load method and the line number details that the exception provides is basically useless.

Whenever you see the term xClassCanOnlyBeUsedOnLoadComponent, look for x:Class in your XAML file. Check whether the namespace specified is correct and your code behind (xaml.cs) also uses the same namespace. If you are using a XAML file only without a code behind file (xaml.cs), then you do not need the x:Class tag in your XAML file. Remove this and the exception should go away.

Let me know if this solves the problem. That being said, Microsoft should really work on improving its exceptions. The least they could do is provide accurate information.

Forcing binding update in TextBox

A typical usage of TextBox control in Silverlight is to bind it to a property and set the bind as two way. When the property changes, the TextBox is updated with the change and if the user changes the text in the TextBox, it is saved back to the property. Something like this:

<TextBox Text="{Binding Path=State, Mode=TwoWay}" />

A common problem developers face is when you have a TextBox control and a Submit button, which is enabled only when the data in TextBox is modified. The Submit button is not enabled until the LostFocus event of text box is fired. And LostFocus won’t be fired unless you click on something else. In this case, we can force the text to be updated. Register for TextChanged event and in this event handler, get the binding object and force an update.


<TextBox Text="{Binding Path=State, Mode=TwoWay}" TextChanged="textBox_TextChanged"/>

void textBox_TextChanged(object sender, TextChangedEventArgs e)

if(sender is TextBox)
TextBox tb = sender as TextBox;
BindingExpression binding = tb.GetBindingExpression(TextBox.TextProperty);
if (binding != null)



SelectionChangedEvent in RadGridView

If you have used RadGridView with a GridViewComboBoxColumn, you know it does not support SelectionChangedEvent directly. There are many scenarios where you want to handle some validation or perform some action when the user selects an item in a combo box but the absense of SelectionChangedEvent for GridViewComboBoxColumn makes this really hard. Good news is, there is a solution. Here it is, see if it helps.

Let’s say you have a RadGridView defined like this:

<telerik:RadGridView x:Name="myGridView">
 <telerik:GridViewComboBoxColumn Header="Page" UniqueName="column1"  />

In your code behind, preferably in the Loaded event, add this code:

new Telerik.Windows.Controls.SelectionChangedEventHandler(ComboBox_SelectionChanged));

Add an event for Selection changed event. The name of your method and the event above should match.

 void ComboBox_SelectionChanged(object sender, RadRoutedEventArgs args)
RadComboBox comboBox = (RadComboBox)args.OriginalSource;

if (comboBox.SelectedValue == null)

// Get the current cell
GridViewCell cell = myGridView.CurrentCell;

// Handle the situation where a cell is null. It can be when you are adding a new row
if (cell == null)

GridViewRowItem row = cell.ParentRow;
GridViewColumn col = cell.Column;

// This if block here is to handle only the combo box column desired. You can
// have multiple combobox columns and this event will be triggered for all of them.
// Handle what is required and ignore the rest
if (col.UniqueName != "column1") // Unique name that you specified in the XAML

// YourDataObject is whatever data object you are using
YourDataObject item = comboBox.DataContext as YourDataObject;

//SelectedItem returns object. Convert it to whatever your binding object type is
object selectedItem = comboBox.SelectedItem;

// Now that you have your selected item, you can do whatever you want.
// In case you want to disable other cells on this row, just use row.Cells property.

That’s it. You are all set now.

Some points to note:
1. SelectionChanged event will be triggered for all combo box columns and combo boxes you have. You need to find out if the deisred combo box column is changed.
2. This event is triggered not only after the selection is changed, but also when the user just clicks on the combo box. There is a solution to handle this, but that’s another story altogether.
3. This was tried with VS 2010 and Silverlight 4.

Virtual PC: Switching between virtual pc and host pc

Once you start using your virtual PC, how do you get control back to the host PC? The help document of VPC says to press the host key, but what on earth is the host key? It’s the right ALT key of your keyboard. Not any ALT key, but the RIGHT ALT key. Press it and the mouse control comes back to your host PC.

You can launch your virtual PC in full screen mode. Once you have done that, how do you quit full screen mode? Again, press host key and enter. That is RIGHT ALT + Enter.

Simple, yet it took me some time to figure it out.

Regular expression for a line with only white spaces

I had this requirement to check whether the input string contains only white spaces. I am not a regular RegEx user, so it took me some time to achieve this.

^[ \t\r\n]*$

That’s it. The meaning of the above pattern is [Beginning of line] [0 or multiple white spaces] [End of line]. Note that this pattern matches an empty string also, since we have given * after white spaces. If you want to strictly look for white spaces and exclude empty strings, then change the * to +.

This is not such a big deal that it requires a blog post of its own, but I didn’t find this information when I looked for it. So putting this out there for anyone who comes looking for it.

Review: Introduction to Silverlight 3 by Laurence Moroney

The book intends to give an overview of the features in Silverlight 3. It starts with very basic things like creating a Hello world project in Silverlight 3, the different elements in SL3 project and hand coding all those elements outside the Visual Studio environment. Later on, the book dives into advanced-beginner topics like writing XAML code, using Expression Blend etc.

The book touches on different topics at a superficial level and doesn’t give deep insight into any of the topics. This is what is expected from an ‘Introduction’ book, so the purpose is served. There is a detailed section (couple of chapters) on UI controls available in SL3. It introduces basic controls like Button, Text Block, Label and moves on to slightly advanced controls like DataGrid, ScrollViewer etc. The author explains designing UI using XAML. This is a must for anyone who don’t have Blend. Learning XAML is the biggest challenge in XAML, in my opinion.

There is a small section on MVVM where the author discusses two-way data binding. I was hoping this section would be a bit deeper, but I guess that was not in the scope of this book.

The intention of the book is not to showcase the differences in SL3 and the previous versions of Silverlight. It isolates SL3 and focuses only on this version. For someone who is starting to learn Silvelright and chooses SL3 as the version, then this book is ideal to start with. The reader need not worry about the compatibility issues with older versions unnecessarily.

If you are looking for a quick familiarity to Silverlight 3, then this is the book for you.

Tagged , , ,