Scroll To View More
Ahmed AbdelHalim

Ahmed AbdelHalim

Berlin, Germany
Member since January 8, 2014
Ahmed is a back-end (API) developer who loves building useful and fun tools. He also has experience as a web developer and emphasizes writing clean code that adheres to the best coding practices.
Ahmed is now available for hire
Portfolio
  • LIQID GmbH
    Ruby on Rails, Sidekiq, Docker, Postgres, SEPA, XML, JSON
  • Priori Data GmbH
    Ruby on Rails, Big Query, Ruby, Bash
  • AskNative
    Ruby on Rails, Redis, Memcached, MongoDB, Stripe Payments
Experience
  • Ruby, 5 years
  • REST, 5 years
  • Software Design Patterns, 4 years
  • Ruby on Rails (RoR), 4 years
  • Test-driven Development (TDD), 4 years
  • Python, 2 years
  • Docker, 2 years
Berlin, Germany
Availability
Part-time
Preferred Environment
Mac OS X, Vim, Rails, Bash, Vagrant, Docker, Git
The most amazing...
...thing I've published is a blog post on Toptal's blog on implementing the Publish-Subscribe pattern in Rails.
Employment
  • Back-end Developer
    2016 - 2018
    LIQID GmbH
    • 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.
    Technologies: Ruby on Rails, Sidekiq, Docker, Postgres, SEPA, XML, JSON
  • Full-stack Developer
    2015 - 2016
    Priori Data GmbH
    • 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.
    Technologies: Ruby on Rails, Big Query, Ruby, Bash
  • Back-end Developer
    2013 - 2015
    AskNative
    • 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).
    Technologies: Ruby on Rails, Redis, Memcached, MongoDB, Stripe Payments
Experience
  • 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.
Skills
  • Languages
    Ruby, Python
  • Frameworks
    JSON Web Tokens (JWT), Ruby on Rails (RoR)
  • Libraries/APIs
    Ruby on Rails API, GitHub API, Facebook API, Google APIs
  • Tools
    Terminal, Git, RSpec, Vim Text Editor, GitHub, GitLab, Wercker, Travis CI, Codeship, Vagrant, Basecamp, BigQuery
  • Paradigms
    Continuous Integration (CI), REST, Test-driven Development (TDD), Behavior-driven Development (BDD), Continuous Deployment
  • Platforms
    Mac OS, Heroku, Linux, Software Design Patterns, Amazon Web Services (AWS), Docker
  • Storage
    JSON, Redis, PostgreSQL, MongoDB, NoSQL, Memcached
  • Other
    APIs, Unix Shell Scripting, Big Data, SOAP
Education
  • Bachelor's degree in Computer Engineering
    2005 - 2011
    Arab Academy for Science and Technology - Alexandria, Egypt
I really like this profile
Share it with others