About Me

gab-conf-LARGE

As a developer with proven capabilities in business, strategic, and technological analysis, I offer a unique and atypical profile. My journey began at age 18 when I created a video game for Mindscape (then part of the Pearson group). Driven by a passion for R&D, I am self-taught in programming languages such as Pascal, C, C++, and C#, as well as in software architecture and framework design. My creative pursuits have also extended to 2D/3D computer graphics (bitmap, vector, modeling, rendering, and animation with Maya) and multimedia production (sound, video, motion graphics), including music composition in my home studio. This diverse skill set provides me with a comprehensive technical foundation for my primary focus: software architecture and development.

With a solid background in psychology, I am recognized as a perceptive manager who can produce clean, expressive, and well-illustrated documentation that guides developers toward clear and understandable goals. Having been self-employed for many years, I have collaborated with numerous contractors on long-term projects and value working as part of a team. My varied professional experiences have given me a keen insight into corporate dynamics, strategic challenges, and business expectations. This perspective allows me to align effectively with senior management, even while maintaining high standards. I am adept at managing long-term, multi-dimensional projects.

I am proficient in SCRUM and consistently apply industry best practices like DDD, TDD, and the SOLID principles. I actively monitor architectural trends, including CQRS and Event Sourcing. My greatest professional satisfaction comes from designing innovative architectures that deliver maximum business value and meet market needs.

I am motivated by stepping outside my comfort zone, embracing challenges, and deploying bold solutions. Since 2010, one of my primary research projects has been a high-performance persistent object repository for .NET, inspired by “Big Memory” and High-Performance Computing (HPC) concepts. My past projects include developing several engines from the ground up: a distributed database, a graphical user interface engine, a 3D engine, and between 2014 and 2020, a full-stack social networking engine (HTML5/JS/CSS) featuring a proprietary web server, NoSQL/Graph database, and text indexing (WAH). While not a mathematician, I have a strong intuition for computational possibilities and am creative in challenging the state-of-the-art, particularly in areas like .NET application scalability, lock-free concurrency, and managing terabytes of objects in RAM without Garbage Collector pauses.

Skills

  • .NET developer, C # language. .Net Core, Web, Blazor, WinForm, WPF. Experience with C, C ++ and Pascal. Managed and unmanaged languages.
  • Software Architecture: development of Frameworks, (mid) low level programming, optimizations, concurrency, high performance processing. Notions of TDD, XP and DDD (Domain Driven Development).
  • Graphic Designer (up to 2009): Adobe suite (Photoshop, InDesign, AfterEffect, Illustrator), Maya (3D, animation), AutoStudio (industrial design), MentalRay (rendering).
  • Composer : MAO with Digital Performer, sound design.

Know how, knowledge, topics

  • Design of HMIs, graphics systems (GUI engines).
  • Edge computing : supervision and data distribution, update of hundreds of UC.
  • Distributed P2P or client-server systems: pull / push mode, serialization, network and memory optimization, caching strategy.
  • Web server development, from scratch : Websocket, HTML, dynamisation, templating, token based compression. Notions of JavaScript.
  • General knowledge in computer science: development process and object oriented programming, structure of operating systems, hardware, processors, compilation.
  • Vertical scalability of .Net applications, code readability (persistence abstraction, Framework design).
  • Management of terabytes of objects in RAM without Garbage Collector freeze.
  • Interlocking concurrent “lock-free” processing and communication.
  • Web site generation by script, front-end protocol, basics of “lucene-like” indexer.
  • Philosophy of UI engines, RAD, Frameworks, etc.
  • Basic concepts and architecture of database engines : had developed parts of database engines.
  • Team management : AGILE project management in SCRUM, continuous process improvement.
  • Corporate governance and human resources concepts – has contributed to several entrepreneurial adventures.

Knowledges

  • I have a good background in Monetary and Banking systems. I have produced a documentary (animation) that have more than 3 million views on Youtube.
  • I have good knowledge of emotional therapies, especially EMDR. I practiced it, I looked after friends. It is a rich approach and much more rational than one imagines.
  • I have been a musician from a very young age. I studied the violin, I play the piano and I am a composer. Music is a second language for me. I have sometimes performed as a composer for my customers. I master the basics of Home Studio.
  • I’m learning about political systems and energy future problems, collapsology.

Timeline

TimeLine-Gabriel-RABHI

Few pictures

I’ve done a large number of projects for my customers and as personal researches. The majority are projects for customers. There is a lot of software that I developed for which I don’t have screenshots. Here are a few.

1995 : Al Unser Jr Arcade Racing, a small arcade video game I have entirely developed, from scratch. Presented by Bill Gates as the first Windows 95 arcade simulation game. Sold in Japan and USA, near one million copy distributed.

Image5
EZ-World

1996 – EZ-World was a runtime and development environment for Max OS 9. It was a side project. I have written the GUI engine from scratch. Buttons, menus, window, etc. were written from scratch. One of the important features was that the user interface of the softwares that worked in this environment was editable at runtime: windows and widgets could be created at runtime, and linked to commands published by the software components. There is a high level of isolation beetween the “business” or “processing” code and the UI. The first apps running on this screen-shots are painting, compositing and multimedia tools.

EZ-GUI

1997 – This is an OpenGL GUI engine (Graphical User Interface), running on top of a 3D rendering view. The goal was to develop an independent full featured GUI engine for game developers. Never goes fare beyond the POC. Looks like the WPF technology developped by MS few years later.

Modeleur Michelin
Image6

1998 – I developed a driving simulation for Michelin, the French tire manufacturer. This simulation was a communication job for the centenary anniversary of the company. During two years, they have made a itinerant theme park including 15 small simulation stands for children. To build this game, I developed my own 3D engine (on 3DFX) and my own polygonal 3D modeler – yes, a full featured simple modeler ! It contained a route generator in the form of Nurbs along which various parameters varied, allowing the creation of circuits very quickly. All the game where done in 6 months (3D engine, car simulation code, modeler, design of roads, textures, etc). This performance had made me viewed as a “extraterrestrial developer” by Infogramme CTO and Doky Denky CEO.

audi r7 2

2008 – This image is a personal work of design and rendering (google image : “Audi R7 rabhi“). I realized the modeling with Auto Studio (Autodesk), with Nurbs level 5 to obtain smooth curved surfaces without breaks. This model do not use a smoothed polygonal modeling technic (witch is a lot simpler), but the NURBS web curvs based used by car makers for the final shapes of real cars. This is a huge difference. In this model, you can reshape a basic curv and all the model will rebuild the surfaces taking car of the build history of the entire model. The rendering is done with Mental Ray under Maya using Global Illumination algorithm.

Image7
Image8

1996 – 2008 : I have delivered numerous CG pictures, animations and multimedia systems (or contributed to as designer) for various companies, both small and big ones. I’ve done all the graphical design of this works.

MOBUSO

In 2009-2010, I developed a contact management tool for a company I worked in (MCE-5 Development), with Aurélien Boudoux, a developer with whom I collaborated for 4 years. This software made it possible to link emails, paper mail and documents to a database of contact. It was connected to an Exchange server to retrieve emails and to the PABX to track telephony calls. It was running Office for direct mail. It also presents a view of project spaces in the form of mind maps. It is a GED (Electronic Document Management System). It contains a simple Gantt board. At the core of the system is a hierarchy of objects that is viewable as a Hiearchy (like a file system), a Gantt planning (to add delay information to entities) or a Mind Map (to organize the same entity in a logical way).

With associates, we try to make it a real business. We were not aligned, and we failed to go forward in the company foundation. The product needs maintenance and we where unable to resolve major problems. The project where abandoned – one more time the bad “internal tool idea” that cannot become a real product. MCE-5 is not a editor of a digital workplace !

Actisys-Infra

Between 2010 and 2013, I was project manager on a proprietary data management technology. The goal was to make a distribution of data between several places by internet, in real time. The system was a RAD oriented development system too. The system was a complete database management system, with replication and management of the integrated schema update. The database was composed of objects and worked in RAM with a replicated in-house storage technology. In-Memory processing permit fast execution of linq queries. If an object was modified on a client connected to one replicated server, the clients viewing the same object sees the changes appearing in real-time on their screens : all this was transparent from the developer point of view. In reality, it was a full real-time distributed and synced objects system. All was written from scratch with Aurelien Boudoux. It was a really big challenge, with fine grained engineering works. It was partly funded by French State (CIR – Crédit d’Impot Recherche).

Actisys-PipelineCpnt

All the architecture was component oriented with a full featured pipeline messaging system. A pipeline can have a network transmitter to transport messages from one machine to another. We can move components from one machine to another. Various components where developed : caching, log, debug, data store, logical. All exceptions where managed in a client-server paradigm. A catched exception on a node where sended to the caller, on another machine.

The project was globally abandoned to use more standard SQL database system. The core business of this company was not to develop advanced distributed systems, but one specialized LOB system ! The code remains entirely on me, and it was too risky and cost too much to continue. Yet another bad idea “make it more powerful internal tool” not adapted to the reality of the company.

Definitively, I’ve learned to do not try to rebuild my own proprietary tools – except if it is the core business of the company.

In 2014, I’ve developed a small tool to do analysis and processes of a live SAGE Database in production. This tool is used for marketing and support tasks : find hot products, classify customers, billing, price targets, manage delivery, make stock analysis, etc.

D4C-s1

In 2014, I’ve started to learn Web technologies. Do4Change’s engine, ShotWeb, is something like a leaning project : really badly mad in many aspects. In the web page source code you can read this :

DISCLAIMER : Javascript ans CSS code exposed here is “crappy learning dev. code in production” ! It will be re-written by serious JS programmer soon and redesigned by real Web-Designer too. Still, it work fine !

I put online Do4Change in 2016 after a year and a half of development. Do4Change is “a social network for collective intelligence and concrete action”. It is intended for citizens wishing to organize changes in society. It’s a bit like the Facebook of associations and activism, offering specific tools to mobilize participants and organize citizen movements. It permits to share content (texts, videos, images, sounds, pdf, etc), have consultation tools (multiple choice, polls), real-time messaging, an advanced block based editor of web pages, groups and sub- groups of users, etc. It allows to evolve all structures and contents in a collective way. It is a multi-tenant system : you can create your own social nework, replace the colors, the logo, the pictures, and activate features one by one.

So, to learn exactly how a Web stack works, I’ve programmed near all major components of a Web system :

  • The front-end framework, with components, dialog management, route management, local storage, authentication, etc. Latter, I’ve used Bootstrap but in fact, it was not necessary.
  • The WebServer is a completely hand maid in C# : I open a fast raw binary server TCP socket (IOCP), listen to connections, parsing the HTTP frame, send back the right frame and data…
  • The database engine is hand made too, except that it is based on a binary Key/Value store, ESENT. On top of that, I have developed an In-Memory object store, relation store (joints), and an Bitmap based Lucen like textual indexer.

This SPA had some special conception bases:

  • All HTML content is served through a WebSocket. When you click on a link, changes in the page are computed and send by the server in “push” mode through a permanent WebSocket connection – like it is done with server-side Blazor by Microsoft. It permit to manage message re-emission when connection is lost and ACK not received. It’s a really robust messaging system.
  • Most of the HTML content is Tokenised : all redundant HTML tags content is send in the form of key-codes and the client rebuild the full HTML content before inserting it in the web page. This mechanism permit a good compression level (buffer size are similar to those of a JSON API based client server SPA) and is faster to build for the server. This architecture permit a high reactivity (no re connection), a good security level (no client-site code) and a server-side rendering useful for SEO.
  • Because the database is In Memory, the data access latency is small. Majority of operations are computed in between 150 microseconds and few milliseconds.
  • The engine is based on a fixed Thread pool that build responses to the clients concurrently.

This basics offer a really scallable (in theory) and fast (in practice) system. The ShotWeb engine offer a really large panel of feature : authentication, file management (with download barbers),

ShotWeb - IDE

In 2017, I added a scripting language to Do4Change’s social network engine, ShotWeb. This language makes it possible to change the entire presentation of the online system, the script editor being online. Online, we can edit all of what makes up the pages of the social network.

This hand maid language permit to describe a hierarchy of web components that generate HTML content when they are rendered. This specific language can be converted in C#. This components can access to data resources to render specific data accessible in the current user area, taking care of his credentials. With this update, a new Social Network is a blank page, and we assemble components to build the UI of the site, Online, with this embedded IDE.

CPCCAF

The social network engine that I developed allows the realization of custom portals. Here, one of the three portals that I developed for organisations. This is the site of an association affiliated to the CCI of Paris : search zone, personal profile, articles, chat, complete Web page editor, all this feature are activable and customizable to reach the needs of each organisation.

There is a lot of successful projects that are not presented here. Perhaps, in the near future, I’ll plug my backup disks to get more screenshots to present more projects done.

In 2018, I’ve started to develop an intranet for a French institution. This tool is the ShotWeb engine embedded in a installed client software. This client permit to access to the complete computer file system to control file access, concurrency and versions. Life cycle of each file can be controlled by a validation process, and files are centralized in a common repository.

In 2020, I’ve started the development – for a company named Novalyo – of a complete architecture to manage systems in EPHADS (french residential facilities for seniors). In the near future, the company will manage thousands of software installations on home PCs – we manage 300 UCs in 2023. It is a Edge Computing architecture, where small UCs are sensors and send data on the Web to aggregation servers. To do this, we’re developing the right tools:

  • Data flow management between on-site PCs and servers in the Cloud, tolerating unstable infrastructures and requiring no specific configurations (no NAT or VPN).
  • Asset supervision: problem detection, log management, remote configuration, proactive fault management, service status and availability calculation (linked to SLA) for software and hardware.
  • Automatic software installation and updating for continuous deployment (several times a day, on the fly).

These tools form the technical foundation needed to deliver business functions on a large number of machines, requiring a high level of industrialization and automatization.

I have made a full feature distributed modularized monolyth as application framework, with Event Sourcing and Command Sourcing archtecture as core database management system, running on Windows and Linux. We are using a transactional In Virtual Memory object repository I’m working on for few years now, based on the famous LMDB key value store. Using this basis, we are developing a suite of management applications, using a Blazor proprietary layout component library and “design system”.

A full featured supervision system is integrated in this architecture, with few sensors.

In 2022, as side project, I’ve developed a Trading Bot basis with a full chart rendering and navigation system, all from scratch. I use IG broker APIs to get the data and trades. Trading need a long learning curve, but the subject is really challenging. Perhaps I will reach the goal to have a “cash machine” – why note ?

What’s next ?

The ShotWeb project, despite the fact he is actually in production and maintained, was not made to continue : the code is BAD, not well tested, cow-boy written, still, it work and make me doing a big step in the deep understanding of what a full stack web system can be. On the Internet, the Do4Change platform was a fail because the UX is bad, for too complex : I’ve discovered that the UX (User Experience) is the number one criteria of success of a WebSite – or any consumer product !

The Novalyo’s project is big modularization solution on a good track to perform well : strategic means still there for the company, and I’ve started the team building to have a long-term solid suite.

Now, I would like to push all the best technical concepts developed this 10 last years to a new level, the production quality and robustness level, to make real business from it.

There is :

  1. An innovative software technology for managing replicated object repositories in RAM for the .Net platform. It is an add-in (MemCached like) or substitutes for classic DBMS (full featured) such as MySQL, Ms SQL Server, MongoDB or Oracle. It is an embedded object DBMS (without a network connection) adapted to Backend applications. It’s a synthesis of all the research I’ve done in the field of data management. It permit to manage terabyte scale plain object collections without .Net Garbage Collector problems. The first version is not so fare in terms of performance from the MS FASTER Key-Value store – wich is, at this time, probably the fastest Key-Value store on the earth. My system do something similar, with real objects and a rich feature set, adapted to real-world developers needs (not only store and retrieve bytes arrays at light speed). An intermediate version, based on LMDB Key / Value store, may be alive soon.
  2. A new high level Web UI rendering technology, the fastest and the easiest possible. It permit to “render” an object, with a philosophy inspirited of MVVM pattern but with ease in mind. The goal is to make the easiest and fastest library for developers that are Web agnostics.
  3. The first digital tool of organizational transformation – I have searched for investor, writing 60 page presentation doc but it was a fare too complex product for business angels. It allows to gradually change the organization of companies to make them more efficient, flexible and agile, and increase the commitment of their employees. It is an innovative solution intended to be used daily by millions of people, mainly in companies. That’s what I’ve tried to make investor thinking – and I fail.
2018 : a preview of an Agile tool for organization transformation to a collaborative, self driven, democratic and controlled organization.
2018 : more clean work and event flow concept for the collaborative organization transformation tool.

Not too much ?

Oh ! Yes, I will never be able to do ALL this projects… And I must have money to do that !

But lets have a look at the first version of the GitHub introduction of my next big thing :

SlimLib is a class library focused on big memory applications development under DotNet. Big memory applications uses main memory (RAM) to process data sets. Data modifications are done in memory and are stored on disk while reads are mostly done in main memory. Hot data remain in RAM. Well designed, Big Memory applications can be few level of magnitude faster than ones using standard, in memory or embedded DBMS. They are different from in memory DBMS because they avoid separation between processing code and processed data by transparently maintains the object paradigm.

Read the full introduction article (GitHub ReadMe).

Stay tuned !