Cairo, Egypt
--http://amrmostafa.org
Amr Mostafa
Full stack software engineer. Extensive experience delivering web apps and services.
java php python scala linux html css javascript spring hibernate rabbitmq mysql salt-stack postgresql amqp sass
angularjs jhipster ansible elasticsearch docker cassandra
Technical Skills
Likes:
Experience
Software Engineer (Contractor)
Sep 2016 → Current
java, javascript, angularjs, docker, cassandra, apache-kafka, microservices, saml, gradle, mysql, cucumber, spring, hibernate,
jwt, raml, postgresql, typescript, angular
Technical Lead – Mubasher International
Sep 2012 → Aug 2016
java, spring, hibernate, python, php, nginx, linux, mysql, rabbitmq, amqp, html5, javascript, css, gulp, salt-stack, vagrant,
sass, ansible, elasticsearch
Accomplishments include:
Improving team performance and efficiency by continuously nurturing processes, identifying missing roles and
practices
Leading internal and production sysops
Implementing our now indispensable monitoring solution for our services, applications and servers, which
decreased our outages and increased our errors response rate by orders of magnitude
Migrating our servers to a new hosting provider with zero downtime
Implementing solid integration with unstable and erroneous backbone to receive business critical data
Implementing and documenting our HTTP caching layer, required identifying and fixing key issues to make the app
behave correctly behind an HTTP cache
Advocating for the use of new technologies and internal practices
Planning, strategy and advocacy for transforming the existing code-base for our main product to a more modern
one by way of small, limited-scope code refactoring which increases code longevity, resolves complex bugs,
improves performance and enhances developer productivity
Implementing various core modules and improvements
Lead Performance Engineer – N2V
php, vbulletin, nginx, php-fpm, mysql, replication, git
Jul 2011 → Mar 2012
Lead a team to improve the performance & scalability of vBulletin, the software powering an extremely high-traffic women
community — Hawaa World.
Key Responsibilities:
Lead development and system operations
Continously analyze performance and bottlenecks through the complete stack
Explore and seek out new concepts, tools and technologies that could contribute to improving the performance or
scalability of the stack
Determine the architecture & software design changes necessary to boost performance and/or scalability
Educate and mentor team on system or architecture related topics
Implement improvements at the application & system level
Set and maintain team processes, tools, guidelines, practices, conventions and standards
Communicate with stakeholders regarding all aspects of the team's work & objectives
Technical Consultant – N2V
php, java, linux, apache, bind, http, dns, nginx, scalability, performance, openx, git
Feb 2011 → Dec 2011
Manage the servers infrastructure for all N2V projects
Provide support and consultation to the technical teams on the knowledge areas they lack
Help projects improve the technical performance and scalability of their projects
Contribute to the inception and early stages of new projects giving technical guidance and providing support and
advice
Recommend alternatives to the business owners regarding available technical solutions
Java Team Leader – Mubasher.info (a sister-company of N2V)
java, j2ee, eai, spring, spring-integration, amqp, hibernate, tomcat, xml, json, git
Jul 2010 → Mar 2011
Mubasher.info is a leading financial portal in the middle east, part of Mubasher financial services. The team I was leading
implemented one of the corner-stones of the platform – the integration layer – that streamed the backend data to critical
internal & external clients using push and pull methods, and different formats and protocols.
Key Responsibilities:
Business & system analysis for a legacy integration layer, document requirements, verify across stakeholders
Devise the architecture & the design for the new integration layer
Lead a small team of 2 developers to implement the integration layer and expose business services using its
different push/pull channels through a unified, secure and manageable mechanism
Set and maintain team processes, tools, guidelines, practices, conventions and standards
Document architecture, system features, API, integration how-to
Communicate with internal & external stakeholders to ensure proper implementation
Analyze portal (J2EE) performance, find bottlenecks and communicate across team. I contributed to the stability
and performance the system
PHP Team Leader – N2V
php, vbulletin, zend-framework, mysql, replication, apache, git
May 2009 → Jun 2010
Led the development & system operations for a very large online women community (ranked 11xx on Alexa worldwide, 12-15
on KSA). My team was responsible for scaling and improving the performance of the platform and for the development of new
product features.
Key Responsibilities:
Lead the development and operations
Continously analyze performance and bottlenecks through the complete stack
Devise solutions and communicate across team & stakeholders Implement performance & scalability
improvements at the application or infrastructure level
Lead a small team to implement new product features based on vBulletin and Drupal
Set and maintain team processes, tools, guidelines, practices, conventions and standards
Communicate with stakeholders regarding all aspects of the product & the infrastructure
Head of Software Development – IT Synergy
Jul 2007 → Dec 2008
php, drupal, zend-framework, apache, mysql, subversion, gis, mapserver, geoserver, openlayers, kamap
Head the company software development department. Manage projects from proposal to implementation and to closure.
Reporting directly to the CEO & CTO.
Key Responsibilities:
Manage projects from inception to closure
Prepare proposals and win new software development projects
Estimate schedule & cost for new projects during proposal preparation and during the different project phases
Bootstrap projects, assemble teams, prepare schedules, cost, system features break-down, kick-start different
project processes
Main point of contact between all stakeholders regarding all aspects of managed projects
Improve the company SDLC
Set and maintain team processes, tools, guidelines, practices, conventions and standards
Explore new ways, technologies and approaches for improving the software development practice company-wide
Attract and select new talents
Coach developers
Lead complete implementation of selected projects
Participate in setting company's technical direction and strategy
Participate in defining and improving the company's internal culture
During that time, I also made many contributions to Drupal, browesable through my drupal.org public profile, and to Zend
Framework 1 (archived, samples):
ZF-3358
ZF-3355
ZF-2988
ZF-2870
Senior Software Developer – IT Synergy
php, drupal, mambo, joomla, sugarcrm, mysql, subversion, gimp, gis, mapserver, kamap
Jul 2005 → Jun 2007
Build and maintain new and legacy web applications
Gather & analyze system requirements
Design UIs and implement them using standard XHTML and CSS
Estimate development tasks
Mentor juniors and new comers
Performance Engineer – EgyFilm
Apr 2006 → Sep 2006
Analyzing and assessing bottlenecks of high traffic entertainment portal
Analysis on the application layer, and the services layer (LAMP)
Working with System Administrators and/or Development team for evaluating and carrying out candidate solutions
Measurement of performance gain or lose
Web Developer, Designer and System Administrator – EgyFilm
Jul 2001 → Jun 2005
I was responsible for the development and day-to-day maintenance of a high traffic portal focused on the film industry, usually
ranked between 3k and 10k amongst other websites worldwide traffic wise according to alexa.com.
Though my job responsibilities weren't very well defined, I was usually responsible for launching new services and designing
advertisement campaigns. I was also maintaining a home made CMS and was running its GNU/Linux based servers.
Key Responsibilities:
Developing custom modules for the content management system
Administrating Apache web server and MySQL RDBMS on the main server of the portal website.
Site development include graphics design, front-end code and server side code
Provide different kinds of consultancy and technical support to various departments and partners
Education
PMP Preparation Course – RITI
project-management, pmp
Dec 2011 → Current
PMP is a project management credential offered by PMI. This course explained PMI's approach to project management which
– while different from Agile & Scrum – provides a solid foundation of the working corner-stones of project management. It
covered management of scope, time, cost, human resources, quality, risk, as well as communication and procurement.
Software Process Improvement – Software Engineering Competency Center
software-engineering, cmmi, project-management
Aug 2007 → Nov 2007
The course aims at improving the quality of software engineering. I attended the following topics:
Overview of Software Engineering with a focus on CMMI
Requirements Engineering
Project Management
Configuration Management
Visual Effects – Raa'fat ElMeihy Cinema Arts & Technology Academy
softimage, photoshop
Oct 2006 → Nov 2007
A one year visual effects course on:
The art and application of visual effects for cinema, using Softimage XSI systems
General cinematic topics including: directing, photography, screen writing, Greek mythology, etc
Video editing and composting
Bachelor of Information Systems – New Cairo Academy for Science & Arts
Projects & Interests
Stack Overflow – http://stackoverflow.com/users/43597/amr-mostafa
Written 32 answers. Active in java and php.
Sep 2003 → May 2007
2008/12 → Current
JHipster – https://github.com/amr/generator-jhipster
java, gulp, angularjs, spring
Apr 2014 → Current
Hipster stack for Java developers. Yeoman + Maven + Spring + AngularJS in one handy generator.
For me, it represents many good ideas for building modern Java / Spring web apps with modern front-end tooling.
I've contributed various patches with the majority being for GulpJS builds, which led to me being the current primary maintainer
of Gulp in the project.
backup-tools – https://github.com/amr/backup-tools
shell
Jun 2011 → Current
An organized set of scripts for backing up projects data to a remote server
Working with our system administrator who could only write in bash, we set out to create a simple backup system for use in
the company. I designed the application theory of operation, its configuration system, and supervised the implementation to
ensure correct implementation of things like atomicity, resilience, security and data integrity. I also wrote the rsync-wrapper (in
utilities/) and wrote 90% of the documentation.
mod_log_performance – https://github.com/amr/mod_log_performance
c, apache
Apr 2011 → Current
Logs performance-related stats for Apache 2.x Prefork MPM
Back in 2009, was leading development for a very busy portal running a LAMP stack, one of the busiest in the world, ranked
as 10xx on alexa world-wide. We had this problem where some of our PHP (mod_php) requests would leak memory, causing
their HTTPd processes memory usage to eventually sky-rocket. No existing tools at the time have helped in identifying which
requests actually cause this. I implemented this minimal module for the Apache HTTP server, to log the memory usage of
each httpd process before/after the request is processed. It was immediately successful in identifying which requests where
responsible for the faulty behavior.
rsod – https://github.com/amr/rsod
Reverse SSH On Demand
Nov 2008 → Current