Sunday, December 27, 2009
Citizen Satisfaction
Customer relationship it that thing that makes your customer fell as if he is talking to a friend and not just a service provider or a seller. Some peoples are great in that, they are building strong relations with peoples in general and with customers specially. But how to achieve that as a company? This is the questions that every manager should answer by himself! But there are tips and tools that may help; one of them is the Customer Relationship Management applications, like Microsoft Dynamics CRM, Siebel CRM, SAP CRM and SalesForce that will help you a lot by making a profile to your customer and store all the information that you will need on the right time, in the right place and to the right person.
Customers are sometimes just buyers to a product like a television or a mobile, or may be peoples that are using your service like hosting a web site or washing their cars. Patients are the doctors' and the hospitals' customers, students or the parents are the customers of a school or a university.
One of the great samples that my company delivered is the Citizen Relationship Management, as the citizen is equals to customer from the government side view, and satisfying the customer – citizen – is one of the challenges that face all the governments, and building strong relation with the citizens will build the needed trust between the two sides.
The same must be there between a company and the customers. As a customer I should call the customer service any time to find that the representative knows whom am I and when was my last call and what was the problem and if it is solved or not.
Managers should view the reports that displays the numbers/percentages of the problems that needs to be solved and the average response time, and can dig into the details for a certain customer to see his satisfaction level. Hopefully our Citizen Relationship Management in Egypt used so that our ministers know how much the citizens are satisfied from their ministry and its services.
Saturday, November 14, 2009
Updating content type's and site column's group name using PowerShell
Making backup from your site is recommended.
1. First you need to have PowerShell installed on your server.
2. From the CMD, type Powershell then Enter
3. Import the SharePoint Assembly by typing [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
4. Create a site object from your site where the columns and the content types
$site = new-object Microsoft.SharePoint.SPSite(“http://cairo:4000”);
6. Update the Content Type group title
$site.rootweb.contenttypes[“TheContentTypeName”].Group = “TheNewGroupTitle”; $site.rootweb.contenttypes[“TheContentTypeName”].Update($true,$true);
8. Update the Site Column group title
$site.rootweb.Fields[“TheColumnName”].Group = “TheNewGroupTitle”; $site.rootweb.Fields[“TheColumnName”].Update();
10. Exit PowerShell
11. Test the related modules.
Wednesday, November 11, 2009
Silverlight Organization Chart - Part 3 - The Node
In this post, please note that I’m using the “Silverlight Hebrew & Arabic Language Support” library.
My XAML file will look like that:
<UserControl xmlns:my="clr-namespace:System.Windows.BidiControls;assembly=BidiControls" xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input" x:Class="OrgChart.NodeBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="140" Height="80">
<Canvas x:Name="canvMain" MouseEnter="canvMain_MouseEnter" MouseLeave="canvMain_MouseLeave">
<Rectangle x:Name="recBorder" RadiusX="5" RadiusY="5" Stroke="CornflowerBlue" StrokeThickness="2">
<Rectangle.Fill>
<SolidColorBrush Color='#f2f3fd' />
</Rectangle.Fill>
</Rectangle>
<my:TextBlock TextAlignment="left" x:Name="tbEmployeeName" Width="130" Height="20" Foreground="Black" Canvas.Left="5" FontWeight="Bold"></my:TextBlock>
<my:TextBlock TextAlignment="left" x:Name="tbTitle" Width="130" Height="20" Foreground="Black" Canvas.Left="5"></my:TextBlock>
<my:TextBlock TextAlignment="left" x:Name="tbDepartment" Width="130" Height="20" Foreground="Black" Canvas.Left="5"></my:TextBlock>
<my:TextBlock TextAlignment="left" x:Name="tbExtension" Width="130" Height="20" Foreground="Black" Canvas.Left="5"></my:TextBlock>
<Canvas.Resources>
<Storyboard x:Name="mouseEnter">
<ColorAnimation
Duration='00:00:01'
To='#ffffcc'
Storyboard.TargetName='recBorder'
Storyboard.TargetProperty='(Shape.Fill).(SolidColorBrush.Color)' />
</Storyboard>
<Storyboard x:Name='mouseLeave'>
<ColorAnimation
Duration='00:00:00'
To='#f2f3fd'
Storyboard.TargetName='recBorder'
Storyboard.TargetProperty='(Shape.Fill).(SolidColorBrush.Color)' />
</Storyboard>
</Canvas.Resources>
</Canvas>
Where you will find a reference to the BidiControls for the Arabic support, a canvas with a border and four TextBlock to display the Name, Title, Department and the Extension and the values are assigned from the properties in the code behind.
Also there are two storyboards to change the background color on mouse hover.
The code behind will look like that:
namespace OrgChart
{
public partial class NodeBox : UserControl
{
private double _fontSize = 10;
public NodeBox(double scale)
{
_Scale = scale;
InitializeComponent();
tbEmployeeName.FontSize = _fontSize * Scale;
tbEmployeeName.SetValue(Canvas.TopProperty, 5 * scale);
tbEmployeeName.SetValue(Canvas.LeftProperty, 5 * scale);
tbEmployeeName.Height = 20 * scale;
tbEmployeeName.Width = 130 * scale;
tbEmployeeName.TextWrapping = TextWrapping.NoWrap;
tbEmployeeName.Clip = new RectangleGeometry() { Rect = new Rect(0, 0, 130 * scale, 20 * scale) };
// the same for all the controls on the canvas
}
// Control Properties to set the TextBlock Values
}
}
Where font size, width, height, the location and the clip area of each TextBlock must be adjusted based on the scale. Also the node border must be adjusted, the rounded corner radius and the thikness and the dimentions:
recBorder.StrokeThickness = 2 * scale;
recBorder.RadiusX = 5 * scale;
recBorder.RadiusY = 5 * scale;
recBorder.Width = this.Width * scale;
recBorder.Height = this.Height * scale;
Our next step will talk about drawing the nodes and the lines on the main control.
Sunday, November 01, 2009
Backup with DateTime
Use this command in your batch file:
stsadm -o backup -url http://siteurl -filename sitename%date:~-4,4%%date:~-10,2%%date:~-7,2%-%time:~0,2%%time:~3,2%.dat
This will make the command as:
stsadm -o backup -url http://siteurl -filename sitename20091101-1159.dat
Where: 20091101 is the date yyyymmdd, and 1159 is HHMM
Update: running this script before 12 PM will render with space not a zero, so add these lines
SET T=%time:~0,2%%time:~3,2%
SET T=%T: =%
which will replace the empty space
stsadm -o backup -url http://siteurl -filename sitename%date:~-4,4%%date:~-10,2%%date:~-7,2%-%T%.dat
Silverlight Organization Chart – Part 2 – Calculations
Point 1: Prepare the data
In this point we will start with the root node, and go to the child nodes then the sub child and so on. We need to set the level for each node, and the number of opened and closed sub nodes, also we will set the sub nodes order and the default allowed width for the second level. Also the total height will be calculated.
private void SetLevel(Person parent, int level)
{
// Set the node level
parent.Level = level;
// Calculate the total height based on the number of levels
if (totalHight < levelHight * (level + 2))
{
totalHight = levelHight * (level + 2) ;
MyCanvas.Height = totalHight;
}
// Select the closed items under this parent
var resultN = from n in persons
where n.ManagerID == parent.ID && n.Opened == false
select n;
Person[] nodesN = resultN.ToArray();
// Get the closed nodes number
parent.HiddenSubNodes = nodesN.Length;
// Select the opend nodes under this parent
var result = from n in persons
where n.ManagerID == parent.ID && n.Opened == true
select n;
Person[] nodes = result.ToArray();
// Get the Opend nodes number
parent.SubNodes = nodes.Length;
// Call the child nodes
for (int i = 0; i < nodes.Length; i++)
{
nodes[i].NodeOrder = i + 1;
nodes[i].MinChildWidth = buttonWidth + minHorizontalSpace;
SetLevel(nodes[i], parent.Level + 1);
}
}
Point 2: Calculations
In this point we will need to:
1. Calculate the width for each node based on the opened sub nodes. As you can see in the image, the minChildWidth for the blue node is not the same as the default.
2. Calculate the StartX for each parent node.
3. Calculate the X coordinate for each node based on the StartX of the parent and the node order.
4. Realign the parent node to be centered in the space allowed for its sub nodes.
private void CalculateWidth(Person parent)
{
if (parent.SubNodes > 0)
{
var result = from n in persons
where n.ManagerID == parent.ID && n.Opened == true
orderby n.NodeOrder
select n;
Person[] nodes = result.ToArray();
double minWidth = 0;
for (int i = 0; i < nodes.Length; i++)
{
CalculateWidth(nodes[i]);
minWidth = minWidth + nodes[i].MinChildWidth;
}
if (minWidth > parent.MinChildWidth)
{
parent.MinChildWidth = minWidth;
if (MyCanvas.Width < minWidth)
{
MyCanvas.Width = minWidth;
totalWidth = minWidth;
}
}
// Calculate the startX for each node
double start = parent.StartX;
for (int i = 0; i < nodes.Length; i++)
{
nodes[i].StartX = start;
nodes[i].X = nodes[i].StartX + nodes[i].MinChildWidth / 2;
CalculateWidth(nodes[i]);
start = start + nodes[i].MinChildWidth;
}
// realign the parent node to the middle of the child nodes
if (nodes.Length > 1)
{
parent.X = (nodes[0].X + nodes[nodes.Length - 1].X) / 2;
}
else // root element
{
parent.X = nodes[0].X;
}
}
}
After that we will just need to draw the nodes, we have the X coordinate and we have the Y Coordinate with can be calculated from the level multiplied by the level hight.
Tuesday, October 27, 2009
IE8 Cool ... حركات IE8
And the prizes for winners in the competition are:
1st Winner: Tech-Ed Middle East March 1 – 3 Dubai
2nd Winner: HTC HD2
3rd Winner: Xbox 360 Elite System
I have already some ideas, but if anyone can help me to go to Tech-Ed ME? :)
For more info about the competition visit the Facebook group
Monday, October 26, 2009
Silverlight Organization Chart – Part 1 – Read XML file
I’ll not go in details of how to create a Silverlight application; you can see these details here.
In my organization chart I make option either to read the nodes from XML file for read them from a web service (reading the data from Active Directory), I’m here will just talk about the XML file.
Point 1: the XML file
My XML file looks like this:
<?xml version="1.0" encoding="utf-8" ?>
<Persons>
<Person>
<ID>1</ID>
<Name>Mostafa El Mashad </Name>
<Title>CEO</Title>
<Department> </Department>
<Extension>1111</Extension>
<Email>mostafa.elmashad@domain.com</Email>
<ManagerID></ManagerID>
</Person>
<Person>
<ID>2</ID>
<Name>Ahmed Sadek</Name>
<Title>HR Manager</Title>
<Department>HR</Department>
<Extension>1200</Extension>
<Email>Ahmed.sadek@mydomain.com</Email>
<ManagerID>1</ManagerID>
</Person>
<Person>
<ID>3</ID>
<Name>Hanan Youssef</Name>
<Title>Sales Manager</Title>
<Department>Sales</Department>
<Extension>1300</Extension>
<Email>hanan.youssef@mydomain.com</Email>
<ManagerID>1</ManagerID>
</Person>
</Persons>
and you can add as much as person nodes as you want.
Where:
ID: Is the identity of this person
Name: The person name
Title: His job title
Department: The department he is working in
Extension: Phone extension
Email: his email address
ManagerID: The identity value used in his manager data
In our example:
Mostafa – the CEO – he has no manager, so the ManagerID is blank
Hanan and Ahmed are reporting to Mostafa, so the ManagerID equal 1, which is Mostafa’s ID
Note: this XML file will be deployed with the XAP file at the end.
Point 2: The Person class
I’ll need to make a class to represent the Person object, and while reading the data from the XML file I’ll put it in an list of Persons.
public List<Person> persons = new List<Person>();
Also I’ll need some extra data to be stored with each person, like:
Level : The person level, in our example, Mostafa #1, Ahmed and Hanan #2
SubNodes: How many person are reporting to the current, 2 are reporting to Mostafa
HiddenSubNodes: The same as the SubNodes in case the node is not collapsed.
NodeOrder: The order of this node between the same level under the same parent
MinChildWidth: The display minimum width allowed for the child nodes
X: The X coordinate of the node on the screen, the Y position is calculated from the node level
StartX: The parent X
Opened : is this node displayed or not
Collapsed: Is this node’s child are displayed or not
Point 3: Reading the XML file
In the page load of my Silverlight control, I’ll call the method that will read the XML file:
private void LoadXMLFile()
{
WebClient xmlClient = new WebClient();
xmlClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(XMLFileLoaded);
xmlClient.DownloadStringAsync(new Uri("OrgChart_Data.xml", UriKind.RelativeOrAbsolute));
}
void XMLFileLoaded(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
Person firstNode = Person.GetPerson("OrgChartRootNode", "LINK Development", "", "", "", "", "");
firstNode.MinChildWidth = totalWidth;
persons.Add(firstNode);
XElement lobjDocument = XElement.Parse(e.Result.ToString());
var Result = from view1 in lobjDocument.Descendants("Person")
select new Person
{
Name = (string)view1.Element("Name"),
ID = (string)view1.Element("ID"),
ManagerID = (string)view1.Element("ManagerID"),
Title = (string)view1.Element("Title"),
Department = (string)view1.Element("Department"),
Extension = (string)view1.Element("Extension"),
Email = (string)view1.Element("Email")
};
Person[] nodes = Result.ToArray();
for (int i = 0; i < nodes.Length; i++)
{
if (string.IsNullOrEmpty(nodes[i].ManagerID))
{
nodes[i].ManagerID = "OrgChartRootNode";
}
}
persons.AddRange(nodes);
Start();
}
}
Here in my control, if any node did not has a ManagerID value, I’ll consider it as a parent node just under the organization root element.
In the last line of code, you will see a call to a Start method, which will start calculating and building the organization chart nodes. And we will talk about the calculations in a separate post soon isA.
Saturday, October 24, 2009
Otlob.com on mobile
Another problems that is facing me while using Otlob web site in KSA is the address, as still in KSA there is no accurate addresses in many places, and for each address I want the food to be delivered to I have to make a profile, while in some places I don’t know what is the address but I can just describe it.
A lot of people come to KSA to do some tasks and then return back to their countries, and those are the most people whose needs to order fast foods, they did not have time, and they may not have any internet access to browse the Otlob website.
A mobile application (not a mobile website) is a good idea for this scenario, the user will download the application from the net, and he can select which restaurants he wants to download its menus. He can check this menu while he is in the taxi and offline for example.
He can also just check for the menu and go directly to the restaurant, but he knows already what the menu is and what are the prices, he may select to “prepare the order for me” service, to be able to go and eat it before the prayer time. He can also pass through and take it home.
For the addresses, GPS became available in every mobile, so the user can set an order and select to receive it in the location where he is now. He doesn’t need to make a new profile for these addressees, as he may be today in Riyadh and tomorrow in Jeddah and so on.
Preferred orders, will be much easier, as the mobile will display a reminder “Do you want to make the order now? It will be delivered after one hour”, he can select “Just prepare it for me, I’ll be there before the prayer time to take it home.”
Just ideas. And that is what I want from a mobile application.
What do you think? any ideas?
Friday, October 23, 2009
SharePoint4Arabs
Till now, they are focusing on the end user; for example: What is SharePoint, how to make a site columns, content types, and managing site security.
I started with them by recording my first video “SharePoint Pages” talking about the Basic and the Web Part Pages, the related content types and its page layouts. And there will be soon another video that is talking about the “Publishing Pages” then “SharePoint MasterPages” and “Page Layouts” that will be in Arabic as well isA.
Hopefully this series help in introducing SharePoint to Arabic audience and give them their first step on using, customizing, managing SharePoint sites.
Thursday, October 22, 2009
Waiting for SharePoint 2010
But the good thing is that there is Development Hands-on Labs since the second day in the conference http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c010fc68-b47f-4db6-b8a8-ad4ba33a35c5
Besides, there are ten modules to start developing on SharePoint 2010 http://msdn.microsoft.com/en-us/sharepoint/ee513147.aspx
As well, there will be a group of SharePoint 2010 courses (webcasts/offline) in December by a group of SharePoint MVPs (Andrew Connell is one of the instructors) http://www.andrewconnell.com/blog/
And today I have attended the Riyadh Community Summit, an event sponsored by Microsoft KSA and organized by three user groups in Riyadh:
1. Riyadh SharePoint User Group – http://www.rsug.net/
2. DevLifeStyle - http://www.devlifestyle.net/
3. CΏdeβettěЯ - http://www.codebetter.net/
The event was at Al Yamamah University where all the software events are currently happened there.
And it was really good to listen to someone talking about SharePoint 2010 at the same time as in #SPC09 (GDC09 will be in Riyadh isA 13-15 December)
BTW, at the end of today’s sessions, the two persons that were sitting beside me on both sides have won a 1 year access to http://www.microsoftelearning.com/ and for me I have received a book “Object Thinking” http://www.amazon.com/Object-Thinking-DV-Microsoft-Professional-David/dp/0735619654
Wednesday, October 21, 2009
Nice !!!
This is the word that my son – 2 years - learned to say while patting on the cat; his mom told him to be nice with the cat and showed him how to pat smoothly, but he understand it as “pat a cat” = “Nice”.
http://www.facebook.com/photo.php?pid=8907036&id=610370569
Nice #2:
But I saw the word “Nice” in a blog, it was in the comments, and it was repeated many times plus some other words like “Extremely Interesting” and “Just Great”. I was happy to see these comments as the blog is related to a friend and a colleague and it was just his second post, but one comment stopped me, which is “You made some good points there” while the post was just a link to another website with two lines describing this link!
I started to check, who add this comment and I found that his name is redirecting to a loans website, and the surprise was that some other comments are added by the same user (same site URL) and most of the comments are added by someone just want to increase the number of the sites that referring to his site!
Nice #3:
I have received a link to http://www.personalizemedia.com/ in this page you will find a flash object with numbers that are changed so fast. It is the social media counter, it shows you how many new Twitter user, or how many video are watched now on YouTube, or how much Facebook collected from the Gifts. The user who post the article said that you can embed this counter in your site like this:
Very Nice!!!
But the first thing that I thought about is the number of hits to all this information sources; take into consideration that ANYONE can embed it anywhere, which means that extra number of hits; also it was very strange that this person know how to read all these updated information and with this high frequency, instantly I switched off my wireless connection, but the numbers still increasing!
Then I returned back to read and I found a link to the details page http://www.personalizemedia.com/garys-social-media-count/#more-1734 that his numbers are calculated based on facts, and not a real numbers.
Monday, October 19, 2009
SharePoint 2010 - Day 1
Well, I just realized the importance of twitter, it is great, and people there are wearing shirts and hats with their Twitter ID on it, but some users are describing this as cacophony, but for me it is really interesting.
But actually I’m not going to talk about Twitter more than that, as I have to focus on SharePoint which I’ll work on isA and I have to manage some projects before they came up with the new versions - I’m sure it will be very soon.
SharePoint 2010 comes up with a lot of changes and new features; the most thing that disappointed me is the new Silverlight Organization Chart. So, what can I do now with my Silverlight OrgChart? :(
Now my plan is to:
1. Send email to my boss requesting some new Laptops and PCs for me and for my team. Check this link http://blogs.msdn.com/opal/archive/2009/10/19/sharepoint-2010-what-does-that-mean-for-it-pros.aspx
2. Start reading and studding SharePoint 2010 – check this http://blogs.msdn.com/sharepoint/archive/2009/10/19/sharepoint-2010.aspx
3. SharePoint Designer 2010 – it will be free the same as 2007 – check this http://willhlaw.wordpress.com/
4. Visual Studio 2010
5. .NET 4.0
6. Silverlight
7. More XSLT
8. More LINQ
9. PowerShell
10. …..
11. …..
12. …..
13. …..
Now what? It is the same as changing the study courses each year in the school “Sorry, but you must start again from KG1, everything is changed!” and with every new version we hear people say: “we will not find anything to do, the new application will do everything, and we will lose our jobs”, but actually with every new software and new programming language there are much more things to do, and I’m really excited to start developing with the new things.
But before developing, we have to support our sales team to bring new projects to be done over the new SharePoint, and as I’m working in KSA office, I think it is one of my tasks and it will start very soon isA.
Saturday, October 17, 2009
20 Years Ago...
My PC was a 386 with only 1 MB ram, 1 floppy 5.25” (360 Kb, 1.2MB), floppy 3.5” (720 Kb, 1.44 MB) and a hard disk of 40 MB (I did not hear that any of my friends or relatives had larger than the 40 MB for another two years) this is how I started my life on computers, and it was something that our brains can accept bit by bit, but now things are changed and changed again two or three times without even hearing about the changes in between.
Today, it is a human right in Finland to have a broad band connection 1MB, you can access the internet anywhere via your mobile, but 15 years ago I was sharing the same internet password with 10 of my friends (only one user can log in at a time)
One MB email inbox, now I don’t know what is the used or the available space on my Gmail account.
I do not remember how many students from my school growing up had a computer at home they may have been 4 or 6 (not Atari or Shakhr) but now there are 600k new user registrations on Facebook every day!!
20 years ago, it was a fact that there is something named Magnetic Field and nothing about the Magnetricity, now Facebook, Twitter, LinkedIn,… are facts, and accept it or not, you are in the Google Age!
Tuesday, October 13, 2009
فتحي رضوان : مبادئ مصطفى كامل
قصة الغلاف : مبادئ مصطفى كامل
قال الملك السابق لوزرائه: "لو أفرجتم عنه ... فإنه سوف يقتلني"
فلقد كانت قضايا "الاغتيالات" هي القاسم المشترك الأعظم في حساة ذلك الشاب اللذي يخفي ثورة جيل كامل وراء ذلك الهدوء العجيب الذي معدنه .. ووراء هذه الابتسامة البريئة الحلوة التي ترتسم دائما على شفتيه وكأنها صادرة من أعماق قلبه .. ووراء تلك الشعيرات البيضاء التي تكلل هامته كما يكلل الثلج قمم الجبال العالية على الرغم من أنه لا يزال في الحادية والاربعين من عمره.لقد اتهم فتحي رضوان و اعتقل في أكثر من ست قضايا للاغتيالات منها محاولة اغتيال مصطفى النحاس واغتيال أحمد ماهر واغتيال النقراشي و اغتيال أمين عثمان.
فمن يكون فتحي رضوان؟
شرقاوي
لقد ولد في 14 مايو 1911 في المنيا وكان والده مهندس ري المنيا .. أما جده فقد كان ضابطا في الجيش التركي أحيل على التقاعد عندما بلغ السن القانونية ثم هاجر وتزوج من سيدة مصرية، وعاش حياته في بلدة المنير بالقرب من مدينة القناطر.
وفي هذه القرية اشترى قطعة من الارض بمعاشه ، كان يفلحها ويزرعها بنفسه ثم يوزع الايراد على القرويين ولذلك أحبه الفلاحون و أصبحوا يحاكمون إليه في منازعاتهم ومشاجراتهم ويقبلون حكمه.وعندما مات اعتبروه وليا من أولياء الله الصالحين وشيدوا له ضريح لا يزال قائما حتى الآن ويعرف بإسم "ضريح الشيخ عثمان" ثم راحوا يحتفلون كل عام بمولده.
السيد فتحي
واسم وزير الدولة في شهادة الميلاد هو "السيد فتحي" .. ولذلك قصة طريفة فقد كانت والدته تتمنى من الله أن يرزقها بمولود ذكر، و في إحدى الليالي رأت في الرؤيا السيد البدوي و هو يحمل طفلا بين يديه قدمه إليها وقال لها: "سترزقين بولد .. فسميه فتح الله" فتفاءلت الام بهذه الرؤيا و ارادت ان تجمع بين اسم السيد البدوي و بين الاسم الذي ذكره لها في الرؤيا فسمته "السيد فتحي"
ومنذ اليوم الاول لميلاد فتحي رضوان وهو فريسة عدة امراض، فقد توالت عليه معظم الادواء فأصيب بالتيفود و الديفتريا والجدري والحمى القرمزية والروماتيزم.
وكان والده – وهو لا يزال حتى الآن في قيد الحياة – كثير التنقل بين مديريات الوجه القبلي شأنه في ذلك شأن الموظفين الآخرين .. و أخيرا عين في مديرية الجيزة "باشمهندس" للري .. فأقامت الاسرة الصغيرة – وكانت تتكون من ولد واحد هو فتحي رضوان و ثلاثة بنات – في منزل صغير في حي السيدة زينب تملكه بريمادونة مصر في ذلك الوقت "امليا ديان" المشهورة باسم "مليا" وكانت هي الممثلة الاولى في فرقة الشيخ سلامة حجازي.
وكانت اسعد اللحظات في حياة الطفل فتحي رضوان هي تلك اللحظات التي كانت تحضر فيها "مليا" بنفسها لتتسلم ايجار الشقة وتدعو الاسرة في بعض الاحيان إلى مسرح سلامح حجازي أو تجلس "لتدردش" عن نهضة المسرح وتاريخه وعن سلامة حجازي وفنه.
مصطفى كامل
و سمع فتحي رضوان عن مصطفى كامل لأول مرة في مدرسة الجمعية الأهلية المصرية ، و كان ناظرها "محمود أنيس" أحد الذين اتهموا في قضية اغتيال بطرس غالي بالاشتراك مع الورداني و لكن التهمة لم تثبت عليه فأفرج عنه المستشار متولي غنيم لانه لم يجد وجها لاقامة الدعوى ضده. ولكن الحكومة فصلت محمود انيس ففتح هذه المدرسة الأهلية ، ولما كان انيس صديقا حميما لوالد فتحي رضوان فقد ألحق بها نجله تشجيعا لصديقه، وكان ناظر المدرسة محمود أنيس ينتهز كل عام فرصة نهاية العام الدراسي فيقيم حفلا وطنيا كبيرا ويخطب فيه في الطلبة ويتحدث عن مزايا مصطفى كامل وعن دوره في الحركة الوطنية.
ثورة 1919
وعندما بدأت ثورة 1919 كان فتحي رضوان في السنة الاولى الابتدائية بمدرسة محمد علي.
إنه ما زال يتذكر ذلك اليوم الذي دخلت فيه اخته المنزل وهي تنشج بالبكاء فسألتها أمها: ماذا حدث؟
فقالت أخته: لقد أهانتني ناظرة المدرسة مسز كارتر الانجليزية .. كم كنت أود أن أصفعها.
فقالت لها أمها: ماذا قالت لك؟
قالت لي انك تلميزة مشاغبة ومن الافضل فصلك لانك تريدين أن تشعلي نار الثورة في المدرسة وانك بذلك تعرضين نفسك للطرد والفصل.
وماذا قلت لها؟
قلت لها.. أن وطني يجئ في المرتبة الأولى وأنه في حاجة إلى جميع مجهوداتنا .. أما أنت .. فاذهبي إلى وطنك واحتفظي بوعيدك ونصائحك لنفسك.
أعتقال
ويقول فتحي رضوان: وراحت انباء الثورة تتواتر إلى سمعي .. اعتقالات في كل مكان .. رصاص .. ثورة .. مدافع .. دماء .. اعتداءات من الانجليز على الارواح البريئة .. قطع خطوط السكة الحديد.
ولكني تعلمت دور الوطنية الاولى من المنزل .. بل من أمي بالذات .. كنت أعود من المدرسة .. فأجدها متجهمة الوجه .. ثائرة الأعصاب .. و في أحد الايام قالت لي أمي: يا فتحي .. ناد اخواتك و تعال.
وعندما عدت بعد لحظات مع شقيقاتي الثلاث ، وجدت أمي تجلس على أحد المقاعد وأمامها سلة كبيرة مغطاة ، وما كادت ترانا حتى قالت: هل أنتم جميعا هنا اجلسوا حولي.
ثم رفعت أمي غطاء السلة وأخرجت منها مجموعة من جريدة اللواء وبدأت تقرأ في صوت مرتفع خطب مصطفى كامل ومقالات مصطفى كامل.
و في إحدى الامسيات عدت إلى المنزل متأخرا فوجدت شقيقاتي وأمي وهن ينتحبن في صوت مسموع وأمامهن جريدة اللواء، وارتعدت لهذا المنظر فقلت في سذاجة: أمي .. ماذا حدث .. هل مات أحد؟
فقالت أمي: أجلس يا بني .. اني اقرأ لشقيقاتك وصف جنازة مصطفى كامل!
النشاط الأول
وفي المدرسة الابتدائية التقى فتحي رضوان بأحمد حسين .. وقاما بأول نشاط .. فلقد انشآ بالاشتراك مع عباس حلمي – وهو الآن بكباشي بالبوليس – جمعية أطلقوا عليها اسم "نصر الدين الاسلامي" وكانت هذه الجمعية تطبع منشورات وتوزعها على الطلبة وعلى رواد المقاهي تدعو فيها الناس إلى التقوى والولرع والعمل الصالح.
وفي أحد الايام استدعى ناظر المدرسة - وكان اسمه محمد توفيق البرادعي – أعضاء هذه الجمعية وهددهم بالفصل إذا لم يكفوا عن طبع هذه المنشورات، ومن الطريف أن أحمد حسين وفتحي رضوان لم يحاولا أن يدفعا تهمة توزيع المنشورات عن نفسيهما ، بل دافعا عن فكرة الجمعية وعن أهدافها ومراميها .. في الوقت الذي تخلى فيه أعضاء الجمعية عنها و القيا عليهما كل المسئولية. و كان هذا أول اصطدام بين فتحي رضوان والسلطات المختصة بخصوص المنشورات التي تدعو إلى فكرة معينة.
التلميذ الصحفي
وفي مدرسة أسيوط برز فتحي رضوان كصحفي، فقد دعا الطلبة إلى اصدار مجلة للمدرسة على غرار مجلة الخديوية والسعيدية.. فكانت بذلك أول مجلة لمدرسة أقليمية خارج القاهرة.
كما كتب أول مقال له في جريدة اللواء المصري التي كان يصدرها الاستاذ أمين الرافعي عام 1925 وكان المقال حول تنقيح البرامج المدرسية وهو البرنامج الذي وضعه "علي ماهر" وزير المعارف في ذلك الوقت.
وكانت أول محاضرة القاها فتحي رضوان عن داروين ومذهب التطور في جمعية القلم التي كان يرأسها الاستاذ حافظ محمود.
حادث طريف
وقد حدث أثناء هذه المرحلة التي قضاها فتحي رضوان في مدرسة بني سويف أن قام الملك فؤاد بزيارة لمدارس الوجه القبلي .. و كان ضمن برنامج الملك زيارة مدرسة أسيوط. فانتدبت المدرسة فتحي رضوان لالقاء قصيدة عصماء من تأليف الاستاذ علي الجارم مفتش اللغة العربية في ذلك الوقت أمام الملك. وكان مطلع القصيدة:يا مالك ملك القلوب .. فكان خير المالكين.
و كان مقررا في الحفلة أن يزور الملك فؤاد الفصول .. ثم يقف في الشرفة الكبيرة المطلة على فناء المدرسة فيستعرض فرق الالعاب الرياضية والكشافة .. ثم ينزل الدرجات العريضة للشرفة .. وعنئذ يشق فتحي رضوان صفوف طلبة الالعاب الرباضية .. وعلى بعد خمسة أمتار من الملك يلقي القصيدة.
والذي حدث أن زيارة الفصول استغرقت أكثر من الوقت المحدد لها وبدأت الشمس تميل إلى المغيب والملك يستعرض الفرق الرياضية .. فما كادت الالعاب تنتهي حتى أسرع الملك في الخروج.
ولاحظ فتحي رضوان ذلك وكان حريصا على إلقاء القصيدة فخرج يعدو وراء الملك .. وكان من عادته وهو يجري أن يضع يده في جيبه و يخرج منديلا ابيض اللون .. ولكنه في ارتباكه هذه المرة وضع يده في جيبه ولم يخرجها .. فاعتقدت حاشية الملك أن فتحي رضوان يحاول ان يغتال الملك أو انه على الاقل اعتزم القيام بعمل ما. وصرخ ناظر المدرسة – وكان اذ ذاك الاستاذ محمد رفعت – وقال للمدرسين: ماذا يريد هذه الولد .. امنعوه. وقبل أن يمنعوه كان الطالب فتحي رضوان على بعد متر واحد من الملك والورقة ترتعش بين إصبعه وهو يقول: يا مالك ملك القلوب ....
مقلب
ومما يذكر أيضا ان الاستاذ لطفي السيد – وكان وزير المعارف وقتئذ – جاء لزيارة المدرسة .. و تفقد الدراسة فيها .. وكان المفروض أن يقف فتحي رضوان بالنيابة عن الطلبة فيلقي قصيدة عصماء كتبها ايضا الاستاذ علي الجارم.
وقبل الزيارة قامت المدرسة باجراء عدة "بروفات" كان يقف فيها فتحي رضوان ويلقي القصيدة مرة ومرتين وثلاث مرات .. وعندما حان موعد الزيارة .. تقدم فتحي رضوان في خطوات جريئة واخرج القصيدة من جيبه .. ولكنه بدلا من ان يقرأها كورها بين اصابعه ورماها على الارض وارتجل كلمة نثرية قال فيها: يا وزير المعارف .. اعلم تماما اننا لا نحتفل بك لانك وزير .. فلقد كنت أول من علمنا أن الوظائف تقليد لا تخليد .. وانما نحتفل بك كصاحب "الجريدة" ورئيس تحريرها .. وانك علمت فيها هيكل ومصطفى عبدالرازق والدكتور طه حسين ومنصور فهمي.
وتستطيع أن تتصور ايها القارئ مدى الرعب الذي بدا على وجه الناظر وهو يستمع إلى طالب في الخامسة عشرة من عمره يخوض في السياسة ويتحدث عن طه حسين وهيكل كانداد و يحكم عليه حكم قاض مجرب!!
وما كاد الحفل ينتهي حتى اقبل لطفي السيد على هذا الطالب الجرئ ووضع يده على كتفيه وقال له : قل لي يا شاطر .. احنا صديقان .. انت ابن مين؟؟!!
في الجامعة
والتحق الطالب "المناكف" بكلية الحقوق .. وكانت السنة الأولى التحضيرية في كلية الآداب .. وأراد أن يشبع هوايته الصحفية.. فأجر جريدة اسمها "الصرخة" مع بعض شباب الطليعة في جزب مصر الفتاة وكان فتحي رضوان يكتب فيها قصة مسلسلة اسمها "غيور" تعالج بعض المشاكل النفسية. ولكن حدث أن اختلف فتحي رضوان مع صاحب الجريدة فامتنع عن اصدارها.
وكم كانت دهشته بالغة عندما تلقى انذارا من صاحب جريدة الصرخة يطلب فيها منه ارسال بقية القصة المسلسلة وإلا فان صاحب الصرخة نفسه سوف يكملها بنفسه و يبدل ابطالها ويشوه معالمها!!
من المحيط الضيق
وبدأ فتحي رضوان يخرج من المحيط الجامعي التعيق إلى المحيط الخارجي .. فدعا إلى عقد مؤتمر للطلبة الشرقيين .. يجتمع كل عام في عاصمة إحدى الدول الشرقية وتنظم فيه العاب اوليمبية شرقية.
وسافر فتحي رضوان إلى سوريا والعراق وتركيا وفلسطين .. وحدث أن ألقى محاضرة في الجامعة السورية يدعو فيها إلى فكرته وشرح أهدافها ومراميها .. فرفضت لبنان دخوله وقالت السلطات المختصة ان هذه الدعوة دعوة سياسية وطرد بالقوة.
وعندما عاد فتحي رضوان إلى القاهرة .. نشر بيانا وجهه إلى شباب مصر ودعاهم إلى أن يعملوا على تدعيم زعامة مصر.وكانت الحكومة القائمة في ذلك الوقت هي حكومة اسماعيل صدقي. وفهم صدقي أن فتحي رضوان بدعوته إلى تدعيم زعامة مصر إنما يرمي إلى تدعيم زعامة النحاس على مصر!!
فأصدرت الحكومة قرارا بحل المؤتمر وكانت لجنته العليا مكونة من علي ابراهيم رئيسا ومصطفى مشرفة واحمد أمين وعبدالوهاب عزام ومنصور فهمي أعضاء من الاساتذة.أما الشبان فكانوا مجموعة غريبة من بينهم عبدالقادر الحسيني وموسى الحسيني واسعد طلسي وجميل المسلمي وعبد القهار المذكر ومصطفى الوكيل وعمر الدسوقي وغيرهم.
بدء الحياة السياسية
بدأت حياة فتحي رضوان السياسية مع مشروع القرش .. فالذي حدث أن احمد حسين – صاحب المشروع – قد دعا بعض الذين تعاونوا معه في المشروع من الشبان وعرض عليهم برنامج الحزب فوافقوا عليه .. اما فتحي رضوان فانه رفض التوقيع على هذا البرنامج لانه كان يرى – مع موافقته على مبادئ الحزب ، وهي خلاصة تجارب طويلة في الحقل المدرسي – أن مشروع القرش مشروع قومي يستحق ان يستنفد جهود اعضائه بضعة أعوام .. وأنه ليس مشروعا اقتصاديا بحتا .. انما كان ذا أسس أدبية وروحية يتيح للقائمين عليه تنظيم الشباب والخطابة فيهم وتوجيههم .. وبمعنى أصح كان مشروعا بنائيا من الناحية السياسية.وانه يكفي تقديم مشروعين قوميين ناجحين للرأي العام كمشروع القرش ومؤتمر الشباب العربي ليكونا دعاية حسنة للشباب الواعي الجديد .. وذلك بدلا من صبغ مثل هذه المشروعات بالصبغة الحزبية.
وقد حدث ما توقعه فتحي رضوان .. اذ قام ألوف بحملة شعواء ضد مضروع القرش بدعوى أن القائمين به ذوي اللون الحزبي .. فاستقال احمد حسين ثم استقال من بعده فتحي رضوان.
نشاط جديد
وكان أحمد حسين وفتحي رضوان قد فكرا من قبل في اخراج جريدة .. وكان من رأي فتحي رضوان ان تكون هذه الجريدة أدبية .. أما أحمد حسين فقد رأى أن تكون هذه الجريدة سياسية .. وأخيرا رأى الاثنان ان يوحدا جهودهما في جريدة واحدة وهي "الصرخة" اقرارا لمبدأ التعاون.
ثم ظهر بعد ذلك خلاف جديد في الرأي .. كان أحمد حسين يرى أن سياسة الجريدة يجب أن تتجه نحو مهاجمة الامتيازات الاجنبية التي كانت السبب الاول في بالء الاستعمار .. وكان فتحي رضوان يرى أن الاحتلال هو أصل البلاء .. وأخيرا اتفقا على أن يكتب كل منهما عن وجهة نظره.
وصدرت الجريدة الجديدة وكان اسمها الصرخة .. وفي 13 نوفمبر 1933 وبعد صدور ثلاثة أعداد .. صدرت الصرخة في عدد خاص كان يتضمن حملة شعواء على الاحتلال وعلى الانجليز وأعوان الانجليز وكان أكثر هذه المقالات بقلم أحمد حسين نفسه. ولم ترق هذه الحملات لرجال الحكومة في ذلك الحين .. فأصدر النائب العام أمرا بالقبض على أحمد حسين وحافظ محمود رئيس التحرير المسئول وفتحي رضوان وأودعوا في قسم الموسكي.ومن الطريف أن فتحي رضوان عندما سئل عن كاتب هذه المقالات أصر على أنه هو كاتبها .. و عندما سئل أحمد حسين أصر على أنه هم نفسه كاتبها.. فاضطرت النيابة أمام اصرار الاثنين إلى القبض على ثلاثتهم مدة 18 يوما .. وبعد معارضتين افرج عنهم.
عواصف
ومنذ عام 1937 وحياة فتحي رضوان سلسلة من العواصف.وكان أول عهده بالاعتقال في جريمة اغتيال .. في نوفمبر 1937 .. عندما قبض على أحد أعضاء مصر الفتاة في شارع عباس بمصر الجديدة بتعمة الشروع في اغتيال النحاس .. فقبضت الحكومة على جميع المنتمين إلى حزب مصر الفتاة.وأمضى فتحي رضوان في سجن الاستئناف شهرين ثم ما لبث أن افرج عنه.
ومما يذكر أن رئيس المحكمة وقتئذ فكر في أن يجدد في الاساليب القضائية ، فكان يرى أن ملف القضية ليس سرا على المحامين والمتهم وحدهم كما جرى التقليد فيما بعد ، بل كان يراه ايضا سرا على قضاة المعارضة .. فكان القضاة يجتمعون في حجرة رئيس المحكمة ويسمعون مرافعات جماعية عن جميع المتهمين ثم يصدر الرئيس بعد ذلك قرارا برفض المعارضة أو بالحبس بالنسبة لجميع المتهمين دفعة واحدة.
الحزب الوطني
وكان عام 1939 هو مفترق الطرق في حياة فتحي رضوان السياسية .. فقد انفصل عن حزب مصر الفتاة انفصالا فعليا .. و أن اتخذ هذا الانفصال شكله الرسمي في عام 1942 .. وكان سبب الاستقالة هو احتجاج فتحي رضوان على أحد تصرفات أحمد حسين.
وتفصيل القصة هو أنه حدث أثناء اعتقال أحمد حسين في عام 1942 ان سمع جزءا من قصة 4 فبراير فهم منها أن النحاس انقذ البلاد من كارثة محققة وانقذ العرش من الاعتداء عليه .. فأرسل خطابين سريين احدهما إلى مصطفى النحاس والآخر إلى مكرم عبيد سكرتير الوفد يثني فيهما على النحاس ويؤيده في موقفه.
وعلى الرغم من سرية الخطابين فقد نشرهما الوفد في جريدة المصري .. ولذلك رأى فتحي رضوان أن يقدم استقالته لأن تصرف أحمد حسين لم يكن يتفق مع حقيقة الموقف في 4 فبراير .. كما انه كان يتنافى مع التقليد الصحيح للأحزاب.
وانحصر بعد ذلك نشاط فتحي رضوان في المحاماة والقضايا السياسية فترافع في قضية المنشورات لمحمود العيسوي وفي قضية مدحت عاصم وهي قضية منشورات ايضا وقضية الشيخ توفيق الملط وهي قضية احراز مواد مدمرة.
وفي عام 1944 انضم إلى الحزب الوطني .. فقد كان من رأي سليمان حافظ ومصطفى مرعي أن يدعما الحزب بعناصر جديدة .. وقد مهدا لهذه الفكرة عند حافظ رمضان الذي ما لبث ان قبل الفكرة وانضم إلى الحزب : فتحي رضوان ونور الدين طراف وحسين ابو زيد وزهير جرانه ومصطفى المنزلاوي وغيرهم ممن كونوا فيما بعد اللجنة العليا للحزب الوطني عندما وجدوا ان مجال التعاون بينهم وبين الجيل القديم ضيق عسير.
فكرة اعلان الحرب
ومما يذكر ان هؤلاء السبان لعبوا دورا خطيرا في حياة الحزب الوطني .. فلقد بدأوا بمجرد انضمامهم يغذون فكرة استقالة حافظ رمضان من وزارة أحمد ماهر حتى نجحوا في ذلك بسبب تضارب سياسة هذه الوزارة مع سياسة الحزب الوطني.فقد حدث عندما عرضت فكرة إعلان الحرب على المحور .. ان اجتمع الحزب وقرر معارضة هذه الفكرة .. وكتب حافظ رمضان استقالته احتجاجا على دخول مصر الحرب .. وسلمها إلى فتحي رضوان .. فقدمها بدوره إلى أحمد ماهر ثم ما لبث ان طبعها في منشورات سرية ووزعها على لجان الحزب الوطني في جميع انحاء مصر!!
الأقدار
وقد لعبت الاقدار دورا عجيبا في حياة فتحي رضوان .. وفي اعتقاله كان كل ما حدث يقع في مصر يعتبر فتحي رضوان مسئولا عنه .. عزيز المصري يهرب بطائرة مع اثنين من الطيارين هما : حسين ذو الفقار وعبدالمنعم عبدالرؤوف فيقبض عليه .. وما كاد يفرج عنه بعد يوم واحد حتى يقبض على عزيز المصري في منزل المثال المعروف عبدالقادر رزق .. وتشاء المصادفات ان يجد البوليس في جيب عبدالقادر خطابا من عزيز المصري باسم فتحي رضوان فيعتقل مرة اخرى .. وما كاد يفرج عنه بعد يومين حتى يأمر الحاكم العسكري باعتقاله للمرة الثالثة ستة أشهر أمضى بعضها في سجن الاجانب والبعض الآخر في معتقل الزيتون.
ويغتال أحمد ماهر في البرلمان .. وتشاء المصادفات أن يكون فتحي رضوان داخل البرلمان .. وتشاء المصادفات ايضا أن يدعوه اسماعيل صدقي مع النائب السعدي عبدالمنعم ابو زيد للانصراف معا والركوب في سيارته فيخرج .. وذلك قبل صدور الاوامر بإغلاق الابواب ومنع جميع الموجودين من مغادرة دار البرلمان بما فيهم كبار الموظفين ورجال البوليس سواء منهم من كان بثيابه العسكرية أو المدنية.ويعلم وزير الداخلية أن فتحي رضوان في داخل البرلمان .. فيأمر بالقبض عليه وعندما يبحثون عنه داخل البرلمان لا يجدونه فيثبت في يقينهم انه اشترك في الاغتيال وأن اعوانه في الجريمة قد استطاعوا ان يهربوه من البرلمان.
ويقبض على فتحي رضوان في منزله ويستدعيه النائب العام .. وفي داخل الغرفة يجد فتحي رضوان رئيس الوزراء وكبار رجال الأمن وبعض الوزراء .. و يوجه إليه النائب العام السؤال التالي: أين كنت في ذلك اليوم؟
ويقول فتحي رضوان في بساطة : كنت في البرلمان
وتعلوا الدهشة جميع الوجوه .. فقد كانوا يعتقدون أنه سينكر لأنه لا يمكن ان يقامر برأسه إلى هذا الحد ويعتقل فتحي رضوان ثلاثة أشهر.
وتشاء المصادفات مرة أخرى ان يكون وزير العدل حافظ رمضان .
ومرة ثالثة تلعب المصادفات دورا جديدا .. فقد حلت جمعية الاخوان المسلمين في ديسمبر 1948 ووقف الحزب الوطني يعارض في اجراء الحل ويعتبره اجراء غير دستوري .. ويحاول طبع هذا البيان فتصادره الرقابة .. وتشاء المصادفات ان يتخذ حسن البنا من مكتب فتحي رضوان مكانا مختارا يأتي إليه كل ليلية و ان يكون للاخوان المسلمين يد في اغتيال النقراشي .
الشربيني .. الشربيني
وتقبض الحكومة على الاخوان المسلمين وتضعهم في المعتقالت .. وتشاء المصادفات ان يهرب بعضهم عبر حدود مصر إلى ليبيا .. ويكون بينهم أحد الاخوان واسمه محمد الشربيني.
و يلتقي رئيس الوزراء بمصطفى مرعي فيقول له : اننا مضطرون للقبض على فتحي رضوان .. فقد ضبطنا مكالمة تليفونية بينه وبين ذلك الهارب الذي يدعي الشربيني.
ومرة أخرى تشاء المصادفات ان يكون لفتحي رضوان في مكتبه وكيل اسمه الشربيني.
وبعد
و بعد .. ان الشاب الثائر الذي كانوا في الماضي القريب يدفعون به إلى أعماق المعتقل ليبعدوا نار ثورته عن هشيم الرأي العام يتربع اليوم على مقعد وزارة الدعاية في وزارة الثورة .
Wednesday, September 30, 2009
WarmUp Script for MOSS
http://maclauweb.net/blog/Lists/Posts/Post.aspx?ID=4
Monday, September 21, 2009
Customer satisfaction through requirements sign-off
Customer satisfaction is the responsibility of everyone involved in a project since its early days when it was just a lead, some projects failed or faced a lot of problems just because the sales person told the customer something that can’t be done, or told him something and write something else in the proposal, but it is there in the customer’s imagination and he is waiting for it at the end.
Projects like this may be canceled just after this point while collecting the detailed requirements, the customer may hear too many times “out of scope and you have to pay for this and we will change the delivery date” that lets him think that he was talking to someone from another company and this is not a good company, and in this case it will be so difficult to achieve this customer satisfaction.
Please, if you are a sales person or helping the sales team, make sure that everything is clear to the customer and is written in your proposal, otherwise don’t blame the delivery team that they didn’t satisfy the customer because it was just you who lost him.
As a project manager this conflict must be solved immediately through good communication not just sending emails and receiving emails between you and the customer and the sales team, and don’t start this project before solving this problem, as you can’t start project and you can’t write the requirements, and for sure you can’t manage a project without knowing that is the requirements of this project.
As a conclusion, the first step to satisfy the customer and to sign-off the project is to have clear written requirements, and to sign it off after reviewing it perfectly by your team and make sure that the customer understands what is written and has reviewed it and say it to him face to face: "You must read the document!!!" in our region you will hear it many times from customers: "I didn’t read it before, it is too much and it is in English" No problem if he said it in the beginning, but it is a disaster if he said it after a while.
Monday, September 14, 2009
Customer satisfaction VS Project sign-off
In many companies, developers and all the related jobs like the graphics designers and even the project managers in some cases are all focusing on the delivery and the sign-off within the time frame in the first place then the budget then the quality. And no one is caring about the sales person and how his task may be impossible when he wants to make another deal with the same customer on another project or add new requirements to the same product.
Making new deals with the same customer mean “customer satisfaction” mainly not the feedback you are receiving from the customer as customers may not say it to you when they are not satisfied, but they will say it everywhere else the way that will affect your future business.
From my experience with customers especially in KSA, they are going with the one who are working on the satisfaction of the product’s end user not just the customer himself. Going to an extra point with most customers in our region is the main key even if he is very professional and understands that delivering the written agreed requirements must be the only thing that governs our tasks.
But also in all cases don’t go too much away from the project plan, and remember that you are hired to deliver the project, and sometimes you may need to say it to your customer that you can’t give him any extra point and you have to balance.
Customer satisfaction is not just a good or neutral feedback with the closure of the project; it is the things that force your customer not to go with your competitors in the next project (hopefully not the same project).
Sunday, September 13, 2009
Supported web browsers
I was reviewing and analyzing the browsers statistics on W3Schools (http://www.w3schools.com/browsers/browsers_stats.asp) where you will find that the main browsers that we MUST support are Internet Explorer (39%) and Firefox (45%) and if you want to support an extra browser so you have to support Chrome (7%)
Microsoft has announced that they will support IE6 until 2014, what that mean to web developers? In my opinion this is not affecting them by any mean, as the main factor that forcing them to make their web pages IE6 friendly is the percentage of visitors (13%) and not anything else! Also IE8 (10%) must be supported beside IE7 (15%). As you can see the differences between each other is very small and you cannot select one over the other.
On the other hand, building a page that is supporting Firefox must include FF 3.0 (24%) and FF 3.5 (21%), and no need to support FF 2.0 (< 2%) any more.
Regarding the screen resolution, the statistics shows that most (93%) of the internet users are using 1024x786 or higher resolution.
But please take care, all the above percentages may be changed dramatically if your page will be a part of an intranet site for example, as the numbers may be changed to 100% for IE6 on 800x600. So it is depending on collecting the right information from the customer before starting on developing your pages, as you will save too much time and serve your customer better.
Finally, it is not a matter of colors and shapes that must be exactly the same on all the browsers, it is all about talking to your visitor the best way you can, as this is your main role as a web developer, and as you started your site by reading numbers representing the percentage of each browser usage, develop your page the way that will make the maximum number of visitors enjoys your site.
Sunday, August 02, 2009
SilverLight Organization Chart
3. Using ScrollViewer
4. Using Slider (for the scale)
5. Using SilverLight UserControls (the node element with the person information)
6. Reading data from XML files and web services
7. Some Calculations
Clip a TextBlock in SilverLight
1. From the XAML
<TextBlock x:Name="tbExtension" Width="130" Height="30" Foreground="Black" Canvas.Left="5">
<TextBlock.Clip>
<RectangleGeometry Rect="0, 0, 130, 30"/>
</TextBlock.Clip>
</TextBlock>
2. From the code behind
tbExtension.Clip = new RectangleGeometry() {
Rect = new Rect(0, 0, width, height)
};
Monday, July 20, 2009
SSO and IFrame, more details please
A. Points related to the SSO:
1. SSO itself
2. Sign out
3. Session expiration
4. Browse directly to the application URL
B. Point related to the Frame:
1. Frame/Iframe
2. Header
3. Welcome Message
4. Navigation
A.1. SSO itself:
A group of questions we must know here depend on the case , is it a product or the client have the source code, can we add some pages or DLLs to the application, can we use cookies, what will be the authentication type in both applications, can we encrypt/decrypt, can we use ISA to authenticate the users, can we use MOSS SSO, is there a common membership provider, and so on.
A.2. Sign out:
Is it required to sign the user out from the portal if he click on sign out in the other application, or is it required to sign him out from the application if he click on sign out from the portal? Where I’ll redirect the user in the portal if he logged out from the application?
A.3. Session expiration
How we will manage the session expiration in any of the two applications, the user may expend more time on the application and his session on the portal is expired and vies versa. Is it required to keep the session live while the user is browsing the other application?
A.4. Browse directly to the application URL
What if the user type the URL of the application while he is already signed in on the portal, is it required to authenticate him on the application also or not.
B1. Frame/Iframe:
What about the look of the page, is it okay to have many scroll bars in the same page, is the size of the frame is sufficient to display the application screens? What about the color schema of the application, is it okay with the portal colors? So we can ask, what is the problem with a popup/new window?
B2. Header:
If the application has his own header, so you will have two headers in the same page which mean more lost space, and may be two logos.
B.4. Navigation:
The same here for the navigation, if the application has its own navigation, so we will have extra navigation and extra lost space, and for the usability it is not a good practice.
B3. Welcome Message:
In case the two applications have separated membership providers or user profiles, you will see in the same page for example, Welcome omourad and Welcome Osama Mourad, is it okay? And the user may sign in with another user in the application, you will see in the same page for example Welcome omourad and Welcome Ahmed El Said.
Tuesday, July 14, 2009
Paging SPList with ListItemCollectionPosition
But if you want to order by example the created date in your CAML query, so you have to include that also in your ListItemCollectionPosition parameters, ex:
Paged=TRUE&p_Created=20091208%2006%3a24%3a35&p_ID=8
Where p_Created=20091208%2006%3a24%3a35 is the created date of the itemID = 8
If it is not used like that you will see unrealistic output.
A good idea to make paging is by making an array that its index will be the page index, and its value will be the ListItemCollectionPosition.PagingInfo like this:
void SetupPager(SPList tmpList, string queryString)
{
myPagingData.Add("Paged=TRUE");
SPQuery query = new SPQuery();
query.Query = queryString;
query.RowLimit = 5;
do
{
SPListItemCollection itemList = tmpList.GetItems(query);
query.ListItemCollectionPosition = itemList.ListItemCollectionPosition;
if (query.ListItemCollectionPosition != null)
{
myPagingData.Add(query.ListItemCollectionPosition.PagingInfo);
}
}
while (query.ListItemCollectionPosition != null);
}
The above method can be called in the first time the page is opened, and you can add array to the viewstate and reload it with each postback and pass it to the query like this:
SPListItemCollectionPosition objSPListColPos = new SPListItemCollectionPosition(myPagingData [e.CurrentPage]);
query.ListItemCollectionPosition = objSPListColPos;
Blessings of working on large real-world projects
Working on large real-world projects can offer numerous blessings and benefits, both professionally and personally. Here are some of the key...