Scroll To View More
Ahmed AbdelHalim, Software Developer in Berlin, Germany
Ahmed AbdelHalim

Software Developer in 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

  • REST, 5 years
  • Ruby, 5 years
  • Ruby on Rails (RoR), 4 years
  • Test-driven Development (TDD), 4 years
  • Software Design Patterns, 4 years
  • Docker, 2 years
  • Python, 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, Google APIs, Facebook API
  • Tools

    Codeship, Travis CI, Wercker, GitLab, GitHub, Terminal, Vim Text Editor, RSpec, Git, Basecamp, Vagrant, BigQuery
  • Paradigms

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

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

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

    APIs, SOAP, Big Data, Unix Shell Scripting

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