Resume
Personal Information
Item |
Data |
---|---|
Name: | Pavly Gerges |
Description: | Experienced OSS Embedded and Android Engineer highly proficient in Java and C |
Current work related to the industry: | OSS developer at jMonkeyEngine and various other OSS projects |
Original Proficiency: | Medical Intern |
Technology Experience
- Java SE (Applied theory level up to java-19).
- Gradle (Extending and utilizing the gradle-org-API).
- OSS Projects contributor and initiator.
- High-level and low-level design patterns.
- Software Architecture.
- Android-SDK.
- Kotlin.
- Android-NDK and LLVM.
- Unix Programming, GNU/Linux APIs, and the bourne-again-shell (bash).
- CMake and Makefile.
- Game-Engines (jMonkeyEngine).
- JNI (Java-Native-Interface) and Native Invocation APIs.
- Java reflection API.
- Java command-line tools (javac, java -jar, javadoc).
- Code refactoring and clean code.
- Debugging and testing software.
- Microcontrollers (avr) and embedded systems.
- Linux systems particularly Debian.
- A starter in Compiler Engineering.
- Gradle Plugins (learning-in-progress).
- Advanced Unix Programming (learning-in-progress).
General Skills
Languages:
Java - C/C++ - Kotlin - Bash (Bourne-Again Shell) - HTML/Javascript - Assembly
Technologies and Frameworks:
Java Streams -
Java Concurrency -
Java Reflection -
Java Native Interface (JNI) -
Native Invocation API -
Java Core Utilities -
jSerialcomm -
jMonkeyEngine -
Android SDK -
Android NDK -
AVR-Core -
GNU/Linux Bin-utils -
Gradle -
gnu-libc (embedded-linux and avr) -
Arduino-Core -
Kiosk-Systems -
Pi4j-v1 -
Pi4j-v2 -
Linux-Kernel
Skills:
Medical science -
Software Design patterns -
Software/Hardware algorithms (Finite-State-Automaton/DI/GoF-templates) -
Applications Infrastructure -
Front-end android engineering -
Back-end android engineering -
Infra-structure android engineering -
Basic Electronics -
Basic embedded systems -
APIs Development -
DevOps (Github-Actions) -
Static libraries development -
Dynamic libraries development -
Android Java and Native modular libraries -
Embedded GNU/Linux -
Basic calculus -
Basic Linear algebra and vector-spaces -
GNU Makefile -
GNU-C-Compiler-Toolchains (GCC) -
Low-Level-Virtual-Machine Toolchain-Set (LLVM) -
Cmake -
Java Instrumentation -
GNU/Linux Virtualization -
GNU Debugger (GDB) -
Applied Linear algebra and calculus -
Advanced electronics and embedded systems
Projects of concern
- Contributions to jMonkeyEngine: jMonkeyEngine is a complete 3D game engine written primarily in java. It’s open-source, cross-platform, cutting-edge, minimalistic, and code-first approach.
- jme-alloc: A direct dynamic memory allocation api for jMonkeyEngine lwjgl-2 and android games.
- Serial4j-v1: A java GNU/Linux terminal IO fully customizable library.
- ShiftAvr: Introduces a core C library to control GPIO/UART/SPI/ADC/PWM/I2C as a substitute for the arduino core.
- Automata4j: A classic Finite-State-Automaton Framework for JVM/Android Applications.
- Jector: A DI Framework for JVM/Android Applications with an interface for jMonkeyEngine Applications.
- jSnapLoader: A high-performance cross-platform native Library loader API for JVM Applications.
- Superior-Extended-Engine: An android GUI interfacing API collection for jMonkeyEngine games.
- Cross-platform-template: A universal cross-platform template game for jMonkeyEngine providing compatibility for both desktop and android environments using gradle.
- Avr-Sandbox: Introduces testcases/tech-demos for avr protocols and digital electronics.
- Pi-Kiosk: Introduces a kiosk activator script for the raspberry pi.
- JoyStickModule: Introduces a jme interface over the pi4j io library through MCP3008.
- Vital Watch: Introduces a bluetooth watch android application to continously monitor vitals via bluetooth UART.
- svg-scraper: Introduces a bash script that scrapes svg files from the
/usr/share/icons/
based on an abstract-extractable interface. - CozySnippets-Notepad: An advanced open-source notepad for android written primarily in java (currently discontinued).
- Covid-19-Medical Guide: A medical guide to avoid the further transmission of the disease and to display the number of infected cases worldwide on google maps (currently discontinued).
Other Projects
- JPluto Arcade Game (No Github yet!).
- DB-Training-App: A jMonkeyEngine animation loader demo.
- Jector-Tests: Techdemos and tricks using the java Reflection API and java annotations fresh from oracle javadocs.
- jme3-simple-examples: Android templates for jMonkeyEngine.
- Pi4j-joystick-featured-project
- Arithmos-API: An algorithmic jvm and native api.
- Github-At-A-Glance: A github tutorial on github.
- OpenClaw-Platformer: A re-implementation of the 1997 Monolith Studios Captain Claw Game orginally developed by Petr Jašíček.
My journey to the tech industry
Back in 2018, I started coding as a Java developer, my first exposure to code was javatpoint, I joined multiple Facebook groups and we were doing simple, but no simpler projects, my second exposure to code was Derek-Banas YouTube Channel, it has a lot of Java coding tutorials and Java old and new crash courses, after that, I started to gain more confidence in coding by starting to write GUI applications using the Java built-in Swing Framework and at that instance, I started to read and study more about Java in advance using Java-The-Complete-Reference 7th-e mainly.
In 2019, I joined the medical school.
In 2019, I started learning about the Android SDK, and we did it, Thomas Meshel and I managed to publish our first Android application on google play, the Cairo-Bus application, which is suspended now according to some new policies on google play.
Within 2019-2020, we initiated our team under the name ‘The Scrappers’ which is the name of this account now, and we started a new Android application ‘The CozySnippets Notepad’, an advanced notepad application for android written primarily in Java, the application supports basic note-taking, highlighting, colored text, paint and record note for each note and in addition to that, we managed to utilize the Firebase ML-Kit, the OCR (Optical-Character-Recognition) API, I agree there were a lot of issues as we haven’t had that good command of clean code and software architecture yet, though I were learning hard from the Android-SDK core code.
In 2020, I met another friend Bishoy Reyad, who works primarily on hardware projects with Arduino, and we managed to build the Binary Clock, a simple IoT application that controls a physical binary clock through Bluetooth RFCOMM, however unfortunately and again; due to tech diversity and inconsistency of the work, this project hasn’t made it to a long-term-support version and it’s currently discontinued too.
In 2020, the team was partially broken; due to technical diversion, as Thomas started learning Flutter and other web-based backend APIs and, I started to learn jMonkeyEngine, a complete 3D Game Engine written primarily in Java with a minimalistic code-first approach, and joined the forums.
I wrote my first Arcade game using jMonkeyEngine, the JPluto, a simple arcade game with two levels, The Vast Universe and Mars, the game is designed to be a standalone running on Linux game console as a Kiosk game with custom hardware, the initial test with Arduino was successful, though a little bit chunky, from this point, I decided to learn Embedded Systems to gain more skills to finish this project and I am now still into it.
In 2021, I made my first contribution to jMonkeyEngine, the JmeSurfaceView, a GL-ES surface-view renderer layout holder to extend jMonkeyEngine development on the android platform, and from that date, I gained a lot of confidence in the open-source industry, and I would like to give some credits to Mr Stephen Gold and the community managers who happily support new developers.
In 2021, I started also to dig deeper into Java and discover Java reflection APIs and JNI APIs.
I also did a contribution to the pi4j-featured projects for a prototype project that connects a jMonkeyEngine vehicle to a custom joystick hardware through the MCP-3008 ADC and the SPI bus.
In 2022-2023 and now, I initiated the AVR-Sandbox
, Serial4j
, jme-alloc
, Google-Developers-Sohag, and my schedule is currently being crowded with a lot of unfinished projects, I learned a lot about project management on GitHub through issues, milestones, projects, and automation via CI/CD.
I currently use books and documentation to learn Unix advanced programming, using the old-school C programming language, to incorporate that into Java applications and use this within my game and hardware projects, one example is the Serial4j
API, an advanced full-featured and easily customizable terminal IO library with a Serial-Monitor front-end API.
P.S.: The journey hasn’t arrived at an end yet, but a new start is being accomplished when I introduced the Automata4j framework as proof of the finite-state-automata theory and its life applications, and still going through Arithmos featuring advanced implementations of common data structures and algorithms, join me by contributing with your knowledge and skills.
Contact me