Contact Me
>> My Blog

Provided software development services span across multiple industries and cover all aspects of the software development life cycle. This section summarizes services I have provided throughout my long professional experience.

Software Development Life Cycle

  • Defining project specifications and writing specifications documents.
  • Preparing a project plan with estimation for the required time and resources.
  • Researching for new methods or algorithms that may be required by the solution.
  • Laying down an architecture for the system according to the project specifications.
  • Designing the software modules and data models.
  • Implementing the software modules and data model using the technology that fits the business needs the most.
  • Writing test procedures and unit testing modules. Perform different phases of testing.
  • Deployment using the appropriate deployment method.
  • Providing support and maintenance.

Software Development Models

Working under different software development models, including:

  • Iterative process.
  • Agile software development.
  • Waterfall process.
I also have the required skills to work in a heavy multitasking process where more than one task is being carried out at a time. Carrying out multiple tasks simultaneously can minimize the overall time required for those tasks, but requires the ability to switch tasks without losing track of progress. Proper documentation of task progress is essential for healthy progress in general, but is more essential with multitasking.

Web Based Solutions

Provided web based solutions fall into two major lines of web development:

  • Microsoft: C#, .NET Framework 3.5, ASP.NET, ASP MVC, Silverlight, MS SQL Server 2000-2008, IIS, Windows.
  • Open Source: Linux, Apache, MySQL, PHP, Perl.
In addition to the above technologies, the following technologies are shared among all the camps and are adopted in my solutions: XML, (X)HTML, JavaScript, jQuery, Ajax, Web Services.

Desktop Applications

I provide services to build desktop based applications that can run on Windows or Linux based systems. Technologies used include but are not limited to:

  • C/C++, C#, VB, Java.
  • STL, Boost, .NET Framework 3.5, MFC.
  • Win32/64, WinForms, DirectX, OpenGL.
  • GCC, Make Files.

Plug-ins and Add-Ons

In addition to standalone desktop applications, I also develop plugins and add-ons to existing applications to help integrate the client's projects into those commercial applications. For example, a computer graphics studio might require a 3DS Max plugin to export 3D models into the studio's own custom file format.


Security is one of the very important aspects of any computer system. I make sure all my solutions follow all the required security guidlines to protect against various attacks like code injection or data interception. My solutions also provide MD5 or public/private key pair encryption wherever required. I also ensure that my workstation is fully secured to guarantee the confidentiality of any important data that might be stored on the workstation.

Other Skills and Technologies

  • UML: UML is used to document the specifications, design, and workflow of the system in development.
  • OOD/OOP: Object-Oriented programming is used wisely in my solutions, avoiding any misuse or overuse of OOP features. Unrelated classes don't inherit each other even if they have functionalities in common, generics aren't used except where it really makes sense, etc.
  • Strong Math and Problem Solving Skills: No matter what field or industry an IT solution is intended for, math and problem solving skills are essential. My high skills in both guarantee a high quality product while meeting the project's deadline.
  • Multithreading: In today's multi-core hardware architectures, and client/server software architectures, multithreading and thread synchronization have only become more important than ever. My skills in this field satisfies all requirements.
  • Client/Server Development: Whether it's through high level protocols like HTTP and web services or using low level technologies like sockets, client/server development is listed among my high skills.
  • Version Control: Version control softwares are always used to keep track of source code changes. I have worked with GIT, Mercurial, SVN, CVS, as well as SourceSafe.
  • Source Code Documentation: I guarantee the proper documentation of any developed source code. Documentation generation tools are used as well including: Doxygen, .NET XML Comments, phpDocumentor, and JavaDoc.
  • Advanced Tools: Advanced editors, IDEs, debuggers, and profiling tools are used to maximize development efficiency.

Adapting New Technologies

Keeping up with the advances in technology is more important in the IT industry than in other industries. My fast learning skills allow me to easily adapt new technologies, whether required by a client/employer or suggested by myself to meet industry standards and user expectations.

© Sarmad Khalid Abdullah. All Rights Reserved.