Monday, August 25, 2008

My first Mac



Finally, I broke down and purchased a white MacBook. I made this purchase mainly to do software development on it, and also to use it as a light weight laptop alternative. I have been using a heavy 15.4 inch Dell, which I have been happy with, except for it's size.

My MacBook came with a 2 GB of RAM, 160 GB HD, with a disappointing Intel Graphics Card (Intel GMA X3100). I did not want to get the MBP yet, as this is my first Mac System, so I wanted to ween my self slowly into the world of Apple.

Also, I have installed Vista Ultimate on it using Bootcamp 1.2 and to my surprise, I could not believe how easy the whole process. I am impressed with the performance of Vista running on the MacBook. Right now I am still learning my way around the Mac OS X.

The first applications I have installed so far:
- Office 2008 for Mac
- iPhone SDK
- Firefox
- Live Messenger, and Yahoo Messenger

...and I am still looking to what other applications to install.

Wednesday, July 16, 2008

Symptoms you are addicted to your iPhone


  1. You automatically assume that every screen is a touch screen: Many times I reach to my computer screen to use the same gesture I use on my iPhone to scroll up and down

  2. Can't sleep without it

  3. Can't stop playing with the iPhone even though you already checked everything on it less than 2 minutes ago

  4. You can't stop using the built in stopwatch

  5. You don't let your iPhone ever go out of charge no matter what.

Tuesday, June 03, 2008

Poll: What Feature do you want to see on the 2nd Generation iPhone in additions to 3G Support

Please participate

iPhone 2nd generation wish list

This is what I wish Steve Jobs will announce June 9th for the iPhone 2nd Generation:-
  1. 3G support
  2. Built in GPS
  3. 5 MP Camera
  4. Video Calling, i.e. front camera
  5. Video recording
  6. Stereo Bluetooth support

Six more days from now.

Monday, June 02, 2008

Agile Testing and Test Automation

Agile Testing and Test Automation goes hand in hand; without automated tests, agile testing becomes almost impossible.

Agile testing is all about evaluating software changes as soon as possible and as often as possible during the software release cycle. The key success to agile testing is to automate the tests that are executed most often, and in most cases the smoke test and the priority-1 tests are executed most often.

The way to introduce agile testing in an organization the first step is to put together a plan to move toward the agile testing approach. The plan will need to identify specific tasks and goals in meeting this goal, which is to test early and often.

A plan may look like this:-
  1. Identify system smoke test, and system priority-1 tests.
  2. Automate System smoke test and system priority-1 tests.
  3. Identify area specific smoke test, and area specific priority-1 tests.
  4. Automate area specific smoke test, and area specific priority-1 tests.

In large systems, critical areas within the system gets to be automated first.

The result will be a repository of automated set of tests that will provide evidence that the software is OK from the testing side. Of course, prior to running this tester level automated tests, a set of developer level automated tests is run to provide evidence that the software is OK from the developer side. Both automated tests, tester tests and developer tests are executed together. This what makes agile testing possible.

Wednesday, May 28, 2008

Is Vista a failure?

I am getting sick and tired of reading about how failure Vista is. Vista being late is one thing, but stating that Vista is failure and XP is better, is totally wrong. I have Vista running on four of PCs running in my house and all are running very well. And no I don't have the latest hardware on all four of my PCs

This notion that Microsoft talking about Windows7 indicates Vista failure is also wrong. Microsoft have indicated regardless how success the current OS is that they will have a two year release cycle.

In all these reports that talk about how bad Vista is, never mention any specifics why Vista is a failure. It seems that picking on Vista without providing any details is becoming a popular trend

Multi-touch in Windows 7 demo


Video: Multi-Touch in Windows 7

I love the Mapping Application multi-touch experience, and the piano part is amazing.

Saturday, May 10, 2008

iPhone Arabic support is available now

I just installed it and it appears to be working better than the previous one. The good news it is currently provided for free from iphoneislam. From reading Tariq's blog this will be only available for free for only one month period. So I suggest you install it ASAP.

Sunday, May 04, 2008

Dubai skyline

Forwarded from a friend:
========================================================

An amazing view on one of Dubai 's city skylines.
This picture was not taken from an airplane, but from the world's tallest building:
Burj Dubai @ 2,620 ft / 801m!!!
===================================================================
I drove by Dubai Tower last week at night and definitely it can not be missed from a far distant. Driving through Dubai after four years of leaving was a shocking experience. Starting from the under development Dubai Metro system , The Emirates Mall with the in-door ski, to the massive development along Sheikh Zayed Road.


Tuesday, April 15, 2008

Thursday, April 03, 2008

Using The Microsoft UI Automation Library to Drive UI Automation

The UI Automation Library is included in the .NET Framework 3.0. The concept seems to be straightforward. Every UI control is an "AutomationElement" which can be found through searching from the Parent "AutomationElement". The top AutomationElement is defined as the "RootElement", which is the Desktop. Another way to get the AutomationElement Object to a given Window is by starting a "Process", and then using the Process MainWindowHandle to get the AutomationElement object.

The code shown below is basically a test that Invoke Notepad, Enters an input text, and then it compares with the text which is read from Text property of the Notepad Text Field, and then closes Notepad without saving.
using System;
using System.Windows.Automation;
using System.Diagnostics;
using System.Threading;
using System.Collections.Generic;
using System.Text;

namespace UIAuto_01
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Starting Notepad!!!");

// #1 Start Notepad
//
Process notepadProcess = Process.Start("notepad.exe");
Thread.Sleep(500);
AutomationElement aeDesktop = AutomationElement.RootElement;

// #2 Find Notepad
//
AutomationElement aeNotepad = AutomationElement.FromHandle(notepadProcess.MainWindowHandle);

if (null == aeNotepad)
{
throw new Exception("Notepad not found!");
}
Console.WriteLine("Found Notepad !!!!");

// #3 Find Notepad Text Field Control
//
AutomationElementCollection aeAllTextBoxes =
aeNotepad.FindAll(TreeScope.Children,
new PropertyCondition(AutomationElement.ControlTypeProperty,
ControlType.Document));

if (0 == aeAllTextBoxes.Count)
{
throw new Exception("Notepad Edit field not found!!");
}

Console.WriteLine("Found Notepad Edit Field!!!!");

AutomationElement aeNotepadDoc = aeAllTextBoxes[0];

// #4 Type the input value
//
aeNotepadDoc.SetFocus();
string InputValue = "Hello World!";
System.Windows.Forms.SendKeys.SendWait(InputValue);

// #5 Get the Text from the Text Field
//
TextPattern tpNotepadDoc = (TextPattern)aeNotepadDoc.GetCurrentPattern(TextPattern.Pattern);
string ActualValue = tpNotepadDoc.DocumentRange.GetText(-1).Trim();

// #6 Compare input and actual
//
if (ActualValue == InputValue)
{
Console.WriteLine("Test Passed!");
}
else
{
Console.WriteLine("Test Failed: Expected={0} Actual={1}", InputValue, ActualValue);
}

// #7 Now close Notepad
//
WindowPattern wpNotepad = (WindowPattern)aeNotepad.GetCurrentPattern(WindowPattern.Pattern);
wpNotepad.Close();

// #8 Find The Save, Don't Save, Cancel Dailog
//
AutomationElement aeSaveDailog = findElement(aeNotepad, "Notepad", 10);
if (null == aeSaveDailog)
{
throw new Exception("Notepad Save dailog was not found!");
}

// #9 Find the "Don't Save" button and Click it
//
AutomationElement aeDontSaveBtn = findElement(aeSaveDailog, "Don't Save", 10);
if (null == aeDontSaveBtn)
{
throw new Exception("Notepad Don't Save Button was not found!");
}
InvokePattern ipDontSaveBtn = (InvokePattern)aeDontSaveBtn.GetCurrentPattern(InvokePattern.Pattern);
ipDontSaveBtn.Invoke();

// #10 Done
//
Console.ReadLine();
}

// Returns a Automation Element based on the parent AutomationElement, and caption.
//
private static AutomationElement findElement(AutomationElement parent, string caption, int timeout)
{
AutomationElement aeNew = null;
int numWaits = 0;
do
{
aeNew = parent.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty, caption)
);
++numWaits;
Thread.Sleep(100);
} while (aeNew == null && numWaits < timeout);
return (aeNew);
}
}
}

Wednesday, April 02, 2008

iPhone full Arabic support is here



Requirements:
1- Firmware version 1.1.3/1.1.4
2- Arabic Keyboard setup following instructions provided by Tariq @ http://www.iphoneislam.com/
Setup instructions:
1- Add the following Source in your Installer. This can be done by going to the Sources Tab, and selecting the Edit button. Then, type the following URL in the source field: http://repo.aakqtr.com/
2- After the sources are refreshed, navigate to BiOsS Modz category in the Install Tab, and select: iPhone Arabizer 1.0 and choose Install.
3- Reboot the Phone
4- At this point Safari can render the Arabic text to any Arabic website, Email, Contacts, and Calander also support Arabic text at this point
5- Go to Settings > General > International > Language: and choose Arabic (this will change your UI Language)
6- Go to Settings > General > International > Region Format and Select Arabic and the Country.
Now you have Full Arabic support in the iPhone.

Friday, March 07, 2008

iPhone SDK Announcement: SEGA on the iPhone


From what was presented on the special keynote the SDK looks promising. The only bad part the entire toolset are native Mac OS tools, no Windows.


The most impressive thing is the SEGA game that was developed in two week period using the SDK, and the comment about the quality of the game is console quality not cell phone quality.