Adrien Toubiana

Software Engineer - adrien@toubiana.dev

Experience

Software Engineer

Microsoft - France
August 2021 - Present

Joined the Power Automate Desktop service backend team responsible of scheduling Desktop flow runs on clients machines. Developped a smarter machine selection algorithm to assign runs to the correct machines faster and reduce time between a Desktop flow being the next in queue and being actually run. Became the main developer of the Dataverse solution leading the development and integration of new features with the platform.

August 2020 - August 2021

Work on Power Automate Process advisor backend team from the start of the project to the Public Preview. Develop the Dataverse solution and work on integrating the product with the platform. With integration of lifecycle management in the data model from the beginning. Development of a console client tooling to improve debugging of new and existing features.

March 2019 - August 2020

Work on AI Builder from the start of the design to the public preview release and through the General Availability phase.

Design and implement multiple cross-scenario backend platform features, like the license checker, lifecycle management features (import and export of AI models), handling of backup and restore processes and an internal console debug tool. Work on improving performance of the Schedule Prediction feature, improved performance 100 fold by rebuilding the feature from scratch and batching requests. Collaborate on cross-team convergence efforts to reduce code duplication and allow every scenario to benefit from all the platform features.

November 2018 - February 2019

Work with the Dynamics 365 Customer Insights team to implement platform integration features. Add ability to export customer segments created in Customer Insights to Dynamics 365 for Sales.

October 2017 - April 2019

Work on the Microsoft Store Books ingestion team. Work in collaboration with remote teams to improve ingestion and store experience. Work to add new books providers to the store to grow the books catalog selection. Implement new features like preorder for the books in the store. Work on the sunset of the books category of the Microsoft Store.

Work on the Microsoft Store User Generated content ingestion team. Work on the new pipeline to push user submitted content to the Microsoft Store with the ability of having manual validations. Develop a dependency orchestrator using Azure Durable Functions to check educational content in order to automatically remove and report illegal content.

October 2017 - Present

Software Engineer Intern

Amazon - Luxembourg

Work in Amazon Logistics on an internal delivery tracking platform that allows all delivery station managers to better manage their deliveries by looking at real time metrics.

As part of this job, I implemented new features in the Ruby on Rails website and worked on Lambda functions written in Java. I also developed Machine Learning project (using LSTM) allowing users to see prediction of future values of the metrics for each of the delivery stations. This project was then deployed on AWS and is displaying the values in a user friendly way on the platform.

February 2017 - August 2017

Teaching Assistant ACU

EPITA - France

Work with a team of 5th year students to teach to third year students the basics of programming, some languages and technologies. We have to prepare the subjects, give presentations, help the students doing it, and correct their assignments.

We teach C, Unix and C++ to the students.

August 2016 - January 2017

Teaching Assistant YAKA

EPITA - France

Work with a team of 4th year students to teach to third year students different programming languages and technologies. We have to prepare the subjects, give presentations, help the students doing it, and correct their assignments.

We teach C++, Java, PostgreSQL, Haskell and Lisp to the students.

August 2015 - July 2016

Software Engineer Intern

Milestone Project - USA

Ruby on Rails development for StreamNation and Picturelife API.

  • Improvements on StreamNation’s dashboard to reflect the new functionalities of the app.
  • Redevelop small Node.js services that were used in Picturelife in Ruby on Rails to reduce the size of the technology stack required to use the app.
  • Migration of Picturelife DynamoDB database to a self hosted Cassandra database. Huge rewrite of the models. Migrated everything from the code to the data so that the migration happens without interruption.
  • Main developer of the Picturelife backend during a few months. Day to day maintenance and bug fixes.
September 2015 - January 2016

Projects

Ask Me Anything

C#, .Net Core, Azure Functions, Typescript, React, Fluent UI

An Hackathon project done in 3 days at Microsoft. It allows to setup a Q&A with ability for users to vote on which questions they want answered first.

The idea is to allow anyone to ask questions during large remote-first Ask Me Anything meetings that are common in large companies in times of pandemic. Adding the ability to vote makes it possible for the best questions to be answered first and adds interactivity that is not present in traditional in-person Ask Me Anything sessions.

The project contains a “Presenter view” that can be shared during the meeting so that everybody can follow and read along the questions. This view contains a QR Code allowing viewers to ask their questions or vote.

Web Extension: Web Rating

C#, .Net Core, Azure Functions, Typescript, Chrome Web Extension

An Hackathon project done in 3 days at Microsoft.

The idea is to allow everybody to rate and comment any website page they come across on the web. These rating and reviews can then be used by other users to decide whether a page is of interest to them or not. It also displays the rating of pages on links as they appear and before they are clicked on.

The project is shipped as a browser extension that can be installed in Microsoft Edge, Chrome, Firefox, and any Chromium browser.

ToubiGames

C#, Unity, Azure Functions

A collection of WebGL playable mini-games that are playable in any modern browser without any download. Contains 8 fun games with online leaderboards to compete with players all around the world.

Developed in 2 separate parts, one Unity game that is then deployed to GitHub Pages and a Leaderboard API developed in C# using Azure Functions that runs on Azure.

GDPR Explorer

Ruby

A collection of scripts to generate JSON and CSV reports from your own GDPR data exported from different services. Currently works with Facebook, Instagram, WhatsApp, Twitter, YouTube and Apple Music data.

Series Bot

A Facebook Messenger bot to list TV series episodes to watch, display a planning for next releases, mark episodes as watched, rate, get a daily reminder of new episodes to watch. This project is based on the Betaseries API.

Implementation of this project was done as a serverless Azure Functions, using Azure Durable Functions for orchestration of daily reminders. This allows for a very cost effective implementation and allowing very fast deployments and no operational work to keep the project running.

Integration of a CI/CD using Github Actions to test and deploy the product on each commit.

iTunes Library Insights

Ruby

A tool to extract information from iTunes Music Library XML file. Allows to get a ‘Year in review’ summary like what you would get if you used a streaming service like Spotify.

Extracts information about Music and Audiobooks consumption.

VS Code Extension: Base64 Utils

An open source Visual Studio Code Extension to Base64 encode and decode easily right from your text editor. Implemented integration with the web version of Visual Studio Code to allow the extension to keep on working with this new version.

File Explorer

Ruby on Rails

A simple Ruby on Rails web server allowing to explore a filesystem. It allows to see file content, download files, move, upload and remove files and directories.

INVASIS - Graduation Project

Java, Python, Tensorflow, Protobuf

INtelligent Video AnalySIS.

Detect, track and recognize persons in a video surveillance camera network using machine learning algorithms.

MyMaya

Java, JavaFX, C++

A simple 3D computer graphics software.

This project is divided in two parts:

  • A GUI application written in Java consisting of:
    • A WYSIWYG 3D editor to model your scenes using JavaFX 8
      • Ability to add primitives or complex meshes from .obj files
      • Each scene can be saved to a file for raytracing
    • Its own scripting language
      • Able to edit the scene
      • Each visual action is recorded and added to history in a repeatable form
      • Can be loaded from file to generate complex scenes and animations
  • A Raytracer written in C++14
    • Working on Windows, MacOS and Linux
    • Taking scenes as input and generating the corresponding image in PPM.
    • All the lights and primitives created by the GUI application are rendered
    • Mesh rendering speed optimizations using bounding boxes and octrees

iCal TV Shows

Go

A project to get a personalized TV Show schedule in an iCalendar form that can be subscribed by any calendar application.

Eeureeka

Ruby on Rails

A complete backend with a REST API for a serious quiz game.

Work with 2 friends to develop an administration dashboard and an Android application.

ToubiNews

Objective-C

An iOS application to read NNTP news used in EPITA.

MyAfterEffects

Java, Swing, OpenCV

A complete video editing software. Developed in Java, using Swing for the graphical interface. It uses OpenCV to open and save videos. It has lots of features including:

  • Timeline of open medias, with ability to move them around
  • Ability to import all types of images and videos
  • Ability to cut videos into small pieces to create an edit
  • Ability to export the created video in the resolution of the user’s choosing.
  • The export of the video is very well parallelized allowing great speed for getting the final video.
  • Apply filters to any of the media loaded (Filters are applied in real time to the video)

Spell Checker

C++

Extremely fast Spell Checker program.

  • Calculates the Damerau-Levenshtein distance between given parameters and a large dictionary.
  • Returns the list of closest words using a Trie.
  • Very high performance programming in modern C++ using a Ruby test suite to check both performance and conformance to the subject.
  • Work with heavy memory constraints (512 Mo of RAM) and in mono core.
  • Works on Linux (x64), macOS and Windows (x64) using system calls to map in memory a compiled version of the dictionary for improved performance.

FunkFS

Haskell, Lisp

FunkFS is an implementation of a in RAM filesystem in Haskell and Lisp.

This project was about developing a small filesystem that could handle files, directories and executables using these two functional languages.

MyPhotoshop

Java, Swing

Developed in Java, using Swing for the graphical interface a complete image editor. The program contains multiple functionalities such as

  • handling multiple images at the same time
  • saving projects into a custom myPSD format
  • applying filters to image loaded as plugin from external jars
  • ability to draw on the image (using pencil and built-in circles, rectangles and lines)
  • possibility to import PNG, BMP, GIF and JPEG
  • possibility to export as an image in PNG or JPEG
  • display history with thumbnails for a project
  • possibility of undoing and redoing actions
  • possibility to crop image
  • ability to use steganography to hide an image in another one
  • ability to use layers
  • ability to use selection to apply filter only on small part of the image

This project was developed in 3 weeks

Tiger Compiler

C++

Developing a compiler for the Tiger Language (modified version of Andrew W. Appel Tiger’s language) in C++14. This project is separated in many phases, each one depending of the success of the previous one. First of all there is the lexer and the parser, that were done using Flex and Bison. Then, after making sure that we recognized correctly the Tiger language we built the AST using the parsing made by Bison.

We also had to create a pretty printer for the language in the same phase. The Visitor design pattern was used to create it. The pretty printer is useful during the whole project to see what the compiler did and to test the project.

The whole project is so huge it must be tested thoroughly, this is why we created a Ruby test suite to test the project. The test suite has a complete HTML output to ease debugging. After this phase we created the Binder which is supposed to bind every variable, function and type use to their declarations.

The next phase we developed is the Type Checker. The Type Checker is a part of the program that checks for type compatibility for expressions to be sure the program is correct. This part allowed us to develop as a bonus a function overloading addition to the language.

We also implemented an inliner, a pruner, an array bound checker and for desugaring as a bonus to make this compiler better.

The last phase we developed is converting into an high intermediate representation of the Tiger code, in the tree language to be able to execute the code. This phase rely heavily on having the previous parts correct to work correctly. At the end of the project we had a complete front end for the compiler. And were able to execute the Tiger code using the HAVM which is able to execute the tree code.

We succeed very well in this project. Having 100% success rate at all mandatory phases and most of the optional ones.

Runners

C++, SFML

Video game (Tower defense) development in C++14 during a 48 hours rush using the SFML library.

42sh

C

A POSIX shell following the SCL, developed in C by a team of 4 people in 3 weeks. It should reproduce the behavior of bash with the ‘–posix’ option. This shell was heavily tested by more than 150 tests to check the behavior of the program against bash behavior. This project contains several separated parts including:

  • lexer (transforming the input to a list of tokens)
  • parser (LL parser, creating the AST from the token list)
  • execution (executing the AST given by the parser)
  • built ins (recreating the most common built ins)
  • redirections (redirections and pipe of commands)
  • executing programs from PATH and current directory
  • storing history in history file
  • executing conditionals instructions (if, for, while
)
  • read line (create a good read line with history support and common shortcut)
  • test suite (ruby test suite to check the behavior)

Malloc

C

Reimplementation of standard C malloc in one week. Using first-fit algorithm for memory organization.

LMAOCR

OCaml, lablgtk

An Optical Character Recognition developed in OCaml during the second of studying in EPITA. This project was using LablGTK and ocamlSDL to create the interface and recognize the images.

Crystal Gate

C#, XNA

A 2D video game made in C# using XNA as a Framework. Created during our first year of studying in EPITA as a mandatory school project.

Filmyz

PHP, MySQL

A website allowing members to mark movies as watched and to be watched. It also contained a friendship system to see what your friends have watched or want to watch. It was an attempt to replicate what was done for tv shows by Betaseries (which since then have added similar features for movies).

Implemented before starting my formal computer science studies (2011).

Incroyables Expériences

PHP, MySQL

A website created to support the YouTube channel of some friends. At its peak it had a community of more than a thousand members. Allowed members to learn more about electronics, watch all the videos, comment them and communicate with the community.

Implemented during my high school years (2010-2011) before studying computer science.


Education

EPITA - France

Master's Degree - Software Engineering

Specialized in SCIA (Data Science and Artificial Intelligence).

2012 - 2017

Hanyang University - Korea

Exchange Program
2014

Lycée Camille Saint Saens - France

Baccalauréat Scientifique, Mention Bien
2009 - 2012