Email: pepogerges33@gmail.com
Phone: +2 01011912807
Electrostat-Lab: GitHub Organization
GitHub: pavly-gerges
LinkedIn: Pavly Gerges
YouTube: Tutorials and Techdemos
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.
Contributed to open-source projects through non-profit open-source organizations (e.g., jMonkeyEngine - Pi4j) and projects on the Electrostat-Lab organization.
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.
Platform Predicates
instead of the dirty nested conditional statements.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.
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.
Writing JavaDoc for an Old Animation System (MonkeyAnim): Writing JavaDocs for a 7-year-old undocumented and vague animation system (MonkeyAnim), and shipping some with the team guidance on the release jMonkeyEngine v3.7.0.
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)
, andSimulation 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:
- Project: ElectroIO, includes both ElectroKIO and ElectroMIO modules, and encapsulates the I/O channels cores.
- Project: ElectroKIO: entitled to encapsulate linux kernel userspace APIs that interact with the kernel through file system pipelines providing interfaces for the serial ports (RS232 - USB Serial - PS/2), parallel ports (IEEE-1284), ethernet ports (IEEE-803.2), and PCI-e ports.
- Project: ElectroMIO: encapsulates agnostic microcontrollers plain driver APIs featuring the AVR MCUs core communication protocols (GPIO - SPI - UART - ADC - TWI - PWM), together with a strong interface for future implementation of other MCU families.
- Project: ElectroNetSoft, includes the software libraries (e.g., arithmos, di, articular-es,…) and the networking interfaces for some compatible IO cores.
- Project: ElectroSim, encapsulates the Runtime Infrastructure and the interfaces of the HLA IEEE-1516 Standard provided by IEEE for distributed simulation systems.
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.
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:
- Hierarchial modular architecture in structure separating the native libraries from the Java APIs.
- Cross-platform capabilities on POSIX interfaces.
- Low-level File I/O APIs with
java.io
APIs specializations integratable with other applications.- Full terminal control modes for serial-based file I/O interpreted directly from the GNU/Linux POSIX APIs.
- Serial Human-Interface-Device (HID) API providing specializations for serial-based devices and providing preprocessing and postprocessing filtering techniques for encoding, decoding, and encryption/decryption algorithms.
- jMonkeyEngine integration examples with realtime data monitoring.
Tools: Java SE Platform - C/C++ - CMake - Gradle - GNU/Linux Libc - Maven central - Realtime signal processing.
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.
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.
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 theNon-deterministic Finite Automata (NDFA)
together with the ability to cache states beforehand in finite-automata aggregates, through theCascadedTransition
components, a type of finite-states transition path that superimposes cascaded paths through abstractQueue
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).
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.
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).