6+ years of passionate software development over a variety of open-source development platforms such as Java/Spring, Groovy/Grails, Python/Django, PHP/Drupal. Serving different businesses, such as task/document management, pharmaceuticals, community-driven websites, media management, security analysis, performance measurement aggregation and human resources. Administrated the targeted Linux servers ranging from Apache, MySQL, …etc. configurations to performance monitoring and tuning.
Throughout my career I have usually been granted to lead most of the software development teams that I worked with which got me into inspiring teams with the importance of our upcoming goals in addition to reviewing the achieved work for compliance. I also took care of the surrounding plumbing systems such as version control, issue tracking, continuous integration, code quality measurements plus communicating the development plans and status with the upper management personnel.
Being an open-source enthusiast, I have a regular tendency to learn new languages, frameworks and libraries, in addition to contributing several writings such as code, articles, papers, ..etc. This diversity in experience has given me a wide mindset which has ignited potential sparks in solving problems and in choosing the right tools and methods.
Jumped onto the entrepreneurship bandwagon by co-founding a startup specialized in delivering direly needed pharmaceutical software products which ran pretty well as a part-time effort.
I’ll be glad if we can get in touch. Let’s connect through LinkedIn or through my website.
Java Web Development, Open Source Software, Technical Leadership, Linux Administration, Agile Techniques, Wide Mindset
Personal Development, Technology, Open Source Software, Software Development Paradigms, Society Contributions, Sports
I believe that I arrived at Tawasol at the right time when the young development team there really needed a pragmatic form of leadership to reach a decent level of robustness in order to cope with the high demand for project deliveries. Starting from only 1 application on the Apple iOS appstore, we managed to deliver the whole roadmap which spanned 8 mobile applications on the Apple iOS, Android and BlackBerry appstores in just 8 months. The following highlights on certain achievements.
Established and led a minimal agile development workflow which was backed up by Subversion for version control, Redmine for issue tracking, Jenkins for continuous integration, Review Board for manual code reviews, Sonar for code quality measurements and OpenLDAP for identity management.
Cooperated in laying out the project phases and how any project advances through these phases, starting from the client’s first chit-chat up to delivering the production-level artifacts.
Lifted a hefty weight of project management activities and client communications, in addition to orienting the business personnel to the software development process.
Delivered technical team reviews based on performance metrics measured from the issue tracker, version control, manual code reviews and static analyzers such as in Sonar.
Managed the production servers which hosted the backend services written using Play! Framework and CodeIgniter.
I was initially hired there as a senior software engineer and all I was thinking about was to write lots of code. At first I researched a couple of Java web frameworks when suddenly I was assigned to lead a team of 12 bright fresh graduates to work on a network of websites for a high-traffic community. That was my first leadership experience and albeit the high number of juniority on the team, we managed to deliver a vast array of content-based websites using a single PHP/Drupal code-base. Fortunately, projects that I took over later on ranged from 2 to 4 team members which is more sane for proper leadership.
Next came my experiences with Java, Spring MVC, JPA/Hibernate and Maven web development which was through the following projects.
Design and implementation of a media center serving different multimedia types to different websites, including flash videos (using FFMPEG).
Design of a mobile trivia website backed up by a foreign SMS gateway.
Maintenance of an in-house HR management system responsible for timesheets, attendances, appraisals, …etc.
I then ventured into in-house research-oriented projects built using Python/Django.
Design and implemention of a web application that aggregates lots of performance measurements and syslogs from Nagios , Collect Daemon and RSyslog.
Design of a web application that leverages external command-line security tools to scan our production servers.
I also managed to keep running 30 internal supporting systems serving the employees in a well maintained state by writing automation and cleanup scripts in addition to troubleshooting application problems. To aid in monitoring services, I implemented extensive machine and service level monitoring of the internal and production systems using Nagios which I had to write further custom Nagios plugins to measure our internal OpenVZ-based virtual machines performance and other miscellaneous ones.
Sparked out of the desire to venture into running my own startup, I have delved into this experience with 4 of my colleagues and we started working in a part-time manner on a pharmaceutical software product which targeted quite a niche in the pharmaceutical field. I designed and implemented significant parts which were written in Java, Hibernate, Struts 1 and SiteMesh. After a year of hard work on this product, we managed to deliver it successfully and celebrated this achievement.
Throughout the first year, I also established the development supporting systems such as the version control system, issue tracker and continuous integration system in addition to supporting the development team with the necessary training and technical consultancy.
I then worked on the initial prototype of a second pharmaceutical web application where we experimented with the amazing Play! Framework to accelerate our pace.
After the first launch of the in-house issue tracker, many requirements have popped up (isn’t this typical !). Which led us to rewrite major parts of the issue tracker to cope with the needed changes in preparation for the second release. After the second release was successful, I joined some outsourced work using the Jupiter CMS as follows:
Implemented most of the HR workflows at Etisalat Egypt using the Jupiter CMS during the outsourcing period which lasted for 6 months.
Leveraged Gant to automate most of the build steps needed when building custom applications to the Jupiter CMS.
The first couple of months I have implemented numerous workflow processes for several clients using our Jupiter CMS and the Oracle Workflow Builder. At the same time I have managed to enrich the CMS’s UI with complex JavaScript validations and manipulations which I opted to build them using jQuery and it’s plugins. Throughout the CMS support visits, I have been troubleshooting the production issues of the Jupiter CMS implementations along with it’s backing Oracle databases. During my work on Jupiter and out of self-motivation I have written initial Groovy bindings to the CMS SDK which facilitated quick prototyping and the ability to actually script the CMS.
Later on I joined a team to build an in-house issue tracker using Java, Struts and JDBC to automate the ticket and bug tracking in a special workflow between the different departments. Later on, this in-house project turned into an official product which was sold several times.
My first job was involved with the operation and automation of EDS’s mainframe cost allocation system which was based on IBM mainframes and DB2 databases. In order to minimize the manual tedious revisions, I started writing several automation applications in C# and VBA that analyzed large log files and sheets in order to perform critical validations on the collected data that was pulled from the production mainframe environments. Towards my final days at EDS, I was on the verge of launching mainframe batch jobs from our PCs through the FTP servers running on the mainframes. Throughout this period, foreign teams were working with us in order to cover the whole operation cycle.
Today’s IT systems are facing a major challenge in confronting the fast rate of emerging security threats. Although many security tools are being employed within organizations in order to standup to these threats, the information revealed is very inferior in providing a rich understanding to the consequences of the discovered vulnerabilities. We believe expert systems can play an important role in capturing any security expertise from various sources in order to provide the informative deductions we are looking for from the supplied inputs. Throughout this research effort, we have built the Open Security Knowledge Engineered (OpenSKE) framework, which is a security analysis framework built around an expert system in order to reason over the security information collected from external sources. Our implementation has been published online in order to facilitate and encourage online collaboration to increase the practical research within the field of security analysis.