Joseph Khafaji

Software Engineer

A principal software engineer with 19 years of professional experience in the fields of information and telecommunication technologies. My passion is building clean, well tested and working software. I love diving deeper than average to understand how things work under the hood and what makes something tick. I consider myself as a generalist engineer who utilises his tools and development practises to excercise problem solving in an efficient and pragmatic manner.

Education

Msc. Telecommunication Engineering - University College London

20002004MastersUniversity College London - UCL

Employment

Senior Principal Engineer

May 5, 2020MyStarTutorLondon

MyStarTutor - An EdTech startup aimed at improving tuition experience for the general consumer

  • Introduced Kotlin as the primary langauge used within the platform
  • Maintained Java (11 & 17) based Microservices
  • Architected and built the MST Platform using Google Cloud (GCP)
  • Used Spring Boot as the primary Microservices chassis framework within the org
  • Encouraged and culivated the use of TDD and BDD as the main development practises for building business logic day to day
  • Chosen PostgreSQL (Google Cloud Storage) as the primrary RDBMS technology of choice
  • Utilised Kong as the API Gateway of choice within the org.
  • Created various Infra Microstacks for AutoPilot GKE (Kubernates), Cloud Storage, Networking, etc... using Pulumi as the Infra of Code (IaC) tool of choice
  • Chose GraphQL (Netflix DGS) as the API of choice to power MST's Mobile App

Senior Kotlin Developer

Feb 1, 2022Aug 1, 2022LendableLondon

Lendable - building a Buy Now Pay Later product (BNPL)

  • Kotlin
  • AWS
  • Kubernetes - EKS
  • Ktor
  • Koin
  • MySQL
  • Domain Driven Design (DDD)
  • Stripe

Senior Principle Engineer

Jan 1, 2016Jan 1, 2018Solera

Tech Lead - Solera - contract, London, UK

  • Designed and implemented a migration strategy of Autosoft's insurance backend systems from inhouse VMs into an on-premise cloud solution using Cloud Foundry.
  • Planned and executed a tech modenisation project and a move from OSGi-based monolithic architecture into a microservice architecture using docker and spring boot.
  • Refactored mission-critical business logic that’s needed by the backend and by the app for offline usage into a shared library implemented by ScalaJS to allow reuse across the backend (Java) and the frontend (Javascript and React)
  • Extracted the billing business logic from a monolithic codebase into a standalone Microservice using spring boot and implemented a highly complex billing strategies which required backtracking to allow accurate billing
  • Successfully introduced the reproducable builds concepts into the platform by utilising a combination of an externalised configuration pattern as well, jgitflow and the deploymeny of build artifacts into Nexus.

Senior Java Developer

Jun 1, 2017Oct 1, 2017Masabi

Senior Software Engineer / Tech Lead - Masabi - contract, MASABI, London, UK

  • Designed and implemented Chase Payment Service Processor (PSP) integration into Masabi Payment Gateway (MPG).
  • Enhance and clarify the errors that a client of Masabi Payment Gateway (MPG) would get in the case transaction failures by consistently mapping and categorizing error codes between MPG and the various PSPs.
  • Designed and implemented a migration plan of Apple Pay encryption keys from file-based storage into a database one which simplifies the provisioning and maintenance activities of those keys.
  • Piloted accepting and processing Bitcoins by MPG to increase the supported payment forms.

Senior Software Engineer

Jan 8, 2017Jun 8, 2017ITV

Senior Software Engineer / Tech Lead - contract, ITV, London, UK

  • Participate effectively in the initial requirement analysis sessions and acquire knowledge from various departments in order to assist guiding and implementing a migration strategy going forward.
  • Early involvement to help assembling a team of senior developers to take part of an overarching systems migration project from an outdated version of the Landmark software which formed a backbone piece of mission critical applications built around it.
  • Designed and implemented a test and compare transition strategy from a legacy telnet-based spot booking API into a SOAP API making sure that the migrated to API produce exact same result as the legacy one.
  • Built a feature-toggle based migration strategy to avoid long running branches and a big bang cutover and favour an incremental release strategy instead.
  • Optimised the unmaintained Jenkins Pipelines decreasing the release schedule from months to a weekly and eventually to an on demand fashion.
  • Designed a transition plan for extracting business specific data from Landmark into a data warehouse solution built in house.
  • TDD, ATDD, BDD, Java 8, Dropwizard, Ingres DB, UNIX, Linux, Puppet, PostgreSQL, MS-SQL, Landmark, Puppet, Docker, Maven, Gradle, Bash, Wiremock, Jira, Jenkins, Pipeline, Library, Puppet, SOAP, RESTful API

Senior Software Engineer

Apr 1, 2015Jan 8, 2017Masabi

Senior Software Engineer / Tech Lead - contract, MASABI, London, UK

  • Extract an existing non tested payment module from a monolithic code to plant the seed for a Payment Gateway Microservice
  • Designed and implemented a CI/CD pipelines around the extracted Payment Gateway Microservice, using Jenkins and later Bamboo
  • Migrate the source control from SVN to Git. Move to git workflow for daily usage.
  • Upgrade from java 6 to java 8.
  • Separate the payment gateway API from it’s implementation to provide for loose coupling and allow the two to evolve independently.
  • Create a functional testing suite to throughly test the existing functionalities against various payment processors before adding any features, building a DSL using YatSpec in a composable manner. Reducing the cost of writing a single test.
  • Lead the development effort of major integration with Bank of America and Vantiv payment processors. Launching this with exceptional success for Masabi and their clients in NewYork. Featured in NewYork Governer’s speach
  • Designed and implemented a brand agnostic split payment solution with customizable split strategies.
  • Tackle PCI compliance issues such as migrating from locally encrypting and storing payment details into using a 3rd party tokenisation solution, TokenEx. This facilitated the concept of portable payment instruments in which customers can change device but still retain their previously entered cards data as this is now tokenised server-side rather than being client-centered.
  • Evaluate various vault tokenizer solutions as part of PCI compliance and assist in choosing the most optimum provider and implementing the integration with it.
  • Migrating from a simple connection pooling mechanisim to hibernate multi-tenancy solution which improved the overall performance of the payment gateway.
  • Designed and implemented a payment wallet solution via integrating with MasterPass.
  • Implement the Luhn check algorithm to allow the Payment Gateway to distinguish and validate credit and debit card numbers.
  • Leading the implementation of a barcode standard text-based AMTRAK for a travel agency in the US which allows the interoperability for ticket issuance and scanning across railway operators.
  • Implemented a low level european standard barcode format protocol, UIC. Build and embed the conformant encoders and decoders into the broker server software.
  • Designed, implemented and integrated a solution that utilizes MySql and Hibernate optimistic locking capabilites into providing a guarantee that a transport agency does not run into an issue of selling more tickets than the available seat on any given train.
  • TDD, ATDD, BDD, Java 8 SE, Java 7 SE, Java 6 SE, J2EE, Tomcat, Embedded Jetty, Spring, Hibernate with multi-tenancy, Git, Svn, Maven, Linux, Puppet, Docker, Maven, Gradle, Bash, Jira, Clubhouse, VMWare, Amazon AWS, Amazon RDS, Shell Scripting (bash), Jenkins, Bamboo, YatSpec, JCabi, Apple Pay, Google Pay, Luhn Check Algorithm

Tech Lead

Apr 1, 2015Jan 1, 2017BP

Tech Lead, BP AND MINI COOPER VIA AKQA - CONTRACT, London, UK

  • Leading a team of backend and frontend developers in an agile environment towards delivering an intranet site for BP, Aral and Castrol sites, in addition to providing guidance towards adherence to best development practices and testing within Adobe CQ.
  • Lead the initial planning phase of an intranet site for BP, Aral and Castrol. Designing the site structure, share prices and station feeds processing and contributing to the whole development and delivery plan.
  • Encouraging and coaching the team on various refactoring techniques in an aim to make the legacy code that the team inherited easier to change and maintain.
  • Designing, implementing and maintaining the git branching and merging strategy and mentoring the team about GIT best practices.
  • Leading a project to analyze and implement a migration from Adobe CQ 5.5 to AEM 6.x
  • Introducing Selenium functional testing and building the blueprint infrastructure and CI plans to support it.
  • Being the connection point between the development team and the 3rd party DevOps team when it comes to dealing with development and testing environments.
  • Being an effective member of a development team working in the MINI Cooper website developing backend services.
  • TDD, ATDD, BDD, Java 7, J2EE, Java Servlets, Adobe AEM, Apache Maven, Apache Ant, Groovy, GIT, Bamboo Integration server, JIRA, GitHub, Selenium WebDriver, Apache Felix, Apache Sling, Test-NG, AKAMAI CDN,, CQ Dispatcher, Apache, Vagrant, Chef, Varnish, Slice, Sling Models, Feature Toggles, SlingShell, Linux, Unix, Shell Scripting (bash)

Senior Software Engineer / Tech Lead

Apr 1, 2012May 1, 2014Digitas LBI

Senior Java Developer, Tech Lead, LBI, London, UK

  • Heavily encouraging software development best practices across the team and setting the standards on the project in regard to Test Driven Development (TDD), clean code and the refactoring of legacy software into design patterns with ensuring having a full test coverage prior to any refactoring process.
  • Developing a customized testing framework using Selenium WebDriver and wrapping that with a Page Object Model (POM) overlay in a componentized manner. The aim of this in-house developed framework was to replace a legacy Scala-based and story-based framework with a new revamped journeybased test automation framework. The framework will be presented in the upcoming London Selenium meet up in Feb 2014.
  • Being responsible for designing and shaping the testing strategy across the project when it comes to the level of testing, that being unit, integration or functional testing and the selection of the right mix of testing framework and technologies that best fit the needs of the project.
  • TDD, ATDD, BDD, Java 6, Scala, J2EE, Adobe CQ 5.5, Maven, Ant, Svn, Git, Bamboo, Jira, FishEye/Crucible, Selenium WebDriver, Apache Felix, Apache Sling, Java Content Repository (JCR), Scala Test, Findbugs, PMD, JSoup, SOUP-UI, Mockito, JUnit, SOAP, Oracle Coherence

Software Engineer

Sep 1, 2011Apr 1, 2012Scorecard Systems

Java/Oracle Billing Engine Developer, SCORECARD SYSTEMS, London, UK

  • Being part of the core billing engine development team, planning and developing new engine features and enhancing existing ones.
  • Development and the customization and enhancement of the various ETL data loading processes.
  • Billing and subscriber statistics and data mining and analysis.
  • Java 7 SE, Java 6 SE, Java 5 SE, J2EE, Oracle SQL, Oracle Pl/SQL, Glassfish 3.0, Maven, Ant, Svn, Multithreading, MS SQL Server, Transact-SQL, Teradata Database, Shell Scripting (bash), MS-DOS Batch files scripting

Senior Software Engineer

Sep 1, 2010Sep 1, 2011OpenCloud

Systems Engineer, OPEN CLOUD, London, UK

  • Being part of the rhino application server development team implementing the core features of the Rhino SLEE container.
  • Developing resource adapters (JMS, JBI and Mobile Location Protocol (MLP))
  • Developing SBB components serving as the building blocks for Telco services and acting as the project lead (mostly hand-on) for the development of the frontend/backend of the android/rhino-based RhinoCompanion app which has been demonstrated in the Mobile World Congress in Barcelona (Feb/2011)
  • Java 6 SE, J2EE, JAIN SLEE, JAIN SIP JMS, JMX, JBI, Enterprise Java Beans (EJB), JUnit, Android SDK, RTP, VoiceXML, XCAP, CAMEL, CAP, ISUP, MAP, REST, SOAP web services, WSDL, Shell Scripting (bash), Svn, Ant, Maven, Postgres SQL, MySQL, Rhino SLEE Application Server, Multithreading, Amazon EC2 Cloud Services.

Senior Software Engineer

Apr 1, 2010Sep 1, 2010Orange and France Telecom R&D - FT Labs

Voice Congvergence Team - Software Developer, ORANGE AND FRANCE TELECOM R&D LABS UK, London, UK

  • Implemented a JBI component (JSR-208) that provides a complete implementation of SIP RFC 3261 providing WSDL interfaces to facilitate the consumption of SIP services via web components in a transparent manner.
  • Implementing system benchmarking measuring the performance of the JBI components under stress testing.
  • Being part of the team developing the Orange One service contributed to the codebase of the backend SipServlets as well as revamping the android and the iPad frontend interfaces
  • JAVA 6 SE, J2EE, SIP Servlets, HTTP Servlets, Maven, Ant, svn, Shell Scripting (bash), Glassfish Application Server, Multithreading, Oracle OCCA, REST & SOAP web services, JMeter, WSDL, Phone Gap, Javascript, Android SDK, JBI, SIP RFC, JBoss Application Server, Oracle Weblogic

Senior Software Engineer

Nov 1, 2004Sep 1, 2009Huawei

Core Network and Billing Developer, HUAWEI, London, UK, UK

  • Implemented a GSM standard for Near Real Time Roaming Data Exchange NRTRDE for exchanging roaming data records across clearing partners.
  • head the billing development team building a custom GSM billing solution for a 10M subscribers in a high volume, high transactions environment.
  • Designed and developed various ETL processes to extract and transform call detail records for billing and reporting purposes.
  • Deeply involved in a data migration project phasing out legacy systems in favour of newly developed ones.
  • Designed and developed various value added GSM services around SMS, MMS, call routing service, Intelligent Network Services, etc...
  • Administering Microsoft Windows Server 2003 domain controllers.
  • Administering IBM AIX, Sun Solaris and Redhat Linux servers.
  • Administering Oracle databases.
  • Administering EMC storage systems
  • JAVA 1 SE, JAVA 1.2 SE, JAVA 1.4 SE, J2EE, Enterprise Java Beans (EJB), JSP, Servlets, Java Multithreading, Hadoop, Spring Framework, Tapestry, Swing, SMPP, SIP, Oracle database 9i & 10g, IBM Tivoli, Veritas, Oracle PL/SQL, Shell Scripting (bash ksh sh POSIX), Redhat, Mandrake Linux, SUSE Linux, SUN Solaris, IBM AIX, IBM HACMP Cluster, CISCO Networking, HUAWEI Billing System TopEng, GSM Network Planning, ICAP, ISUP, MAP, CAP, CAMEL, GSM Billing Standards, NRTRDE, Data Warehousing, MCSE, PHP, TAP, Data Roaming, Windows Server 2003