Ahmed AbdelHalim, Software Developer in Berlin, Germany
Ahmed AbdelHalim

Software Developer in Berlin, Germany

Member since January 8, 2014
Ahmed is a senior API-focused, back-end, and infrastructure developer with more than nine years of experience. He has over four years in infrastructure automation and DevOps with experience in security analysis and red teaming exploit-testing. An avid fan of automation, sustainability, design patterns, and clean code, Ahmed is always interested in deriving a better problem-solving method for challenging tasks and learning sensible new technologies and tools when the need arises.
Ahmed is now available for hire

Portfolio

  • Sapera
    Ansible, Terraform, AWS, Docker, Vagrant, Makefile, Ruby on Rails (RoR)...
  • LIQID GmbH
    JSON, XML, PostgreSQL, Docker, Sidekiq, Ruby on Rails (RoR), Ruby
  • Priori Data GmbH
    Google BigQuery, Bash, Ruby on Rails (RoR), Ruby

Experience

Location

Berlin, Germany

Availability

Part-time

Preferred Environment

Git, Docker, Vagrant, Bash, Ruby on Rails (RoR), Vim Text Editor, MacOS

The most amazing...

...fun project I worked on was Conway's Game of Life terminal CLI in multiple languages.

Employment

  • Senior Developer/DevOps

    2018 - 2021
    Sapera
    • Implemented infrastructure as code (IaC) for different projects using Terraform and Ansible.
    • Standardized the deployment process (and maintained the process documentation).
    • Built templates to provision infrastructure on different cloud providers and development stages.
    • Built standardized workflows, using CircleCI to automate deployments for internal and external projects.
    • Implemented and maintained the (Rails 5) JSON API serving our infographics portal.
    • Maintained more than 99% of the documentation coverage of the infographics portal API and more than 90% of the test coverage.
    • Worked with Docker to provide deliverables for some of our external projects.
    • Provided support and tutoring to work with our standard deployment workflows internally and externally.
    • Worked closely with our systems engineer to support various DevOps tasks.
    • Rewrote, maintained, and provisioned some of the data pipelines to adhere to better security standards.
    Technologies: Ansible, Terraform, AWS, Docker, Vagrant, Makefile, Ruby on Rails (RoR), PostgreSQL, Redis, MongoDB, MySQL, React, TypeScript, Next.js, Python, Bash, Git, Tmux, Sidekiq, CircleCI, Travis CI, Asana, Jira, Notion, DevOps
  • Senior Back-end Developer

    2016 - 2018
    LIQID GmbH
    • Maintained the RESTful API used by admins and front-end.
    • Implemented and maintained the integration with Deutsche Bank.
    • Applied and maintained the integration with the Intercom CRM.
    • Executed and maintained the internal invoicing system.
    • Implemented the new authentication layer using JWT (RFC 7519).
    • Carried out the two-factor authentication (2FA) for user/client login.
    • Integrated other services like DocuSign, Postident, etc.
    • Implemented day-to-day business, marketing, and technical requirements.
    Technologies: JSON, XML, PostgreSQL, Docker, Sidekiq, Ruby on Rails (RoR), Ruby
  • Full-stack Developer

    2015 - 2016
    Priori Data GmbH
    • Maintained the external Rails web (dashboard) app.
    • Optimized the scraping process of getting data from the Apple and Google Play stores.
    • Reimplemented the queueing and monitoring around the scrapers.
    • Migrated acquired data from different resources to Google BigQuery.
    • Maintained and provisioned different purpose VM instances on Google Cloud Platform, using Chef.
    • Reimplemented the “extract” step in the ETL process, using an API-based crawler instead of the PhantomJS browser.
    Technologies: Google BigQuery, Bash, Ruby on Rails (RoR), Ruby
  • Back-end Developer

    2013 - 2015
    AskNative
    • Reimplemented large portions of the API to follow better design patterns, such as the hexagonal architecture and pub/sub patterns.
    • Implemented the test suite for the API with 80% coverage and mutation testing.
    • Executed the events-booking feature via Stripe API.
    • Carried out caching for better API response times.
    • Maintained the Heroku stacks for staging and production.
    Technologies: Stripe Payments, MongoDB, Memcached, Redis, Ruby on Rails (RoR)

Experience

  • Game of Life CLI
    https://git.sr.ht/~a14m/game-of-life

    A repo that includes different implementations for Conway's Game of Life in various programming languages (currently in Ruby and Rust) as a command-line interface (CLI) to simulate a Game of Life cyclic and periodic boundary condition and animate the GoL universe on the terminal.

  • Gitsubmodule
    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
    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
    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
    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.
  • Toptal Mentor
    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.

Skills

  • Languages

    Ruby, Bash, XML, Python, TypeScript, Rust
  • Frameworks

    JSON Web Tokens (JWT), Ruby on Rails (RoR), Next.js
  • Libraries/APIs

    Ruby on Rails API, GitHub API, Sidekiq, Google APIs, Facebook API, React
  • Tools

    Codeship, Travis CI, Wercker, GitLab, GitHub, Terminal, Vim Text Editor, RSpec, Git, Basecamp, Vagrant, Ansible, Terraform, BigQuery, Makefile, Tmux, CircleCI, Asana, Jira, Notion
  • Paradigms

    Continuous Integration (CI), REST, Continuous Delivery (CD), Test-driven Development (TDD), Behavior-driven Development (BDD), Continuous Deployment, DevOps
  • Platforms

    Heroku, MacOS, Docker, Software Design Patterns, Amazon Web Services (AWS), Linux
  • Storage

    JSON, PostgreSQL, Redis, MongoDB, NoSQL, Memcached, MySQL
  • Other

    APIs, Stripe Payments, Google BigQuery, SOAP, Big Data, Unix Shell Scripting

Education

  • Bachelor's Degree in Computer Engineering
    2005 - 2011
    Arab Academy for Science and Technology - Alexandria, Egypt

To view more profiles

Join Toptal
Share it with others