MA Mojtaba Almadan Plain version → العربية

Computer engineer · Eastern Province, Saudi Arabia

I build software and the hardware underneath it.

A 32-bit processor wired up in Logisim and then pipelined. AES as a hand-drawn state machine in Verilog. Real-time task scheduling on an ESP32. The Django and PostgreSQL custody ledger my company runs on now. Every row below says what backs it, and where there is no public code, it says that instead.

Things I have built, and the artifact that backs each one.
What I built Backed by
A custody ledger for 684 assets and 933 employee records, 428 currently signed out, with two signatures required on every transfer. Case study →
Demand forecasting over point-of-sale history: 30+ engineered features, three models, the winner picked by 5-fold cross-validation. Repo ↗
Object identification, recognition and tracking, integrated into a UAS mission pipeline and tested to find where it stopped being reliable. Employer's code
Three FreeRTOS tasks sharing one ESP32, scheduled at 100 ms, 200 ms and event-driven, in that order of priority. Repo ↗
OBD-II PID queries over UART to an ELM327 adapter, decoding live coolant, RPM, speed and throttle readings off a running engine. Repo ↗
AES encryption and decryption as an explicit algorithmic state machine in Verilog. Control signals written by hand, not inferred. Repo ↗ 6★
A 32-bit RISC processor in Logisim, single-cycle and then pipelined, validated by running a selection sort on it in assembly. Repo ↗
Work

2021 – present
Saudi Arabia

Computer Engineer, Systems & Internal Tools

Khonaini International Company Ltd. · Jubail · Jul 2023 – present

I'm building the system that tracks our assets and employee records. Django over a relational database, replacing a legacy enterprise product and the spreadsheets that were being maintained by hand next to it. Keeping the data consistent is the part that actually takes the work; the CRUD is the easy half.

The job is not only code. I image and provision endpoints (OS, drivers, software), chase down network and server connectivity problems, and write the documentation and training material people use afterwards, which is usually what decides whether a new internal tool gets adopted or quietly ignored.

Read the architecture write-up →

AI Integration Engineer (Co-op)

UAS2030 · Dhahran · Jun 2021 – Jan 2023

I worked alongside computer-vision and machine-learning specialists on object identification, recognition and tracking, and integrated those components into a larger mission pipeline.

Much of my time went to evaluation rather than model-building: running the system across different environments and scenarios to find the conditions where it stopped being reliable. That is still the part of this kind of work I find most useful. A model that performs well in one setting and nowhere else hasn't been finished, it has been demonstrated.

Built

5 projects
4 public repos

Five things I have actually built.

There are five because that is how many I have. Four have code you can read; the fifth belongs to my employer, so it gets an architecture write-up instead of a repository link.

Internal asset & employee management system

Employer's code
Role
Sole engineer: schema, app, deployment, backups, training
Stack
Django 6.0 · PostgreSQL · server-rendered templates · no SPA
Live data
684 assets · 933 employees · 1,423 assignments · 428 open
Replaces
A legacy enterprise product and hand-maintained spreadsheets
Status
In daily use at Khonaini International Company

Not really an inventory system. A custody ledger. Its job is to prove who accepted responsibility for a machine, so every transfer captures two signatures on a pad, the employee's and an authority's, and assignment rows are closed rather than deleted. Everything that carries custody history is on_delete=PROTECT: you cannot delete an employee who has ever signed for equipment.

The write-up covers the schema, the write path, a uniqueness constraint I got wrong and why, the backup and restore commands, and the two decisions I would reverse.

Menu Brain, demand forecasting for a restaurant group

Public
Role
Sole engineer
Stack
Django 5.1 · DRF · PostgreSQL 16 · scikit-learn · pandas · Chart.js
Models
Gradient boosting / random forest / linear regression, selected by 5-fold CV on R²
Features
30+, built from point-of-sale history

Forecasts how much of each menu item a given branch will sell, so inventory can be ordered against a number rather than a hunch, and less food gets thrown away.

The feature pipeline is where most of the thinking went: cyclical encoding for time-of-week and seasonality, 7/14/30-day moving averages, lag features and rolling statistics. Three regression models get trained on that, and whichever has the best 5-fold cross-validated R² is serialised with joblib and used for live predictions. Interface runs in Arabic and English with right-to-left handling.

Smart OBD-II, a diagnostic that reasons instead of reporting

Public
Role
Sole engineer
Stack
C++ · ESP32-WROOM-32 · FreeRTOS · PlatformIO · LittleFS
Reads
PID 0x05 coolant · 0x0C RPM · 0x0D speed · 0x11 throttle
Link
ELM327 adapter over UART

An ESP32 plugged into a car's OBD-II port, reading live engine parameters. The point is that it doesn't just display them: a rule engine watches for dangerous combinations, readings that are each individually fine but together mean something is wrong, and raises an LED and a buzzer.

Three FreeRTOS tasks share the chip, and the priorities are the design. The OBD reader runs every 100 ms at high priority, because a dropped frame is data you cannot get back. The fault detector runs every 200 ms at medium. The web server sits at the bottom, event-driven, because a dashboard that lags by a second costs nothing. A page served out of LittleFS shows the live values.

AES in Verilog, as an explicit state machine

Public · 6★ 4 forks
Role
Pair with Hasan Alhussain, KFUPM
Stack
Verilog
Design
Algorithmic state machine, separate encrypt / decrypt datapaths
License
Apache-2.0

AES encryption and decryption built as an explicit algorithmic state machine rather than leaving the control path to be inferred by the synthesiser. The round counter, the register enables and the branch conditions ( isRound0, isRound9, isRound10, count_lt_10) are all written out, with separate datapaths for encryption and decryption covering byte substitution, shift rows, mix columns and their inverses.

Six people outside the course have starred it and four have forked it, which is the only external validation I have on any of this.

A 32-bit RISC processor, built twice

Public
Role
Sole author, KFUPM COE301
Stack
Logisim · RISC assembly
Variants
Single-cycle, then pipelined
Test
Selection sort, assembled and run to completion

A 32-bit RISC processor built once as a single-cycle machine and then again with a pipeline. Datapath, control unit, ALU and register file wired component by component.

It is validated by assembling a selection sort and running it on the machine until it halts with the array in order. If any instruction in the path, the memory interface or a single control signal is wrong, the array comes back scrambled.

This is the project I point at when someone asks whether I understand what is underneath the code I write.

Stack

Grouped by
what backs it

Grouped by evidence, not scored out of a hundred.

A percentage next to a skill is a number I made up about myself. These are grouped by the strongest thing I can offer as proof, and the last group is the one I would want to read first.

Shipped, and I maintain it
  • Python
  • Django
  • PostgreSQL
  • SQL: schema design, constraints, migrations
  • Django permissions & groups
  • Backup & restore
  • Endpoint provisioning (Windows, Linux)
  • Network & server troubleshooting
  • Technical documentation & training
Built real projects with
  • Django REST Framework
  • REST API design
  • scikit-learn
  • pandas / NumPy
  • OpenCV
  • C++ on ESP32
  • FreeRTOS
  • Verilog
  • Logisim / digital design
  • Git
Coursework foundations, KFUPM
  • Computer architecture
  • Operating systems
  • Networking
  • Microprocessors
  • Signal processing
  • Control systems
  • MQTT / LoRaWAN / Zigbee
  • Edge computing
Learning now, not yet interview-ready
  • Linux administration beyond daily use
  • systemd / journald / permissions
  • Performance triage
  • SQL past CRUD: window functions, EXPLAIN, indexing
  • Docker
  • Kubernetes

I keep that last group honest and on the page. If something is listed there, I can tell you what I have read and what I have built with it. I have not run it in production. Better you know that before we start talking than halfway through a screen share.

Background

KFUPM
2017 – present

MSc, Internet of Things

King Fahd University of Petroleum & Minerals · 2025 – expected May 2027

Transducers, IoT gateways and platforms, LPWAN, MQTT, Zigbee and LoRaWAN, edge computing, telematics, real-time analytics, industrial IoT and interoperability.

BSc, Computer Engineering

King Fahd University of Petroleum & Minerals · 2017 – 2023

Computer architecture, digital design, microprocessors, signal processing, control systems, operating systems and networking. The processor and the AES state machine both came out of this degree. The architecture and digital design courses are where the processor at the bottom of the table above begins.

AUVSI SUAS competition

KFUPM team · AI / ML model

Designed the machine-learning model for the team's small unmanned-aircraft entry, working within the accuracy and latency limits that a mission running on real hardware imposes.

Contact

Email is
fastest

Happy to talk.

I'm most useful on backend systems, embedded work, or anything that needs someone who can move between the two without a handover. If you want to dig into any of the projects above, ask. The code is all there.

Based in
Eastern Province, Saudi Arabia