Adel K. Khalil [CV]

 

Adel K. Khalil

Updated Nov 4th
2009

Senior Software Engineer

2324 Zahraa Madinet Nasr, New Cairo.

Cairo, Egypt
Cell: +2010 61 94 590 – primary contact
contact@adelkhalil.comkhalil.adel@gmail.com

blog: www.adelkhalil.com/blog

Twitter: www.twitter.com/adelkhalil

Facebook: www.facebook.com/adelkhalil

Nationality: Egyptian

Military Service: Not Applicable

Date
of birth: March 3rd 1983

 

generic skills and attributes

Personality:

Personality test result is Green
Personality
which described by
www.truecolorscareer.com as an exceptionally creative problem
solver who brings the ability to think outside the box to the workplace. The
holder of this personality is also typically conceptual, analytical, and a
logical thinker. For more details about the Green Personality see:
http://www.truecolorscareer.com/greenans.htm.

Career:

Career personality type is ESFJ
that means that based on the measure of personality traits, you are a strong
team player and put the needs of the group before the individual. Your
emotional strength combined with a pragmatic work approach makes you a strong
asset and this means you are a strong leader on any team.

IQ Test result ranged from 124 ~ 130.
This described as “Very superior intelligence” according to
http://www.wilderdom.com.

Latest Achievements
and career highlights

-     
Won CriticalSites (World-Wide)
Employee of The Month (November, 2007)

-     
Developed custom solution that serves
as loans tracking system for major clients including Bank of Alexandria.

-     
Lead two teams to won 2 awards on the
MCIT Best 10 Projects all Egypt 2006.

-     
Developed workflow, fraud prevention
systems and case managements deployed for Commercial International Bank
(CIB), Audi and Crédit Agricole.

-     
www.adelkhalil.com/blog gained tens of thousands of loyal
readers across the world since year 2006.

-     
Speaker in a number of Mini
Conferences and User Groups.

-     
Built secure PCI compliant software
for processing payment cards according to the US HIPAA regulations in under 4
weeks.

Education

Computer Engineering
& Control Systems

Faculty of Electrical
Engineering

Obour Higher Academy

Bsc
in Computer Engineering & Control Systems.

-     
Software Engineering, Operation
system, Database systems, parallel processing and Compiler design.

-     
Microprocessor and Microcontroller
programming

-     
Robotics systems, Process control
systems

experience(recent – cairo branches)

Senior Software Engineer | SummitQwest
(HQ, USA)

August 2008 – Present

Leader in providing software solutions
for banks, law offices and financial institute.

Senior Consultant | Archer
Systems (HQ, USA)

November 2007 – August 2008

Archer
systems is an ISV with platform agnostic culture, it’s a leading in providing
custom applications for e-commerce businesses, Network and Database
solutions, etc.

 Archer Systems has a very large client base
including US Government.

Software Engineer | CriticalSites
& NTP Software (HQ, USA)

January 2005 – November 2007

Help
develop application for NTP Software and CriticalSItes (those are sister
companies, with the same owner).

NTP
Software is a well known provider of storage technology systems based in US
and selling product for over 15,000,000 users worldwide.

CriticalSites
has been around for over 10 years delivering best security practices.

Previous positions

-     
Web
Developer

-     
Business
Analyst

-     
Trainer

skills

Recent used programming languages, FRAMEWORKS and
models (Expert)

Core Technologies

ü Microsoft .NET  Framework Development 1.0, 1.1, 2.0, 3.0
and 3.5

ü  Including C#, Visual Studio, Team
Foundation Server, ASP.NET, Web Forms, Web Sites, Web Services, Windows
Services, ADO.NET, .NET Remoting, CardSpace, WPF, LINQ to SQL, WCF and WPF
(Novice).

ü  ASP.NET MVC
(Model-View-Controller)

ü  XML Including DOM, XPath

ü  Microsoft Access 97, 2000, 2003,
2007

ü  JavaScript

ü  jQuery

ü  CSS

             Software Architectures

ü  Structured

ü  Object Oriented

ü  Service Oriented Architecture

             Database Systems

ü  Deep Understanding of database
theory

ü  SQL Server 7.0, 2000, 2005 and
2008

ü  SQL Lite 3.x

ü  Including T-SQL, Stored
Procedures, Functions, Triggers, Views, Rules, Cursors, DTS, DDL, Trace and
Profiling, MSDE/SQL Express

Software Testing Technologies

ü  Unit Testing using NUnit, MbUnit,
MSTest and xUnit

ü  Test Driven Development using
TestDriven.NET

Tools and Libraries

ü  Entity Frameworks, Linq to SQL, SubSonic,
CodeSmith, iBatis, NHibernate and Enterprise Library 3.1

natural langaues

·        
Fluent in spoken and written Arabic (mother tongue).

·        
Fluent in spoken and written English.

Latest projects

·        
Individual work:

-     
Fraud Detection software for Credit Agricole and Audi
Banks.

-     
Content Management System in ASP.NET 3.5 for a Software
House.

-     
Loan Tracking System 2.0 financial software automating
loans management for Bank of Alexandria and other major clients.

-     
ProjectPortal a project management web based
application.

-     
Cross-language application: developed a solution
integrates into well known open source CRM software SugarCRM (.NET, MySQL, PHP
and IIS).

-     
Auditing software with VOIspeed Voice-over-ip
application (Java – .NET)

-     
Automation Software for Optics corporate located is
Riyadh, KSA.

-     
CodePump (codename) for an open source code generator –
code smith like.

-     
Participate on the Open Source project UI for TemplateMaschine which is a like-CodeSmith Code Generator.

-     
Sales Chain management software.

-     
Webinars management application.

-     
Developed security focused solution using Microsoft
CardSpace.

community experience

·        
Member of ACM and IEEE organization.

·        
Active member in many technologies forums and community groups such as
MSDN forums, CodeProject, Egypt Developers Cooperative.

·        
Publish software development papers and article through BloggingAbout.net,
CodeProject and other communities.

·        
Participated in Open source software development projects such as RSS
feeds reader FeedFusion and TemplateMaschine.

·        
Attended Middle-East Developer Conference 2004.

·        
Attended Middle-East Developer Conference 2005.

·        
Attended SalesForce.com Marketing Conference 2006.

·        
Attended Middle-East Developer Conference 2007.

·        
Attended SilverKey Demo Day II 2007.

hobbies

·        
Computer programming, writing, blogging, football, classic movies and
music as well.

future
resolutions

·        
Writing my own book in programming.

·        
Start doing a software development oriented podcast.

·        
Participate in more open source projects.

·        
Held .NET User Groups and Code Camps in Egypt. Done J

·        
Volunteer as a trainer for software best practices when time permits. Done.

Currently working on

·  
Application Server activation and mentoring dashboard with WCF, WPF,
MVC and .NET 4

Please feel free to contact me IM:adel83k on
Live Messenger or Skype:adel83k.

Thanks for taking the time and reviewing my resume.

Getting SelectedValue from Wpf Combobox

Hi, i don’t know why this seemed not easy but here is how it goes

Your XAML for the WPF Combo

<ComboBox Name=”ddlApplication” DisplayMemberPath=”AppName” SelectedValuePath=”ID”  SelectedItem=”App” Margin=”92.709,56,220.46,0″ VerticalAlignment=”Top” Height=”22.96″ SelectionChanged=”ddlApplication_SelectionChanged” />

Then you can easily bind a IList<YourObject> like this

  ddlApplication.ItemsSource = list;

            if (ddlApplication.HasItems)

            {

                ddlApplication.SelectedIndex = 0;

            }

and getting the selected value is easy as

 YourObject obj =  (YourObject)ddlApplication.SelectedItem;

            this.Title = obj .ID.ToString();

Done!  happy xamiling 

Consuming JSON Web Service from jQuery and Server Code

This is a trick i learned today, if you have your web service returning JSON string to utilize on your ajax calls if you planned to connect to this service using server code (Web Reference) for internal facing app for example you have a problem.

If you are using HttpModule to alter the content-type to application/json you need to disabled this first, add web reference and then re-enable it again.

when trying to add web reference with Visual Studio you can’t get valid disco/wsdl files however if you added the reference while disabling the HttpModule and re-enable it again, it works.

Hope this helps.

Cross-domain JSONP with jQuery call step-by-step guide

I’ve been banging my head all day to accomplish this, it’s like a puzzle.. but since i get it to work i thought i could write this post for you and myself.

What we want to accomplish?

Simple way to communicate cross-domain with ASMX .NET 3.5 Web Service

How can we do it?

1. Implement a web service method like the following

   [ScriptService]
   public class JSONP_EndPoint : System.Web.Services.WebService
   {
       [WebMethod]
       [ScriptMethod(UseHttpGet = true,ResponseFormat = ResponseFormat.Json)]
       public string Sum(string x,string y)
       {
           return x + y;
       }
   }

2. Add New class library with a name ContentTypeHttpModule

The reason for this is no matter how you specify the content-type of your ajax call ASP.NET send the request with Content-Type text/xml; charset=utf-8 this is security feature explained here by ScottGu 

3. Add the following code to your Class (Code by Jason i just did a simple modification)

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;

namespace ContentTypeHttpModule
{
    public class ContentTypeHttpModule : IHttpModule
    {
        private const string JSON_CONTENT_TYPE = "application/json; charset=utf-8";

        #region IHttpModule Members
        public void Dispose()
        {
        }

        public void Init(HttpApplication app)
        {
            app.BeginRequest += OnBeginRequest;
            app.ReleaseRequestState += OnReleaseRequestState;
        }
        #endregion

        public void OnBeginRequest(object sender, EventArgs e)
        {
            HttpApplication app = (HttpApplication)sender;
            HttpRequest resquest = app.Request;
            if (!resquest.Url.AbsolutePath.Contains("JSONP-EndPoint.asmx")) return;

            if (string.IsNullOrEmpty(app.Context.Request.ContentType))
            {
                app.Context.Request.ContentType = JSON_CONTENT_TYPE;
            }
        }

        public void OnReleaseRequestState(object sender, EventArgs e)
        {
            HttpApplication app = (HttpApplication)sender;
            HttpResponse response = app.Response;
            if (app.Context.Request.ContentType != JSON_CONTENT_TYPE) return;

            response.Filter = new JsonResponseFilter(response.Filter);
        }
    }

    public class JsonResponseFilter : Stream
    {
        private readonly Stream _responseStream;
        private long _position;

        public JsonResponseFilter(Stream responseStream)
        {
            _responseStream = responseStream;
        }

        public override bool CanRead { get { return true; } }

        public override bool CanSeek { get { return true; } }

        public override bool CanWrite { get { return true; } }

        public override long Length { get { return 0; } }

        public override long Position { get { return _position; } set { _position = value; } }

        public override void Write(byte[] buffer, int offset, int count)
        {
            string strBuffer = Encoding.UTF8.GetString(buffer, offset, count);
            strBuffer = AppendJsonpCallback(strBuffer, HttpContext.Current.Request);
            byte[] data = Encoding.UTF8.GetBytes(strBuffer);
            _responseStream.Write(data, 0, data.Length);
        }

        private string AppendJsonpCallback(string strBuffer, HttpRequest request)
        {
            return request.Params["callback"] +"(" + strBuffer + ");";
        }

        public override void Close()
        {
            _responseStream.Close();
        }

        public override void Flush()
        {
            _responseStream.Flush();
        }

        public override long Seek(long offset, SeekOrigin origin)
        {
            return _responseStream.Seek(offset, origin);
        }

        public override void SetLength(long length)
        {
            _responseStream.SetLength(length);
        }

        public override int Read(byte[] buffer, int offset, int count)
        {
            return _responseStream.Read(buffer, offset, count);
        }
    }
}

4. Register the HttpModule in the service project

4.1 Add referance to the HttpModule assembly to the service project

4.2 Add this code to web.config to register the module

<add name="ContentTypeHttpModule"

                    type="ContentTypeHttpModule.ContentTypeHttpModule, ContentTypeHttpModule" />

This goes under system.web / httpmodules section

5. Add a web project for testing the application

5.1 add the following libs

jquery-1.3.1.js

json2.js

5.2 add new script file caller.js

function test() {
    $.ajax({ url: "http://localhost:1690/JSONP-EndPoint.asmx/Sum",
    data: { x: JSON.stringify("Now i am getting jsop string"), y: JSON.stringify("2nd param") },
        dataType: "jsonp",
        success: function(json) {
            alert(json.d);
        },
        error: function() {
            alert("Hit error fn!");
        }
    });
}
5.3 Add referances to jquery-1.3.1.js and json2.js
5.4 Add Default.aspx page with input button that has onclick=”return test();”

6. Remarks

6.1 I use the JSON.stringify function to serialize the string data parameters.

6.2 .d is a security features on ASP.NET 3.5

Download the code

Full Time Software Engineers Needed

Just graduated with IT related degree ?

Are you creative, motivated and talented?

Excited by developing new applications that really make a difference?

Want to tackle new challenges?

kinematechs is hiring freshman developers

Great environment, great people…

apply jobs.kinematechs.com 

About Kinematechs®

Vision

Provide the framework and infra-structure for incubating new ideas and innovative projects in the field of Information and Computer Technology (ICT).

Mission

Provide creative and unconventional solutions to the most challenging ICT problems.

Develop software that implements these solutions .

Research and develop new technologies that will come to the benefit of the industry as a whole.

Values

Our people are our most important asset .

Quality is not a luxury, it is mandatory and must be reflected in everything we do.

We will always thrive to be creative and original in whatever we do.

Under all circumstances, Kinematechs® will always conduct business professionally and ethically.

Milk Offers and Notice Periods

Joel Spolsky talked in his recent post about exploding job offers (http://www.joelonsoftware.com/items/2008/11/26.html), where the recruiter says that you have to response to the offer with in fixed period of time, that was what happened to me exactly couple of month back, were the offer had expiration date of 4 days :)

Their execute is that they can fill the position with someone else, as soon as possible.

Another thing I’ve noticed is the notice period thingy that you found in most contracts, which says that before you decide to leave your job you should tell them 2 month prior.

Now there is two problems here first, if i come to the situation that i hate the job, my boss and everything about the company and rather to stay home jobless and not to wake up for the next day to go to work, i should feel that 2 month prior to it happening,

seconded, if i was hunting for a job and got an offer, which company will wait for me 2 months so i can join them, there is but very few.

last thing, what if I’m get laid off, would they give me even one month notice.

Neat feature in Foxit Reader 2.3

So Foxit Reader is a replacement for Acrobat Reader, it’s light, can be stand alone, and has a super fast launching time and FREE. since i tried Foxit Reader i had no single Acrobat Reader installation.

Today i discovered a neat feature, if you closed Foxit Reader while you viewing PDF document, when you come back and open the same document it remembers the page you were reading not only that but the exact position of the scrolls so it will be arranged for the exact paragraph to resume your reading, very handy.

http://www.foxitsoftware.com/pdf/rd_intro.php

Just another BloggingAbout.NET site