Wednesday, June 29, 2005

Photography

I have been interested in photography for a long time, and even though I am not to be called a professional in anyway, I try and learn using the camera.

I do not currently own a digital camera, but I was lucky enough to have my friend Karim lend me his Canon Powershot G5 for a couple of months, for me to practise a bit.

I do plan to get a Digital Rebel XT (dp review here) later this year though.

So I've decided to put up some of my photography work for your viewing pleasure (or displeasure I'm afraid it might turn out to be)

I will post a few ones with more to come later if you (my dear very few blog readers) are interested.

So without further ado, Here goes......
(You can click on the images for larger sized versions)

Drawing in thin air
This is a very early shot I took while experimenting with long exposure shots in a dark room.



Stairway To Heaven
I took this one on our very own ITWorx rooftop.



The Nile by Night
And this one was taken from a street in zamalek where I love to just sit and enjoy the tranquility there


Tuesday, June 28, 2005

Me, Myself, and I

Well I should have started on the 3rd part of the Microsoft interview posts but I couldn't really get myself to do it. Soon I will though.

So this should be a lighter post, mainly about my life in the past few days. The title is "adapted" (as Nag would say) from Beyoncé's song.

I went to Diwan with Nag, we both didn't really intend on getting any books but we ended up getting 3 books, Sun Tzu's Art of war and Karen Armstrong's History of God for myself, and Sidney Sheldon's "Are you afraid of the dark?" for Nag. I am yet to read any of them because I have just finished Coelho's The Alchemist and started on The Devil and Miss Prym (Spanish version is here)

The weird thing is that although The Alchemist is Coelho's most famous work, I find myself enjoying The Devil and Miss Prym a lot more so far. The Alchemist is an easy read, but I didn't find it very interesting. And Coelho had this habit of explaining everything to the reader. At least that's what I thought he was doing in The Alchemist. I like a writing style that rewards a thoughtful reader. Statements with clues to insights, just show me the road and let me walk it myself. I didn't get that from the alchemist and I even felt some of Coelho's explanations are intelligence insulting, you know, when someone is explaining something really obvious...

I also got one of those for my baby. And I love it! (Nag will now comment once again about "guy" love for material possessions) Still undecided about changing the speakers though, because so far the factory spec speakers are doing just fine.

That's the past few days, on another, more futuristic, note, we're going to Hurghada next Friday! We're staying for 3 days (we is me and the people at ITWorx, it's a recreational company trip). This should provide for the relaxing weekend by the sea that I've been longing for for so long now.

C'est tout pour maintenant, a bientĂ´t :)

Wednesday, June 22, 2005

Google me

Well, I've been collecting some visitor stats recently, of people who browse my blog here. The findings have been insightful to say the least.

To my surprise, I found out that some of my blog entries (the ones about Microsoft interviews) are now in fairly advanced places on google and yahoo search engines. I am definitely amazed by the speed those guys crawl the web and index content.
So at the moment of writing, my blog posts come up at no. 21 on google and 16th on yahoo, searching with the phrase "microsoft sdet interview questions" (without the quotes)

Now even more suprising is what I found out today while checking the visitor log.....
I found visitors from Microsoft's redmond campus, the visitors apparently were searching for keywords "microsoft interview questions" on technorati (a blog search engine) when they stumbled on my humble blog.

I'm impressed to say the least.
Impressed with the speed of indexing that today's search engines has come to, and even more impressed by how much attention Microsoft pays to its hiring process. They're actively searching the Internet for what people are saying about them and their interviews, that definitely says something.

And I think interviewees should also think about this. If you're out looking for Microsoft interview questions with answers, now you should know better. MS probably knows already about questions you'll be able to find.

I post my experience here so that future interviewees (or the curious) would know what to expect from an MS interview. The questions serve as examples, don't expect to get the exact same questions, rather something "along the line". Don't look for answers and memorize it, you have no idea how much it shows during an interview if you're just reciting a canned answer.
All interviews are more like a discussion than a question-answer thing, and you rarely get to the optimal answer right away, rather you follow a line of thought with help and hints from an interviewer. Blasting out optimal code instantly in response to a question could only mean you'd seen it before, not that you're a genius.

Hopefully, I'll be back with more stuff about the rest of the interviews soon.

P.S.
What do you think of the new "Read more" format for entries? :)

Monday, June 20, 2005

The thing about gossip

So what's it that people enjoy about gossip?
And I don't mean the who-married-who type of gossip, or the why-did-Brad-Pitt-propose-to-Katie-Holmes type of gossip. No no, it's the other type, the one that's alive and healthy almost everywhere I've been in our "Eastern" societies. The one where you judge people, discuss everything about them, their moralities, their cons, the fatal flaws in them with other people when both parties at both ends of the conversation actually know aboslutely nothing about the discussed.

Interestingly, religion explicitly declares it's a thing you should not do. When it's called by the name "Gheeba" in Arabic, all people would frown upon it, maybe never admit to committing it.
And yet, it's deep in our so called Eastern culture that you respect it. To fear it. And to shape yourself and your behavior so that it attracts the least attention, and hence the least gossip. Just go with the sheep kind of thing if I might say.

Just try to do anything a little bit different than everybody else is doing it, and you're bound to see some magic. The thing that you do could be very trivial, anything would do in Egypt, wear shorts on a hot summer day, get coffee with a work colleague (of the opposite sex), have a group photo on the street, anything... People just won't leave you alone.
They would talk about you behind your back, they would talk to their friends about you (even when their friends don't know nothing about you). They'd formulate theories about your behavior (specially with boy-girl things), and they will discuss findings about you as if they know you better than your own mother.

But hey, those are the bad guys right?
There is still the "good" guys party. What will they do about that? Of course, they can't stand still seeing all the gossip going on around and about you.

Right, they won't. They will come to advise you. In various forms (read: in various degrees of rudeness). They will tell you what to do, what to say, how you should completely change what you're doing and what you are so that people "stop talking". And they'll see through to it that you do. It's their "moral" responsibility.

It's definitely and by far _the_ most irritating thing that I can think of in the Eastern culture.
And it's one of the things that I will definitely not miss when I'm away from home. Thinking about it actually makes me looking forward to the relocation. Guess I'll have to remember that whenever I get homesick.

Wednesday, June 15, 2005

The Microsoft Interview -Part 2

This is in continuation to the earlier post in which I told a part of my story with the Microsoft interviewing process. Basically the phone interview part.

Part 1 ended with me about to have my first real interview on the 30th of August.
My interviewer was to be an SDET team lead on the avalon team.

I went around 20 minutes earlier, waited for my interview. He then came out (10 minutes earlier then scheduled) to take me to the interview room.


Once there he started things up nice and slow with a quick review of the contents of my resume with me giving very brief description for some of the projects when asked.

He then asked me how I would rate my C++ programming skills, out of ten. And then my .Net programming skills. My general advice for you here not to be too cocky. You will soon afterwards get the chance to demonstrate your skills, so you'd better underestimate your skills and let the interviewer find out you're better than you think you are than to raise the bar for yourself and then struggle to meet the expectations.
For C++ for example, just think for a second about what 10 out of 10 means. In my opinion only Stroustrup can claim a perfect 10 out of 10. Putting that in mind I for one would be very doubtful of anyone giving themselves 9, or even 8 out of 10.

Next question was about reflection in .Net. I was asked to define what it was and then how it was made possible (the basic inner workings of the framework). I had no clue at the time of the interview about how reflection was made possible, but I had a very basic idea about reflection. I tried to state what I knew without making stuff up or trying to look more knowledgeable than I am.
I was then asked about "App domains" in .Net. Which I had no idea about. So I stated that I've never even heard of them.
It's hard to say "I have no idea" in an interview but just remember that the MS interviewers (all 6 I've met) are very smart and knowledgable people. I probably can't stress that enough but don't try to make stuff up or lie about your knowledge. It'll be detected and the interviewer will probably go along with you till you hit a dead end. At least that's what I'd do if I was interviewing someone and they bluffed.

And then for the fun part. A white board was just behind me, my interviewer walks me to it and then begins asking coding questions that I'm required to solve using a marker pen and the white board. Some required just illustrating your algorithm for the solutions with discussions about the efficiency of the solution and some required to go all the way till writing working code for solving the problem. I wrote my solutions in C++ but that was probably because I stated that C++ was the language I'm most comfortable with. Plus it gives the interviewer a pool of pointer related problems that's usually good material for interviews.

My coding questions were:
  • What does this C++ macro accomplish:
    #define func(a, b) a ^= b ^= a ^= b
  • How do I delete an element from a singly linked list given a pointer to the node to delete? What are the restrictions on the nodes that can be deleted using that solution?
  • Given an array with integers sorted in ascending order but with duplicates. Write a function to compact the array so that it contains no duplicated. Ideally, the function would take a pointer to the first element in the array (int*) , and the length of the array. It should do the compaction in place (no extra memory allocation) and return the new length of the array. The optimal solution is of O(n) complexity.
  • Write a function to count the bits whose value is equal to 1 in a byte.
I was asked one more question that I can't recall in detail right now. But you get the idea.
In all questions where I was required to write code, a discussion ensued about the various test cases I could test the function with. General advice for testing questions is to be as exhaustive and creative as possible. Work your way starting with the most obvious cases (boundary checks, abnormal parameter values) and up to the most complex cases you can think of or even potential performance issues.

The interview lasted for a little more than 2 hours. I enjoyed every minute of it even though I was very tense and nervous for most of it.
Writing code on a white board with someone watching is not easy at all, try to get all the practice you can before the interview. A good starting point for a ton of information about the MS interviewing process as well as sample questions can be found here.

A couple of weeks later I was informed that I passed my interviews. Which at the moment I thought was the final step. But as it turns out, I should instead get ready for another (and final) round of interviews that were to come some time in January 2005.

So I find myself preparing all over again, this time determined to fill up the "holes" that I discovered during my first interview. Mainly brush up on my C++ knowledge and try to know as much as I could about the .Net framework. Not the syntax and semantics of various .Net languages, but rather the framework features and how it's made possible. This proved very interesting and I'll be listing the resources I used as well the account of my final round of interviews.

So stay tuned.

Sunday, June 12, 2005

The Microsoft Interview -Part 1

Well, I meant to write about this long ago. But the process was so long and I had too much to say that it was painful to even think about writing it all down.
So at last I decide to divide and conquer. Write down as much as I could in one sitting, save it as draft or publish as is if complete enough and call it a part, repeat till the story is over. Sounds good enough.

The specific interviewing process that I am going to describe should be specially helpful to international applicants. I don't know about the process for local (US) applicants, but I would imagine it's pretty much the same.

Also before you read on, I will try to describe the process, and the questions you can expect in an MS interview, but not the answers. Giving out the answers will not help you, me, or Microsoft so there is no good reason I should do it. In what follows everything but factual statements is my own commentary and views on the topic (and thus should be taken with a grain of salt :))

I applied to Microsoft for SDE/SDET positions last july after receiving an email saying they will be coming to Egypt soon looking for candidates. Sent my CV via email and a few days later I received a reply from an MS recruiter arranging for a long distance phone interview to get things started. We arranged a mutually convenient time for the interview and I started my preparations.

The phone interview is the very first step in the process and in my opinion is like a quick "litmus test" for the candidates. Microsoft ideally wants people with passion for whatever they do, and the phone interview is probably aimed at a couple of things:
  • Making sure things you stated in your resume are true.
  • Detecting the passion for what you do.
I was asked to basically describe my career so far, why I chose computer science as a major, and what I like about the field. We also talked about projects I've made/worked on that I'm proud of, and about what in my opinion will be the next big thing in the field.
That particular question is highly subjective and you should not feel obliged to talk about anything Microsoft related. I think the question is just to see if you're up to date with the emerging technologies, which serves to show you have passion for the field and that you're always eager to catch up on new stuff in the incredibly fast-changing IT world. Practical proof of that is that I had a bunch of my friends who had their phone interviews, we all gave very different answers to that same questions, some chose a hardware technology, some chose software, some even chose concepts like mobile computing and we all passed the phone interview. As long as you are not totally clueless, you'll be fine.

The phone interview also included a question about how to test a keyboard/chair/pen/notepad.... etc. You just need to devise creative test cases (in addition to rather normal ones) and scenarios and have an eye for how the thing you're testing will be used in various scenarios and in extreme conditions.

My specific interviews should have included a puzzle question. The thing is that I was always fascinated with puzzles, and hence knew a lot of them. When my interviewer was about to ask me to solve a puzzle she asked me to honestly state if I'd already knew it before so that she changes the question.
She did ask me one that I knew. I stated that I knew it beforehand, so she chose another one, I knew that one too, she chose yet another one and I tell her again that I already knew the answer. She says "Ok then, I'll ask you a question for which there is no specific answer". She then asks me about what I'd do if I had a term paper discussing a chapter from a book to deliver tomorrow, and I went home at 5pm only to find out I didn't even have the book.

This was basically the phone interview, it lasted for around 30 minutes all in all and I was told that I should hear from them again in 2 weeks or something.
I did receive an email later saying that I'd passed the phone interview and that MS is encouraged to go further in the hiring process. A "real" interview was to be set up in Egypt and details about the time and place would be sent to me later when it's closer to the interview date and arrangements had been finalized.
I was later informed that my interview should be at MS Egypt premises on the 30th of August. I patiently wait (all the while preparing) for the interview date.

Things are about to get exciting.

To Be Continued...

Tuesday, June 07, 2005

To Dreams And Dreamers

So today I receive my H1B visa stamp, effective on the 1st of October 2005.

It's a strange feeling.

At times I was told that I'm overly ambitious and that it's going to destroy me. I never saw it that way.
I could always "see" myself realizing my dreams. I never acknowledge an upper bound on them. I deeply believe I can be anything I want to be. I only have to want it bad enough. Even when I was/am seemingly desperate or depressed at times. Deep inside I know it would only be temporary. I could still see the picture. That's what keeps me going.

And I don't want to sound like I've done everything I wanted. I did not. The road is still very long ahead of me. I still have lots of unrealized dreams. But I know that one day they will be.

And I can wait.

It's usually only when you arrive that you realize how much you've enjoyed the trip, almost as much as the arrival at your destination.
And before embarking upon the next journey, I just have to reflect upon what's been done, take a deep breath, and make arrangements for it. That's the way I like to do it.

To dreams, and dreamers. May you all realize your dreams, and more importantly, enjoy the trip.

Monday, June 06, 2005

We're moving :(

So today I learn that my team at work is one of the teams chosen to move to the new building. That's not good news at all.

Let me explain. ITWorx needed more space till they finish adding 2 floors to our 3 floor building. So they rented 2 floors in some building in another part of Nasr City. They say it's a 10 minute drive from the main building in the free zone. I am yet to see it for myself.

The move should happen in 10 days. And while breaking the news to us our team leader told us we could make suggestions for things they could get us in the new building to make the transition easier. Because the main building we're in right now has a ping pong table, a gym, and a cafeteria. The newly rented space is being prepared at the moment and apparently has no enough space for a ping pong table, a gym, or a cafeteria.

So trying to make the best out of a bad situation. I added a PS2, a foosball table, and free soda to the list of requests. We'll see how the bean counters respond to these requests.

I'm very bummed about that move. Relatively very few people are moving so there will not be a lot of company in the new place. We've formed a very nice group the last few weeks and now I'm gonna be left out because I will always be away from the action. I was already sad about the prospect of me leaving in a couple of months for the US relocation, and to think this is happening during those last 2 months that I wanted to spend among everyone I've come to know in the past 3 years. grrrrrrrrr

And I'm gonna miss Nag so much :s