Skip to content
View JFrusher's full-sized avatar

Highlights

  • Pro

Block or report JFrusher

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
JFrusher/README.md
Jacob Frusher, OSAT process engineering at Custom Interconnect

I work in OSAT process engineering at Custom Interconnect, on an industrial placement, I develop code for my own personal needs, work needs, enjoyment and interest.

Tools

Here's a selection of small but really helpful tools I've built to help myself.

readme-svg-generator Plaque Cadence
  • readme-svg-generator generates brutalist ui inspired svg's as seen in this repo
  • Plaque I really struggled with a {{token}} based design suite for things like place cards and invites for y wedding so I built this with those uses in mind
  • Cadence I also couldnt find a software o build complex timelines with multiple different stakeholders and uses so I decided to build this for myself and I've had vendors ask which software I used to make it

Research

Research benches created to explore fundamental concepts as well as interesting avenues of development.

poly-compress CathSim RADL
  • poly-compress — I wanted to see if I could parameterize the gaps between letters into a complex polynomial/fourier to compress text but it never even got close to plain text
  • CathSim — a 2D endovascular catheter trainer where every thing was based around a physics solver and I tried to bring in realistic real constrains such as flouroscopy contrast.
  • RADL — cricket has Cricsheet and football has StatsBomb open-data; rugby union has nothing. A schema and a converter for the corpus that does not exist yet. Still at a v0.3 draft.
Five repositories, one wedding

Four apps have each been assigned a slice of the same day. Seating is in one, the running order in another, the crew in a third, the place cards in a fourth. Each app is able to export a file, but none of them can ever seem to get along , especially not in the critical moment when the place cards list table 6 but the seating arrangement has table 8 in mind.

Trousseau is the one agreed-upon file, along with the validation that happens before anything else is even recorded. Git manages the pointers while a private remote hosts the bytes because these repos are open while the data contains personal emails of real people.

graph TD
    T["<b>Trousseau</b><br/>one file, one wedding"]
    T --- TB["Tableaux<br/><i>seating</i>"]
    T --- CA["Cadence<br/><i>timeline</i>"]
    T --- BR["Brigade<br/><i>crew and jobs</i>"]
    T --- PL["Plaque<br/><i>stationery</i>"]
    CA -. "day.json" .-> BR
Loading
Trousseau The schema, the collector, the checks, and the version history of every state the wedding has been in
Tableaux A to-scale room, tables dragged onto a canvas, guests assigned to tables or to individual seats
Cadence The timeline, the clashes, and five printed pieces of paper
Brigade The jobs hanging off Cadence's blocks, and the people doing them
Plaque The place cards, imposed onto sheets that waste the least card stock

Shared design language but no shared code.

The numbers

GitHub statistics for JFrusher Tech stack Contribution heatmap

Recent activity

  • 25 Aug 2026 - pushed to readme-svg-generator - Add playground support for six cards, presets and shareable state
  • 25 Aug 2026 - pushed to Trousseau - Make sync's dry run read-only, and stop the shell mangling commit...
  • 25 Aug 2026 - merged Trousseau#1 - Readme tone
  • 24 Aug 2026 - pushed to cadence - Ignore .remember/, which holds session transcripts with real names
  • 24 Aug 2026 - pushed to Brigade - Ignore .remember/, which holds session transcripts with real names
Everything else
Repository
EMG Muscle signal to moving gripper, with the whole filter chain on screen so the processing is visible rather than asserted. Runs with no hardware attached
Lunar-Lander Classical control against PPO on LunarLander-v3. A 0.1 per-step time penalty buys 22% faster landings at no measurable cost to reward, three seeds per point
phase-trace Trace a rugby possession with the mouse in one unbroken line; the recogniser reads carries, passes and kicks out of the shape of it, and a sport-agnostic engine draws the momentum chart
MAINTAIN Zero-keyboard maintenance logging for a cleanroom production floor. Operator auth is a badge scan, not a password
PBPK-ABM-thesis Dissertation work: an agent-based tumour model coupled to physiologically based pharmacokinetics
MALLI Malaria detection classifier with a Flutter front end
Medtech Anaesthesia infusion optimisation over a PK/PD model
DCE-Workshops · DCE-code-workshops Data-Centric Engineering workshop material, and the participant notebooks that go with it

Elsewhere

jfrusher.github.io · LinkedIn · jacob@frusher.co.uk

How this page stays current

Every card above is a live SVG from readme-svg-generator, rendered on request against the GitHub API and cached for four hours. The stars, descriptions and topics on the repository cards are whatever they are right now — there is no copy of them in this file to go stale. Each card is wrapped in a <picture> so it follows your colour scheme rather than mine.

The Now and Recent activity blocks are rewritten every night by a workflow running one dependency-free script. It commits only when the content actually changed: dates are absolute rather than relative, precisely so that a quiet week produces no commits at all instead of a week of bot noise in the heatmap two sections up. If the API is unreachable the script exits non-zero without writing, which leaves yesterday's correct content in place and turns the run red.

One known edge: GitHub disables scheduled workflows after 60 days with no repository activity, and the bot's own commits do not reset that clock. If this page ever stops moving, that is where to look.

Pinned Loading

  1. CathSim CathSim Public

    2D endovascular simulation: implicit elastic rod solver, analytic wall contact, synthetic fluoroscopy/DSA from a Beer-Lambert transmission integral. Literature-traceable physics, verified against c…

    Python

  2. Lunar-Lander Lunar-Lander Public

    Classical control and PPO on LunarLander-v3, with the experimental discipline to back the numbers: Latin Hypercube gain search, convergence validation, multi-seed error bars, and held-out evaluatio…

    Python

  3. phase-trace phase-trace Public

    A possession-tracking tool that converts a single mouse drag into spatial rugby events (carries, passes, and kicks). The underlying sport-agnostic engine uses exponential decay to generate live mom…

    Python

  4. Tableaux Tableaux Public

    Interactive wedding seating planner, drag-and-drop room builder and guest assignment with CSV import, built with React, Vite, and Zustand.

    JavaScript