TerraMar Networks · Tracpoint

Fleet telematics · 2025–2026

TerraMar EBPM System: trailer brake monitoring

PHP · MySQL · Docker
2025–2026

Electronic Brake Performance Monitoring for HGV trailers. It reads TrailerCAN (ISO 11992) data that a Teltonika FMC650 on the tractor reports, and scores how well the trailer's brakes actually performed on the road. Fleets can spot brake wear between scheduled inspections.

  • Splits continuous telemetry into separate braking events using brake pedal rise and fall, then filters out events that are too short, too slow or too noisy to score.
  • Scores each event with a Brake Performance Value: actual deceleration as a percentage of the deceleration expected from pedal input, axle load and road gradient.
  • Scores trailers by VIN, so each score belongs to the physical trailer whichever tractor pulled it. A separate Cab EBPM view scores the tractor's own brakes.
  • Telemetry dashboard, actual-vs-expected scatter chart and a downloadable PDF Braking Performance Report.
  • Wrote the technical documentation and the customer guide.
Runs in Docker behind Caddy with HTTPS. All configuration comes from environment variables.

Tacho Intelligence

Python · JS · PHP
Oct 2026

Turned a single-file tachograph (.ddd) report into a staff tool and then into a panel inside Tracpoint. It reads vehicle and driver files straight from Teltonika's TachoSync API.

  • Built a Flask service that proxies the TachoSync API and adds a browse view: customer, vehicles or drivers, search, then view or download.
  • Designed the Tracpoint integration as one iframe panel. Tracpoint issues a short-lived signed token and the panel only serves files for that company. The reviewing developer approved the approach.
  • Fixed the Gen1 file parser. It was matching marker bytes inside signatures and speed data, which produced fake days and hundreds of fake drivers.
  • Deployed to a QA environment over HTTPS with a strict frame-ancestors policy.
Gen1 files decoded correctly went from 40/44 to 44/44, with no change to Gen2 output.

Tracpoint Modern prototype

HTML · JS · Leaflet
Oct 2026

A UI redesign prototype for a legacy PHP/ExtJS app whose users complained about buried menus and too many clicks. Live map, asset grid, route replay and tacho screens.

  • Status filter chips with counts, one search box that filters the list and map together, and the six common asset actions on the detail panel instead of a right-click menu.
  • Mock data uses the legacy app's own field names, so it can be pointed at the real status endpoint without renaming anything.
  • Route replay generates repeatable journeys anchored to real depot coordinates.

EcoDrive dashboard

JS · CSV
Oct 2026

A demo dashboard for Teltonika FMC650 eco-driving trip-end reports: scores by truck and driver across a sample fleet of 6 trucks and 8 drivers. Styled to match the tacho tool so the two read as one product.

CAN fuel data dashboard

PHP · Chart.js · Leaflet
Nov 2025 – Jan 2026

Shows a vehicle's fuel use from its CAN bus data for any asset and date range.

  • Detects whether the vehicle reports fuel as a percentage or as litres. When it reports litres, it estimates tank capacity from the history.
  • Draws the route on a map, coloured by fuel level. Hovering over the fuel chart highlights the matching point on the map.
  • Plots nearby fuel stations from OpenStreetMap so refuels can be matched to places.
  • A live vehicle diagram shows door, bonnet, light, brake and parking brake status from CAN signals.

Fuel card import validator

PHP 8.3 · Docker
Oct 2026

Validates and corrects supplier fuel card CSVs against the asset database before import, then writes them out in Tracpoint's 11-column fuel template.

When a reviewer asked for direct database inserts and odometer calibration, I proposed feeding Tracpoint's existing fuel importer instead. That importer already handles both, so the tool stays read-only and the logic lives in one place.

Demo server and legacy codebase map

AWS · Caddy · Docker
Oct 2026
  • Run an EC2 test server that hosts each demo as its own Docker Compose project behind one Caddy reverse proxy, with HTTPS and a landing page that shows which demos are up.
  • Mapped a 6,400-commit PHP/ExtJS codebase into 23 linked architecture notes: request routing, module permissions and data storage. New features now start from those notes.

Open source

GitHub · ryanc2112

AnyPS5: Linux and AMD GPU testing

C++ · Vulkan
Oct 2026

Most issues on this project get a PR within minutes, so I filled the gap that was missing: test runs on Linux with AMD's RADV driver. I set up two remote test machines (an RX 570 desktop and a Steam Deck on SteamOS) and run the full test suite under Vulkan validation.

  • Wrote and merged my own fix: image tests now skip min/max reduction cases on GPUs that lack the feature. Verified fail to pass on the RX 570.
  • Found a DCC clear layout regression in a format PR during review. The author fixed it and it merged.
  • Filed a multisample depth bug and confirmed the cause was depth buffer (HTILE) decompression by toggling one driver flag. Another tester then reproduced it on Vega.
  • Filed a test failure on RADV that led to a fix PR. The merged fix credits my RX 570 and Steam Deck runs.
  • Got a homebrew game running at 59.94 FPS on the Steam Deck and wrote up the bring-up report.

Mesa llvmpipe crash: from game crash to one-line repro

Vulkan · SPIR-V · gdb
Oct 2026

A homebrew game ran at about 40 FPS on the Steam Deck's GPU driver (RADV) but crashed every time on llvmpipe, Mesa's software Vulkan driver. Nobody had a cause, so I traced it out of AnyPS5 and into Mesa itself.

  • Got a symbolized backtrace with gdb and debuginfod. It showed llvmpipe crashing inside LLVM while compiling a mesh shader.
  • The emulator's own shader dumps fired too late to catch it, so I used Mesa's SPIR-V dump to capture the shader. spirv-val confirmed it was valid, which pointed the bug at Mesa and LLVM, not the emulator.
  • Wrote a standalone Vulkan C harness that loads just that shader, then shrank it with spirv-reduce and an automated crash test.
One line of mesh shader GLSL crashes llvmpipe (Mesa 26.2.5, LLVM 23.1.3) and runs fine on RADV. Matched to open Mesa issue #14376, which has a fix in review.

ReSkate: Windows builds and docs

C++ · CMake
Oct 2026

Contributor to a GPL mod for the game Skate. Wrote the troubleshooting guide and bug report template (merged), found and fixed a Windows plugin test failure in someone else's PR (merged), and opened a build fix so a probe target links.

Independent projects

Personal R&D

Automated trading bot (paper account)

Python · Alpaca API
Sep 2026

A stock and crypto bot tested live on a paper account. The work was mostly safety engineering: each test day produced incident reports, and each incident became a safeguard.

  • A self-healing audit every 15 seconds that finds positions without a stop order and protects them.
  • Retry logic for stop orders rejected during the broker's post-fill settlement hold.
  • A pause flag, a cool-down after stop-losses, and a pause-first liquidation script that removed a race condition.
On day two, two unprotected positions were detected and protected within seconds with no manual action.

Security research

PHP · Docker · Kali
Oct 2026

Source-code auditing for the Nextcloud bug bounty program on HackerOne, using a local lab instance. Audited the OpenID Connect login app and tested one lead with a 200,000-case differential test. That test showed it was a robustness bug, not a security issue, so it was not reported as one.