Experience

Amazon Web Services

Work as part of the AWS commerce platform team which generates, computes and adjusts the AWS services and AWS marketplace bills.


Software Development Engineer at AWS Commerce Platform - Berlin, Germany.
August 2019–August 2020

Amazon Web Services Internship

Generate managing system for maintain the new EC2 service and Adding new features for EC2 core platform.


Software Development Engineer Intern at AWS EC2 - Cape Town South Africa.
August 2018–November 2018

Amazon Web Services Internship

Re-designed two existing EC2 APIs with a new logic and technologies for reading and creating Placement Groups, one of the core EC2 resources, in a new EC2 web service.


Software Development Engineer Intern at AWS EC2 - Cape Town South Africa.
August 2017–November 2017

Algorithms Training

ACM chapter algorithms training camp - 3 months at Alexandria University (Summer 2015).

Phone Development Training

Introduction for phone development by INOVA - 1 month at Alexandria University (Summer 2016) .

Education

See where I spent time studying and gained early knowledge to prepare for my professional life.

Faculty of Engineering, Alexandria University

Computer and Systems Engineering
2013 - 2019




Cambridge University

IGCSE
2010 - 2013

Project

See where I spent time studying and gained early knowledge to prepare for my professional life.

Raven Messenger

Graduation Project: Raven is a End-to-end encryption smart messaging android app with functionality: Emoji prediction on text provide five emojis related to what user typed and Smart reply on text analyzes the incoming message and suggests replies.
Technologies: android, Java, firebase, spark, REST API, E2EE, ML, nodejs/javascript, c++

Vector Based Drawing Application

A Drawing and Painting with Design and implement a GUI that allows the following functionality for the user on all the shapes : Draw Color, Re size, Move, and Delete. And allow the user to undo or redo any action performed, Dynamic Application Extensions and plugins, Save and load Provide an option in GUI to save the drawing in XML and JSON files.
Technologies: Java

Java Database Connectivity (JDBC) API

Simple UI for using the database with complete log of the operations done on the database through the DBMS, Operations include initiating DB connections, query execution, errors and warnings, connections closing and Operations timestamp by the use log4J package.
Technologies: Java

SIC/XE Assembler

A Two pass assembler that converts SIC/XE instructions into object code to be run using a SIC/XE simulator.
Technologies: C++

Java Compiler

Syntax Directed Translation Scheme to convert Java code to Java bytecode, performing necessary lexical, syntax and static semantic analysis (such as type checking and Expressions Evaluation).
Technologies: C++

Pintos

Pintos is a simple operating system framework for the 80x86 architecture. It supports kernel threads, loading and running user programs, and a file system, but it implements all of these in a very simple way.
Technologies: C

Circus of Plates

It is single player-game in which each clown carry two stacks of plates, and there are a set of colored plates queues that fall down and he tries to catch them, if he manage to collect three consecutive plates of the same color, then they are vanished and his score increases. Complete log of the operations done on the game (e.g., user actions, objects intersections, creation or reusing of objects) by Log4j package. The game support 3 levels of difficulties with so many criteria for difficulty.
Technologies: Java

Signal Flow Graph Solver

SFG solver enable the user to draw the graph's nodes and put the gains on the edges by a very simple friendly GUI with all the modification function edit, delete and redraw nodes and edges. And a result view by all details needed to know the answer.
Technology used : Java

Connect Four Game

A Cmd user-interface Connect Four game implemented in C language, with the following features: Computer player with a Minmax AI Algorithms and Two Player. Player can undo and redo during playing. Player also can save game and load Multiple of plays at any time. Save and display a list with high scores achieved. XML formatted configuration file.
Technology used : C

Image Viewer

A Qt application with two versions to desktop and android. Features included: rotation, zooming, saving and cropping of the image.
Technologies: C++

Pedometer

Android mobile application that uses the accelerometer sensor in the phone to calculate steps count, distance, speed and calories.
Technology used : Android

Unix Shell

A command-line interpreter that provides a traditional user interface for the Unix operating system. It supports Interactive and Batch modes.
Technologies: C

Bulletin Board System

A simulation of news bulletin board system. In this system there are several processes accessing the system, either getting the news from the system or updating the news. The system consist of a server and several remote clients that communicate with the server using the TCP/IP protocol suite.
Technologies: Java

Virtual Book Library

E-library Android Mobile Application uses Google books API as the main database source with User customized features like a recommendation system based on history of the previous user session, favorite books and search to Show suggestions.
Technologies: Android, Java, REST-API and Spark

Technical skills

Programming Languages: Java, Ruby, C, C++, JavaScript
Design Concepts: API Design, OOP, UML, Design patterns
Software Development Frameworks: Agile/Scrum Methodology, TDD
AWS: S3, IAM, AWS Lambda, Amazon SWF, AWS Cloud Formation, Amazon CloudFront
Operational: CI/CD, Infrastructure as Code
Database Technologies: MySQL
Data Access Technologies: Spring Data JPA, Hibernate
Back-end Frameworks: Java Spring Framework, Google Guice
Front-end Frameworks: React, Redux, Saga
Mobile Technologies: Android
Source Code Control: Git
Operating Systems: Windows, Linux (Ubuntu), Mac OS
Other Technologies: LATEX, Unix tools and commands

Contact

Get in touch with me if you would like to do business together, share an idea or just say hello.