Monday, December 1, 2008

ICT Centers in Egypt

I have wondered so many times. Do we have research and development centers for the IT industry in Egypt ?
Then question become wider; what are the ICT centers do we have in Egypt ?

During my search and my experince I have found many centers in egypt working in relation to the communications and Information Technology.

And here what I got:

· Data Mining and Computer Modeling Center [MCIT]
· Wireless Communication and Electronic Design Center [MCIT]
· Cairo Microsoft Innovation Center (CMIC) [Microsoft]
· Center for Wireless Intelligent Networks (WINC) [Nile University ]
· Center for Informatics Science (CIS) [Nile Univerity]
· Center for Innovation & Competitiveness (CIC) [Nile Univerity]
· Orange Labs R&D http://www.orange.com/en_EN/finance/news/cp071204en1.html
· CISCO - Core competency e-learning institute
· ZTE & Huwaei – Wi-Max R&D centers
· Center for Advanced Studies [IBM] http://www.mcit.gov.eg/PressreleaseDetailes.aspx?id=RxuKovZSBhw=
· Nanotechnology Center [IBM] http://www.mcit.gov.eg/NewsDetails.aspx?id=1ewQtSMf+gs=
· Regional Platform Definition Center [Intel]
· Regional Software Enablement Lab [Intel]
· Developer Support Center for Regional Developers [Microsoft]

I will try to cover these centers and what it do in the near futur.
I’m still searching J

Tuesday, July 22, 2008

What Great .NET Developers Ought To Know [Answers]

Everyone who writes code

  • Describe the difference between a Thread and a Process?
  • What is a Windows Service and how does its lifecycle differ from a "standard" EXE?
  • What is the maximum amount of memory any single process on Windows can address? Is this different than the maximum virtual memory for the system? How would this affect a system design?
  • What is the difference between an EXE and a DLL?
  • What is strong-typing versus weak-typing? Which is preferred? Why?
  • Corillian's product is a "Component Container." Name at least 3 component containers that ship now with the Windows Server Family.
  • What is a PID? How is it useful when troubleshooting a system?
  • How many processes can listen on a single TCP/IP port?
  • What is the GAC? What problem does it solve ?

Mid-Level .NET Developer

  • Describe the difference between Interface-oriented, Object-oriented and Aspect-oriented programming.
  • Describe what an Interface is and how it’s different from a Class.
  • What is Reflection?
  • What is the difference between XML Web Services using ASMX and .NET Remoting using SOAP?
  • Are the type system represented by XmlSchema and the CLS isomorphic?
  • Conceptually, what is the difference between early-binding and late-binding?
  • Is using Assembly.Load a static reference or dynamic reference?
  • When would using Assembly.LoadFrom or Assembly.LoadFile be appropriate?
  • What is an Asssembly Qualified Name? Is it a filename? How is it different?
  • Is this valid? Assembly.Load("foo.dll");
  • How is a strongly-named assembly different from one that isn’t strongly-named?
  • Can DateTimes be null?
  • What is the JIT? What is NGEN? What are limitations and benefits of each?
  • How does the generational garbage collector in the .NET CLR manage object lifetime?
  • What is non-deterministic finalization?
  • What is the difference between Finalize() and Dispose()?
  • How is the using() pattern useful? What is IDisposable? How does it support deterministic finalization?
  • What does this useful command line do? tasklist /m "mscor*"
  • What is the difference between in-proc and out-of-proc?
  • What technology enables out-of-proc communication in .NET?
  • When you’re running a component within ASP.NET, what process is it running within on Windows XP? Windows 2000? Windows 2003?

Senior Developers/Architects

  • What’s wrong with a line like this? DateTime.Parse(myString);
  • What are PDBs? Where must they be located for debugging to work?
  • What is cyclomatic complexity and why is it important?
  • Write a standard lock() plus “double check” to create a critical section around a variable access.
  • What is FullTrust? Do GAC’ed assemblies have FullTrust?
  • What benefit does your code receive if you decorate it with attributes demanding specific Security permissions?
  • What does this do? gacutil /l find /i "Corillian"
  • What does this do? sn -t foo.dll
  • What ports must be open for DCOM over a firewall? What is the purpose of Port 135?
  • Contrast OOP and SOA. What are tenets of each?
  • How does the XmlSerializer work? What ACL permissions does a process using it require?
  • Why is catch(Exception) almost always a bad idea?
  • What is the difference between Debug.Write and Trace.Write? When should each be used?
  • What is the difference between a Debug and Release build? Is there a significant speed difference? Why or why not?
  • Does JITting occur per-assembly or per-method? How does this affect the working set?
  • Contrast the use of an abstract base class against an interface?
  • What is the difference between a.Equals(b) and a == b?
  • In the context of a comparison, what is object identity versus object equivalence?
  • How would one do a deep copy in .NET?
  • Explain current thinking around IClonable.
  • What is boxing?
  • Is string a value type or a reference type?
  • What is the significance of the "PropertySpecified" pattern used by the XmlSerializer? What problem does it attempt to solve?
  • Why are out parameters a bad idea in .NET? Are they?
  • Can attributes be placed on specific parameters to a method? Why is this useful?

C# Component Developers

  • Juxtapose the use of override with new. What is shadowing?
  • Explain the use of virtual, sealed, override, and abstract.
  • Explain the importance and use of each component of this string: Foo.Bar, Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d
  • Explain the differences between public, protected, private and internal.
  • What benefit do you get from using a Primary Interop Assembly (PIA)?
  • By what mechanism does NUnit know what methods to test?
  • What is the difference between:

catch(Exception e){throw e;}

and

catch(Exception e){throw;}

  • What is the difference between typeof(foo) and myFoo.GetType()?
  • Explain what’s happening in the first constructor:

public class c

{

public c(string a) : this() {;};

public c() {;}

}

How is this construct useful?

  • What is this? Can this be used within a static method?

ASP.NET (UI) Developers

  • Describe how a browser-based Form POST becomes a Server-Side event like Button1_OnClick.
  • What is a PostBack?
  • What is ViewState? How is it encoded? Is it encrypted? Who uses ViewState?
  • What is the element and what two ASP.NET technologies is it used for?
  • What three Session State providers are available in ASP.NET 1.1? What are the pros and cons of each?
  • What is Web Gardening? How would using it affect a design?
  • Given one ASP.NET application, how many application objects does it have on a single proc box? A dual? A dual with Web Gardening enabled? How would this affect a design?
  • Are threads reused in ASP.NET between reqeusts? Does every HttpRequest get its own thread? Should you use Thread Local storage with ASP.NET?
  • Is the [ThreadStatic] attribute useful in ASP.NET? Are there side effects? Good or bad?
  • Give an example of how using an HttpHandler could simplify an existing design that serves Check Images from an .aspx page.
  • What kinds of events can an HttpModule subscribe to? What influence can they have on an implementation? What can be done without recompiling the ASP.NET Application?
  • Describe ways to present an arbitrary endpoint (URL) and route requests to that endpoint to ASP.NET.
  • Explain how cookies work. Give an example of Cookie abuse.
  • Explain the importance of HttpRequest.ValidateInput()?
  • What kind of data is passed via HTTP Headers?
  • Juxtapose the HTTP verbs GET and POST. What is HEAD?
  • Name and describe at least a half dozen HTTP Status Codes and what they express to the requesting client.
  • How does if-not-modified-since work? How can it be programmatically implemented with ASP.NET?Explain <@OutputCache%> and the usage of VaryByParam, VaryByHeader.
  • How does VaryByCustom work?
  • How would one implement ASP.NET HTML output caching, caching outgoing versions of pages generated via all values of q= except where q=5 (as in http://localhost/page.aspx?q=5)?

Developers using XML

  • What is the purpose of XML Namespaces?
  • When is the DOM appropriate for use? When is it not? Are there size limitations?
  • What is the WS-I Basic Profile and why is it important?
  • Write a small XML document that uses a default namespace and a qualified (prefixed) namespace. Include elements from both namespace.
  • What is the one fundamental difference between Elements and Attributes?
  • What is the difference between Well-Formed XML and Valid XML?
  • How would you validate XML using .NET?
  • Why is this almost always a bad idea? When is it a good idea? myXmlDocument.SelectNodes("//mynode");
  • Describe the difference between pull-style parsers (XmlReader) and eventing-readers (Sax)
  • What is the difference between XPathDocument and XmlDocument? Describe situations where one should be used over the other.
  • What is the difference between an XML "Fragment" and an XML "Document."
  • What does it meant to say “the canonical” form of XML?
  • Why is the XML InfoSet specification different from the Xml DOM? What does the InfoSet attempt to solve?
  • Contrast DTDs versus XSDs. What are their similarities and differences? Which is preferred and why?
  • Does System.Xml support DTDs? How?
  • Can any XML Schema be represented as an object graph? Vice versa?

Wednesday, July 16, 2008

.Network.org Rock Star Day

17th July 2008

07:00 PM – 10:00 PM

Speaker
Remi Caron (Microsoft MVP)



Chairman
of the Software Development Network ( http://www.sdn.nl/ ), a user group in the
Netherlands that addresses approximately 2500 individual developers.



https://mvp.support.microsoft.com/profile=25260804-049A-49DA-AA49-C6328EC07079

Agenda
07:00 - 08:30 :
What’s new for reporting services in SQL Server 2008

08:30 PM – 09:00
PM: Break

09:00 PM – 10:30
PM: Business Data Catalog of Office SharePoint 2007

Location

Faculty of Computers and Information
Sciences – Ain Shams University
El Khalifa el Ma’moun Street – Heliopolis



Cairo, Egypt

For those
who wanna keep tuned with further news about this event & other upcoming
events of the dotnetwork.org user group please
check the following links:

Yahoo!Group: http://tech.groups.yahoo.com/group/dotnetworkorg/
Facebook Fan Page: http://www.facebook.com/pages/netWorkorg/13135685545
Facebook Group: http://www.facebook.com/group.php?gid=2409268236



Sunday, July 13, 2008

I’m a software engineer

A guy was crossing a road one day when a frog called out to him and said, “If you kiss me, I’ll turn into a beautiful princess.” He bent over, picked up the frog and put it in his pocket. The frog spoke up again and said, “If you kiss me and turn me back into a beautiful princess, I will stay with you for a week.” The guy took the frog out of his pocket, smiled at it and returned it to his pocket.The frog then cried out, “If you kiss me and turn me back into a princess, I’ll stay with you and do anything you want.” Again the guy took the frog out, smiled at it and put it back into his pocket.
Finally the frog asked, “What is the matter? I’ve told you I’m a beautiful princess, that I’ll stay with you for a week and do anything you want. Why won’t you kiss me?” The guy said, “Listen, I’m a software engineer. I don’t have time for a girlfriend, but a talking frog is cool.”

Monday, February 4, 2008

Software engineers self-development

When I was in faculty my image about my future was that I will be a software developer in some company. I think it was the image of the most of us. But most of who work in software development when hired, find that the job title is software engineer (I talk about other job roles in undergraduates vision about their future).
Fresh graduates when hired have different reactions about this new job title which was not in their mind during the faculty. Some of them do nothing and consider that software engineer is just another name of software developer, which was the reaction of the majority of us. Some of them who are more smart, noticed that the job interview focuses on some areas of knowledge, so they enhances themselves in these areas after the interview. But the intention of this self-development is to do better in the next interview.
This may make some of you ask, so what is the difference between software engineer and software developer? Which I discussed in Software Engineer or Software Developer.
Back to fresh graduates, after they hired and get into work, then all self-development plans are gone and the main concern will be to keep their current job.
Some of you may say that the work experience enhances our knowledge.
Yes, you are true. But let me add to your answer a common forgotten part and say your answer again which will be, the work experience enhances our knowledge only in what our current job and company concerns about and apply.
My added part looks ambiguous?
Yes, I confess.
But let my explain my point. As we know not all the software companies have the same size, not all of them work with the right processes, not all of them work in all the types of application development.
This extreme difference with the previously mentioned behavior of software developer in self-development led the software developers experience and knowledge to be only the accumulation of what he worked in, see, heard about during his years of work.
But what about the other areas, approaches, methodologies that you are not forced to work with in your company?
The concept of “Learn what get me in” make the developer pause his self-development activities in the times that he is not preparing for a new interview, which are the majority of his time. This concept in behavior of developers wastes most of their time in ordinary work tasks and make their learning and enhancement process very slow.
This behavior implicitly naked the targets of most of us, which are only better job, better salary. Shame on us if these is our only targets. We should as a software engineers – not software developers - have a nobler targets and ethics.
Also this behavior led to some of outcomes which are:
  • Most of us only use the technologies that is introduced to us by the others, we use not innovate.
  • Even in using the technology, we know what make us accomplish our task, not to expert to technology.
  • We always fight to win positions in the operational levels – I talk about who worked in big companies like Microsoft, IBM, ORACLE, etc – we not get to higher positions or research departments.

Conclusion:
Software engineers’ self-development in Egypt has the following Characteristics:
Path: Very slow and my stop for long periods.
Motivations: Better job, better salary.
Targets: Better opportunity.
Outcomes: Developers in the operational levels with medium knowledge in technology and no innovative ideas.

This is with the developers is the main concern. There is more to say if we talk from a national perspective and our role in aiding our country to compete in the international economy.

This is my opinion; hope to know your comments so we can change these conditions.

Data Mining & Software Engineering

So many efforts have been done in data mining field from thousands of researchers and developers both in academia and enterprise. This can be rationale due to the following reasons:
  1. The vast ways in collecting and storing data in all aspects of life.
    The huge data collected in the enterprise lead to overwhelming information workers.
    This lead to one fact, which is “We rich in data but poor in information”. So we seek the solution in the area of data mining.
  2. The data mining serve any field in the enterprise in uncover valuable information that is hidden in its data bases. This information can help enterprise greatly in its enterprise business and will give it a competitive advantage in understands the behind scenes information.

Due to these reasons, the data mining interests a huge numbers of customers approximately in all fields of the enterprise.

But as software engineers what can data mining provide to us? By us I mean the software engineers themselves in their work.

Let say it in other words

given the predefined target of data mining which is uncovering the hidden valuable information in the data bases, which was represented by the old, uncommon name of the data mining field, Knowledge Discovery in Databases.

This led us to another question which is what are the data bases that we as software engineers use for our own work?

These databases called software repositories such as source control systems, archived communications between project members, and issue tracking systems used to help manage the progress of software projects. Hidden information in these repositories can benefit

  • The maintenance of software systems.
  • Improve software design/reuse.
  • Empirically validate novel ideas and techniques.
  • Predictions about software development.
  • Planning of future development project.
  • Understand software development in real practice.

The field that concerns with this area called Mining Software Repositories.

But, is this the only way data mining can benefit software engineers in their work? No, there is another way called Software Mining. Which I will talk about in a later post.

Sunday, February 3, 2008

Software Development Process Automation

Few days ago I attended a session here in ITWorx called Engineering Processes. It was a very good session by an excellent speaker Alyaa Ali from the process improvement team.

I confess that before the session I wasn’t know enough and clear information of the CMMi and its parts and how we apply it, which have changed – thanks for Alyaa – after attending this great session.

But what I want to talk about now is a different thing. I got an idea during the session and I can’t stop thinking in it, so I’m writing it now to know your comments about it.

Let’s start with a simple question,
why clients want software at all? Why they pay a lot of money in it?
As the question is simple, the answer is simple too. In abstract, as we learned in faculty, clients need software to automate their current ordinal paper based system. I know that this is a very abstract answer – which may you have comments about it - but can you put it in mind just for a while.

Back to the Alyaa’s great session about Engineering Processes or exactly about CMMi.
She shows us many documents that are used during the software development phases.
Shoe also mentioned a lot tools that is used through different phases by different members having different roles.

This led me to think about the software development from a little different perspective, which can be summarized into the following points:

  • Software development all in all is an industry like any of our clients’ industry.
  • We use a lot of documents in our work.
  • We have many roles in the software development process, having different view points, having different activities in the process.
  • Software development is a complicated process that is hard to manage.

    All these and many other – which I can’t list all of them now – have led me to a final big idea.

Software development process needs an automation system that automates its activities, and achieves the goals that any automated system targets in its life environment.

I know it looks a crazy idea and unfeasible. But I think it worth thinking and worth a trail of us.

Finally remember that all human achievements, begin with ideas that looks unfeasible and some times begins with dreams

Friday, February 1, 2008

The birth of a new blogger

This is my first blog post, and I have many things to say but I will talk about one thing which is how this blog have started
But before that let me confess that I have different ideas about blogs in all.
These ideas have been accumulated over the time and extremely affected by the blogs that I have seen and read in my daily internet use.
These ideas can be summarized into few points:
  1. The blog should not have only my personal information and memories
  2. In the blog I should represent myself to the world, represent my ideas and opinions.
  3. The blog should be different of other blogs.
  4. The blog should aciqure reader and interest them, and if it fail in that, it should stop and leave the space for the capable people.

This was my own ideas and it make me think too much each time I think in making my own blog.
And every time my thinking led me to the same result, I'm not capable to make a good blog which meets the above mentioned ideas. But I always have ideas and make researches, which I want to share it with other people but there were only one man who I was sharing all my ideas with him. He was the victim of a long years of friendship (True he is my best friend, he called Khaled Mahmoud ). I was always sending him my latest research ideas to discuss it with him. But three days ago I sent one of these mails - I share with Khaled - to another great man called Mohamed Karam.
All my words can’t give you the true picture about Mohamed Karam, but I think it is enough for now to say that Mohamed Karam is the Lead Technical Architect of ITWorx, the biggest professional software services company in Egypt.
Mohamed replayed to my mail with one main thing, he said that my ideas are interesting and I must have a blog containing these ideas.
This replay has beaten my old idea that I’m not capable of writing a good blog. And this blog is the result
This is the story of this blog.
Finally I would to like thank Mohamed Karam for his encouragement that give me the courage and confidence to start this blog. Of course I would like to thank Khaled Mahmoud for his support and patient to read my mails all during our long years of friendship.