Pavly Gerges

Pavly Gerges

Email: pepogerges33@gmail.com

Phone: +2 01011912807

Electrostat-Lab: GitHub Organization

GitHub: pavly-gerges

LinkedIn: Pavly Gerges

YouTube: Tutorials and Techdemos

About Me:

A self-taught embedded software engineer with a demonstrated background in embedded systems, microcontroller programming, and distributed simulation theory seeking to contribute to open-source and proprietary software in Embedded Microcontroller Programming and Embedded Linux domains. I essentially architect, develop, implement, and maintain open-source embedded software products taking ideas from observation and theory to real life fully-fledged software to solve low-level devastating problems in Embedded Systems industry. My vision is to port the Computational Theory especially the Automata Theory to be an explicit part of the Embedded Software Design providing highly reliable scientific ways of Software Engineering and problem solving techniques.

Skills:

Experience:

Contributed to open-source projects through non-profit open-source organizations (e.g., jMonkeyEngine - Pi4j) and projects on the Electrostat-Lab organization.

Electrostat-Lab Open-source Contributions:

OSS Embedded and Android Projects | (2020 - Present)
Led the design, development and deployment of open-source projects solving various real-life problems; see the projects section.

Pi4j Contributions:

Technical Writing | A Featured Project | (2022)

Upon the request of one of the Pi4j community leaders, I published an article about a hybrid project that utilizes both Pi4j-v1 and jMonkeyEngine framework as a Pi4j-featured project; together with a full tutorial on hooking an Analog-Digital Circuit (MCP3008) onto the Raspberry Pi-4B GPIO through the Serial-Peripheral Interface (SPI) protocol. The tutorial also introduces insights on the conceptual model behind ADCs and DACs circuits. Collectively, the tutorial acts as a demo for I/O controlled Games using the JoystickModule API.

jMonkeyEngine Contributions:

Contributor | (2020 - Present)
Contributed to jMonkeyEngine, an open-source code-first approach complete 3D game engine suite written primarily in Java with GLSL Java bindings based on the OpenGL pipelines and modular API design.

Projects:

Electrostatic-Sandbox SDK Suite

GitHub - Website - YouTube

Description: A work-in-progress open-source code-first complete SDK and development suite for distributed simulation systems based on the IEEE-1516 High-level Architecture Interface, GNU/Linux Kernel userspace APIs, and NASA DSES. The infrastructure of the sytem is subdivided into Hardware IO Infrastructure (Project: ElectroIO), Software and Networking Infrastructure (Project: ElectroNetSoft), and Simulation Infrastructure (Project: ElectroSim).

Vision: Build a complete layered framework for distributed simulation systems on the top of the GNU/Linux systems to facilitate building distributed systems for scientific simulation of multiple disciplines including smart homes, smart hospitals, medical, aerospace, and military missions simulations.

Architecture: Essentially, the Electrostatic-Sandbox SDK is a software development suite for designing and building distributed simulation systems, and it’s decomposed into 3 subprojects:

Hardware/PCB design and prototyping: Designed and assembled a custom development board, the “ElectroIO” development board, for prototyping, wiring, and building projects using the ElectroMIO IO API. The board is a modular multiple PCB boards featuring a CPU Module, a Power Module, and a Comm Module enabling hardware durability and adaptability for newly designed CPU Modules, in addition to decreasing the design and implementation time of the novel boards by more than 50% of the time; as hardware modules are adaptable and reusable across almost all microcontrollers.

Technical Writing: The AvrSandbox blogs for embedded systems providing tutorials for common embedded protocols (e.g., GPIO, SPI, ADC) using the AVR MCUs, and digital design (e.g., Multiplexers, De-multiplexers, Shift Registers).

Tools: C/C++ - Java - Gradle - Kicad - Multimeters - CMake - Bash - GNU/Linux Libc - Dot (GraphViz) - Tex (Latex) - AVR Toolchains - Android NDK - jMonkeyEngine - SDK programming - Realtime signal processing.

Serial4j Framework

GitHub - TechDemo

Description: A Java terminal IO framework based on the GNU/Linux termios API for communication with peripheral devices using the serial interface (e.g., USB Serial, RS232, and PS/2). Furthermore, it has been migrated to the Electrostatic-Sandbox SDK project!

Architecture: The base architecture of Serial4j is based on the Data-Flow Systems, particularly Pipe-and-Filter Architectural design (i.e., the Filesystems and byte streams). The pipe is the plain filesystem and byte streams, while the filters are composed of main stream filters imposed by the operating system; that is the Terminal, controlling the byte streams and providing buffered, unbuffered, and line feed/return carriage buffered stream routines. Other filters are mutually exclusive components of the architecture known as Human-Interface-Device APIs and SerialMonitor APIs; those provide new routines to manipulate byte streams as Data Frames; introducing a new type of buffered streams through accumulating data via modal logic (i.e., boolean algebra).

Vision: The framework was designed essentially to provide innovators with custom controllers to bind to jMonkeyEngine Game Lifecycle for Kiosk-based systems, and it’s deemed to reduce the development time in this instance by 40-50% of the total time; the time taken to write the serial interface infrastructure, the HID components, and bind them to the Game Lifecycle.

Key Features:

Tools: Java SE Platform - C/C++ - CMake - Gradle - GNU/Linux Libc - Maven central - Realtime signal processing.

jSnapLoader API

GitHub - Maven-central

Description: A high-performance platform-independent Native Dynamic Library extractor and loader for JVM and Android Applications based on the Data-Flow and the Hierarchial Architectural patterns powered by an incremental extraction system that reduces libraries loading time significantly in subsequent runtimes. Futhermore, the library solves the most headache-producing problem in developing cross-platform native applications; which is creating predicates for each system in the form of nested conditional statements, this library solves the problem using formula objects known as PlatformPredicates, which are formed of P(X) = (OS && CPU && ARCH).

Used by: Authored a stable deployment on maven-central to be used by Jolt-jni, Serial4j, and Electrostatic4j.

Articular-ES Framework

GitHub - TechDemo - Maven-central

Description: An entity component system (ECS) framework featuring strong articulations among components from different systems through controller interfaces. The API is powered by a caching system that enables caching data in different configurations. Operational interactions take place within the system manager through the controller objects. The API provides a strong abstraction based on the data-centered architecture with the ability to model complex systems, such as: Human Interface Devices (HID) APIs, and language processing and translational APIs.

Deployment: Authored semi-stable pre-releases on maven-central.

Automata4j Framework

GitHub - TechDemo - Maven-central

Description and features: A classic finite-states-automata (FSA) framework for JVM and Android applications featuring both the Deterministic Finite Automata (DFA) and the Non-deterministic Finite Automata (NDFA) together with the ability to cache states beforehand in finite-automata aggregates, through the CascadedTransition components, a type of finite-states transition path that superimposes cascaded paths through abstract Queue data structures.

Vision: It’s contemplated that this paradigm will enhance embedded systems development by 2x its speed while keeping the logic close to the formal logic.

Deployment: Authored pre-releases on maven-central as a future application-level paradigm (competing object-oriented and functional paradigms using computational modelling).

My Education:

Graduated from Faculty of Medicine and Surgery, October 6 University in 2023 with a Bachelor degree of Medicine and Surgery (M.B.B.Ch.) and GPA-3.15.

Overview of my Computer Engineering education:

Equivalent experience of bachelor’s degree of computer science tailored for Embedded Systems. (Theory of computation - Discrete Mathematics - Calculus - Digital and Analog Electronics - Computer Organization - Software Design - Data structure and algorithms design - Programming languages).