Thursday, November 29, 2012

My VMware VCAP5-DCA exam advice: lab it up!

I passed the VCAP5-DCA back in May when it was in beta. I forgot how many questions are on the VCAP5-DCA but come to think of it, it doesn't really matter. What matters is your ability to perform administrative tasks quickly, and how quickly you can use Ctrl+F to find out how to perform administrative tasks from the VMware (the official VMware documentation is provided). With this exam, there is no way you’ll know how to do every task on the exam (unless you’re some sort of VMware robot from Palo Alto sent to destroy our dignity by scoring 100%). The good news is, you don’t need to know how to do everything, because the official VMware PDFs are made available!

I passed the VCAP4-DCA and VCAP5-DCA. Check back next year for my VCAP6-DCA advice.

Rote memorisation will help you pass the VCP5, design acumen will help you pass the VCAP5-DCD, but only practice will get you through the VCAP5-DCA. My advice for the VCAP5-DCA exam is to practice until you get sick of it.
How do you know you’re ready?

If you've been living in fluffy architect land drawing on whiteboards, you’ll definitely need to study before taking the exam. If you've spent the last weeks setting up a new vSphere environment from scratch or troubleshooting, you’re ready to go.

Here’s an example task (I guarantee it’s not on any exam I did!): Add the Cisco Nexus 1000V VIB to a VMware install bundle. Can you do it? If so, congratulations: stop reading this blog post and book the exam before you accidentally watch television and forget the knowledge. If you’re not sure how to add a VIB, find the VMware documentation PDF that explains how to do it. Do you understand the steps? Could you do it in under 6-8 minutes? If so, you’re probably ready. If it takes you 10-15 minutes, do a bit more practice: time is limited you’ll only be able to refer to the documentation 3-4 times before you start running out.

Here are some suggestions to improve your administration skills.
  • Lab it up! Your lab doesn’t need to be representative of the exam lab, just the features you’re unfamiliar with. Unfamiliar with storage? One ESXi host and Openfiler will do! Unfamiliar with virtual distributed switches? Sounds like you’ll need at least two ESX hosts.
  • Watch the vBrownbags: if it has VCAP-DCA in the title, watch it!
  • Sit the VMware official training: the Install, Configure, Manage along with Fast Track will cover everything you need in the exam. I prefer classroom training because you get to make friends in your local VMware community and share experiences.
If you do the VMware courses, you'll get binders full of slides and exercises. BINDERS FULL.
To be honest, I'd rather have the videos from TrainSignal handy.
  • TrainSignal VMware vSphere 5 training: This is the cheaper alternative to the courses. If you have the will to self-study, this is good. If not, don’t bother. The relevant courses are VMware vSphere 5 Training and vSphere Advanced Networking Training. There’s over 24 hours of videos, but you should be able to study it all in a week. Skip over what you’re familiar with (you’re already a VCP: do you really need to watch a video on how to create a resource pool?) and cover your weak points.
  • Read the blueprint with the mindset of the test writer: while reading it, ask yourself “If I was writing the exam, how would I test if somebody knew this?” about each point. If you were writing an exam question to test someone's competence with resource pools, how would you test it? Perhaps you'd create a resource pool hierarchy and VM reservations such that a VM wouldn't be able to power on. Then you'd ask the student to make a single change to the hierarchy that would allow it to power on.
As with most technical training, you’ll start to forget knowledge as soon as you walk out of the training room and you'll lose the test mindset within a week. I suggest you book the exam no more than 3-5 days after finishing whatever study path you've set yourself. There's a lot of administrative tasks covered on the exam, and you won't have done them all before, but that's no reason for a professional like you (who has already achieved VCP5) to be scared.

Saturday, November 24, 2012

Chess in C (Part 3) - Rook, Rooks, Rookies, Wookies, same thing

Today's blog post will be short like the sentences of a language I'm learning. ¿Comprendes? I'm not learning Spanish, I've just wanted to use one of those upside down question marks. Twenty years I've been waiting to use those question marks.

I'll cover one chess piece, and one chess piece only! I'm assuming you've read Chess in C parts one and two. In part one, we covered the chess board and how to represent pieces. In part two, we covered how to model moves of pawns as well as a general approach to calculating whether a square is a potential destination for piece. Before we begin today, grab the code at the end of part two and compile it. We're going to make some modifications to this code, and I'm assuming you're ready for some hacking.

Today's piece is a rook. In chess, a rook is a piece that can move up, down, left or right any number of squares. Here's what a rook looks like.

It's also the logo of about 642 financial services companies worldwide.

And here are the potential moves of a rook. We're going to write code to calculate the potential moves.

The rook is in (3, 4). Remember, we start counting at 0. And it's not a regular Cartesian plane.

The castle represents the rook and the X represents the potential moves. The diagram assumes there aren't any obstructions in the way like other pieces or a banana peel. So, for any given square, how can we calculate whether there is it is a possible move for a rook?

Here's the aid again. Each cell is represented by a pair of integers (X and Y). X represents row and Y represents column. The first square (0,0) is in the top-left corner. Don't get it confused with a Cartesian plane (the ones you probably learnt in math class) where (0,0) is in the bottom-left corner.

Made in Microsoft Word.

In our example, the rook is in (3, 4). That means

  1. every square on that row (row 3) is a possible move.
  2. every square in that column (column 4) is a possible move.
Now, get some paper and write every potential move if the rook is in (3,4). Come on! It may seem obvious, but you need realise that something will be missing. STOP READING THIS BLOG POST AND ACTUALLY WRITE THEM DOWN!

You done? Alright, you should have written down coordinates covered by the Xs. Let's check.

Maybe you started writing down the columns, maybe the rows. Doesn't matter. You should have written down the following:

Squares in column 4: 
(0,4), (1,4), (2,4),        (4,4), (5,4), (6,4), (7,4)

Squares in row 3:
(3,0), (3,1), (3,2), (3,3),        (3,5), (3,6), (3,7)

If you wrote down these coordinates, congratulations! If you wrote down (3,4), then you're wrong! Square (3,4) isn't a potential move because that's where the rook is! As I said, it seems obvious. But keep it in mind when we write some conditional (if) statements. That's what I wanted you to realise: we're going to need to come up with a way to ignore the current square

I'm going to grab the code for iterating through the chess board from part one and modify it a little. You should understand this code and be able to write it without stressing.

For the purposes of demonstration, I'm going to make two variables that contain the row and column of a rook. This isn't how you'd store the location of a rook: it's just a quick way of showing you how to detect a rook in the current row or column.

This consists of two compound if statements within the nested for loop.

The first if statement checks the row for the rook, and the second if statement checks the column for a rook. The first if statement tests for two conditions:

  1. Whether the current row (iterated through by variable i) is equal to the row that contains the rook (pieceRow). If this statement is true, then every square is marked as a potential move EXCEPT if the square is in the column containing the rook (pieceColumn). If it didn't check this, every square in the row would be a potential move (even the piece containing the rook!). We know this isn't true from our exercise above: the piece cannot move into its own square.
  2. Whether the current column (iterated through by variable j) is equal to the column that contains the rook (pieceColumn). If this statement is true, then every square is marked as potential move EXCEPT if the square is in the row containing the rook (pieceRow). If it didn't check this, every square in the column would be a potential move (even the piece containing the rook!) We know this isn't true from our exercise above: the piece cannot move into its own square.
If you're confused, the best way to understand is to write the code and see what happens, then break the code and see what happens. In fact, let's do this. Copy and paste this code.

Now compile it. If all went to plan, your board should look like this.

Lookin' good! (rook is in (3,4) - remember, start counting from 0)

Let's test a few more possibilities! Replace the pieceRow and pieceColumn with 5 and 5. You should get this.

Also lookin' good! (rook is in (5,5) - remember, start counting from 0)

You might also want to test some edge cases like (0,0) and (7,7) to make sure the algorithm works.

Now, let's break this thing! If you haven't broken anything while coding, make sure you're actually coding because making mistakes is part of the process. Remember before how I said we had to make sure not mark the rook's current position as a possible move? We tested for that condition by putting a != pieceColumn and != rowColumn in the appropriate if statement. Let's remove that and see what happens!

The rook no longer exists. It has been clobbered!
So, I think we have the code nailed down for calculating possible rook moves. Of course, it's not in a usable form. You have to manually put the position of the rook into pieceRow and pieceColumn. So I'm going to set some homework for you: try and modify the code so that when you specify a rook in the initial start position, the code will pick that up and automatically draw it. I'll write the answer in my next blog post (this year, I promise!)

Other posts in this series

Chess in C (Part 1)
Chess in C (Part 2) - Insert Pawn Pun Here
Chess in C (Part 3) - Rook, Rooks, Rookies, Wookies, same thing
Chess in C (Part 4) - I'm asking for input
Chess in C (Part 5) - Potential moves of a bishop: up-left, cardinal, pope

Friday, November 23, 2012

My VMware VCAP5-DCD exam advice: don't study for the exam

I passed the VCAP5-DCD (that's an acronym for VMware Certified Advanced Professional - Data Center Design)! To be honest I didn't study and had no sleep, which makes it similar to my first year of college. At college, I even got the Dean's Commendation for High Achievement! The achievement was for my high marks, not for my sleeping. Anyway, I've never been worried about whether I would fail an exam. Like most college exams, the result was determined before I walked in. The exam just showed me the result.

And that result was a PASS!

Everyone's learning style is different, so what works for me may not be relevant to your style of learning. But my advice is, don't study for the exam. Instead, focus on becoming a better designer. The VCAP5-DCD tests your application of knowledge, and you won't learn that from memorizing the content on the exam blueprint. The blueprint isn't a list of topics to study, it's a list of skills and abilities you should have. Rote memorization will help you pass the VCP5, practicing administration tasks will help you pass the VCAP5-DCA, but only design ability will help you pass the DCD exam.

What are these abilities?

You need to be able to ask why and understand why. Let me give you an example.

Objective 3.5 states that you should be able to "Design a vApp catalog of appropriate VM offerings (e.g., templates, OVFs, vCO)." Anybody can open the vCenter client, make a new vApp, add some VMs and set the startup order. But have you developed an opinion on vApps? Do you understand their advantages, disadvantages and their limitations? Which limitations have stopped VMware from packaging their own applications as vApps? Would any of these limitations apply to an application your company is developing? What application would you most like to see as a vApp? What application can't you believe isn't already a vApp? Instead of learning about vApps, the more helpful skill to learn is to ask why something is the case.

Pick any skill listed on the blueprint, say, storage design. You probably know what the different types of multi-pathing are. Why would you use one or the other? If there are Microsoft clusters in your environment, how does that affect which method of multi-pathing you use?

Being ready

If you can whiteboard a VMware design and explain the why behind every box and line you draw, you're probably ready. Try whiteboarding the following scenarios.
  • A small customer wants the cheapest implementation required to support high-availability
  • A large customer wants a solution that has no single point of failure.
  • That large customer just acquired the small customer. Design the migration strategy.
  • Remove one of the lines between storage and compute. What is the implication of this?

Probably a little too simple. But give it a go: explain what the red double-headed arrow
between the public cloud and private cloud is. How does it work?

(Note: Any similarity to an exam question living or dead is purely coincidental. I agreed to an NDA so I'm not disclosing anything other than the fact I signed an NDA, which isn't covered by my NDA!)

You don't even need to have experience whiteboarding in front of a client. Try whiteboarding in front of somebody who knows nothing about VMware, or even enterprise IT! I've found that some of the trickiest questions I've got have been from beginners.

Exam quirks

With most other IT exams, you can skip between questions. In the VCAP5-DCD, you can only go forward. There's no ability to flag questions and return to them later. Consider this a blessing: once you've answered the question, you're locked in! You'll only need to focus on the question at hand. Control the things you can control and don't worry about the rest.


I can't recommend you anything that will help pass the exam, because I didn't revise or study for it. However, I can recommend some resources that can help you become a better designer.

  • vBrownbags are free regular online meetings run by experienced VMware architects. If you want to know how experienced designers and architects think, watch some of these.
  • The Feynmann technique involves pretending to teach the idea to a new student. This forces you to understand the concept which should make you a better designer (and consultant).
  • Download the products and use them. Don't just do the usual VCP style labs: go off the rails! What happens to a VM when you power the destination host off during a VMotion? Do you understand what happened? If not, read up on VMotion! When should you stop reading? When you can explain it to someone who doesn't know anything about VMotion! Don't be afraid to go off-topic.
Anyway, I thought that would be the last VMware exam for me, but VMware have just VCP-Cloud and VCAP-CID. Time to book some more exams. The certification treadmill never ends!