In August 2021 I joined the Programming Group at the University of St. Gallen, Switzerland as a PhD student where I'm supervised by Guido Salvaneschi.
Between 2017 and July 2021 I was an R&D software developer at Agilent Technologies (formerly Genohm) in Lausanne, Switzerland.
In June 2017 I obtained a master's degree in computer science from the École polytechnique fédérale de Lausanne (EPFL) in the LAMP lab. In my thesis I simplified conceptually a polymorphic safe-and-precise effect system.
In 2015 I obtained a bachelor's degree in computer science and a minor in mathematics from the American University of Beirut (AUB). My bachelor's graduation project was to design and implement a quantum functional language.
I am an avid reader, my Goodreads profile lists all my non-technical interests (those outside of CS and math). I speak/read fluently three (natural) languages: English, French, and Arabic.
In my spare time, when I'm not reading or programming, I play Go, snooker, and the mandolin.
I am proficient in many programming paradigms; functional, imperative, and object-oriented, with preference to functional languages. I mainly use Python for small applications, Bash for write-once-execute-once code, C and D for any heavy lifting, Octave for quick plotting and mathematical computations and Haskell for any type-theoretic experiments and programs that must be correct. I am proficient in these programming/scripting/markup languages:
My primary editor is Vim.
I live in the command line most of the time.
This graph represents a 69-state machine, in fact, a
quantum Turing machine [PDF]. It's a machine that
abides by the laws of quantum mechanics. This machine can be thought of performing
the following algorithm on each superposition |k,x⟩
in a 6-dimensional
Hilbert space
x ∈ ℕ8 k ∈ ℕ8 while |x-k| < 4: x := x + 1 mod 8This machine is significant to me because I devised it to exhibit conditional looping (as opposed to a statically-bounded loop) which I could not find in the literature. In the process I discovered that the fixed-point of a sequence of compositions of unitary functions may not be itself unitary which raises the question of computing the inverse of such a function.