Software Developer

"I developed a server that locks the resources so that other programmes or clients cannot access it simultaneously."

BSc in Computers and Communications Engineering, Islamic University of Lebanon; MSc in Networks and Security, University of Kent.

I’ve always been interested in computer and telecommunications technologies, which is why I studied Computer and Communications Engineering for my undergrad degree, and then went on to complete an MSc in Networks and Security at the University of Kent. I have a wide variety of interests in different fields, and I decided to pursue a career in DevOps, which is also known as software infrastructure engineering or site reliability engineering.

I started with CGG in January 2019 as a software developer in the Apps & Infrastructure team. The tasks of the team include development, management and support of software libraries, systems, scripts, databases, etc. Basically all low level software that provides an interface between the actual physical data and software developers is our responsibility. We develop APIs that helps them access the data easily and efficiently, scripts that allow them to run their software smoothly and tools that automate repeated tasks.

For example, geophysicists run jobs to process vast amounts of data. Those jobs, which are a collection of software programmes, often require huge system resources. In some cases, a job may fail due to limited memory or due to multiple jobs running on the same machine and the solution is usually simply restarting the job. We developed a system that can detect those failures, notify us that a job failed, and then automatically rerun the job without any manual intervention. This saves the geophysicists a lot of time and irritation; and it saves us time as well since we don’t need to debug failures that correspond to temporarily limited resources.

Another example that I’m working on right now, is a distributed resource locking service. Sometimes we get different programmes trying to access and modify the same data at the same time, which causes conflicts, failures and data corruption. I developed a server that locks the resources so that other programmes or clients cannot access it simultaneously. For instance, a client sends a request to the server to lock a file, but if the file was already locked by another client, the server keeps the client waiting until the other client finishes and unlocks the file. This service allowed developers to synchronise programmes running on different machines at the same time.