Back-end Developer2016 - 2018LIQID GmbH
Technologies: Ruby on Rails, Sidekiq, Docker, Postgres, SEPA, XML, JSON
- Built the invitation system for inviting other users controlling the accounts.
- Built the integration with Intercom.
- Built the SEPA/XML exporter for charging the invoices to the bank.
- Built the invoices system.
Full-stack Developer2015 - 2016Priori Data GmbH
Technologies: Ruby on Rails, Big Query, Ruby, Bash
- Implemented a better scraping approach for both Android and iOS partner accounts.
- Maintained the PRO rails application.
- Implemented parts of the Discovery application.
- Re-implemented parts of the public data scrapers for iTunes and Google Play stores.
Back-end Developer2013 - 2015AskNative
Technologies: Ruby on Rails, Redis, Memcached, MongoDB, Stripe Payments
- Reimplemented large portions of an API to follow better design patterns (hexagonal architecture and the pub/sub pattern) and best practices (thin models, thin controllers, and single responsibility service objects).
- Implemented a test suite for the API.
- Implemented an events feature supporting booking via a Stripe booking service.
- Reimplemented caching for better response times (fixed a bug in the caching of active model serializers).
- Gitsubmodule (Development)https://github.com/mad-raz/gitsubmodule
A Bash script that wraps features for adding and removing submodules to a Git project. It is mainly used to manage installing and removing of Vim plugins.
- RM (Development)https://github.com/mad-raz/rm
A Bash script for new users to protect against deleting important data via the "rm" command. The script uses the system trash instead of deleting the files completely.
- EGP Rates CLI (Development)https://github.com/mad-raz/EGP-Rates-CLI
A small CLI to show the exchange rates of EGP from twenty different banks in a cool terminal table
- EGP Rates (Development)https://github.com/mad-raz/EGP-Rates
A gem that scrapes the exchange rates of EGP from twenty different banks.
- Clean Code and The Art of Exception Handling (Publication)Exceptions are as old as programming itself. An unhandled exception may cause unexpected behavior, and results can be spectacular. Over time, these errors have contributed to the impression that exceptions are bad. But exceptions are a fundamental element of modern programming. Rather than fearing exceptions, we should embrace them and learn how to benefit from them. In this article, we will discuss how to manage exceptions elegantly, and use them to write clean code that is more maintainable.
- The Publish-Subscribe Pattern on Rails: An Implementation Tutorial (Publication)The publish-subscribe pattern] (or pub/sub, for short) is a messaging pattern where senders of messages (publishers), do not program the messages to be sent directly to specific receivers (subscribers). Instead, the programmer "publishes" messages (events), without any knowledge of any subscribers there may be. This article provides insight in how to use the pub/sub pattern, in Rails, to communicate messages between different system components without these components knowing anything about each other's identity.
- Ahmed is a mentor in the Toptal Global Mentor’s Program. This program is a partnership between Toptal and General Assembly to provide high quality mentorship for students from minority and low income backgrounds who are looking to begin their careers as professional software engineers. Ahmed shows commitment to diversity in tech by mentoring a General Assembly student every week for a year, covering everything from coding tips and tricks to advice on making it in the industry.
FrameworksJSON Web Tokens (JWT), Ruby on Rails (RoR)
Libraries/APIsRuby on Rails API, GitHub API, Google APIs, Facebook API
ToolsCodeship, Travis CI, Wercker, GitLab, GitHub, Terminal, Vim Text Editor, RSpec, Git, Basecamp, Vagrant, BigQuery
ParadigmsContinuous Integration (CI), REST, Test-driven Development (TDD), Behavior-driven Development (BDD), Continuous Deployment
PlatformsHeroku, MacOS, Software Design Patterns, Amazon Web Services (AWS), Linux, Docker
StorageJSON, PostgreSQL, Redis, MongoDB, NoSQL, Memcached
OtherAPIs, SOAP, Big Data, Unix Shell Scripting
- Bachelor's degree in Computer Engineering2005 - 2011Arab Academy for Science and Technology - Alexandria, Egypt