
dev-dock-manager-rust
One Docker dev box per user, with a web terminal, a noVNC desktop and optional GPU. The Django version, rewritten in Rust, partly to find out whether I could.
Taipei, Taiwan · shipping since 2018
An engineer who got promoted into meetings and keeps sneaking back into the codebase.
These days I forecast Japan's electricity prices, and build tools so I never have to open a VPN again.
building power-trading systems for Japan's electricity market: market and weather data pipelines, bidding tools, spot-price forecasts.
Flagship project
Reach every device from your browser.
One outbound reverse SSH tunnel per device gives you a browser terminal, files, remote desktop, a remote browser and the LAN behind it. No port forwarding, no VPN, no public IP.

A few projects that show the range: trading data, developer infrastructure, computer vision and small tools people actually install.

One Docker dev box per user, with a web terminal, a noVNC desktop and optional GPU. The Django version, rewritten in Rust, partly to find out whether I could.

Converts and edits images, audio, video and GIFs entirely in the browser. Nothing gets uploaded, mostly because there is nowhere to upload it to.

A trading simulator with a price-time matching engine, bot traders and a live order book. You can lose money here without losing any money.

Spot-price forecasting and trading strategies for the Japanese and Australian power markets. The repository is private, so screenshots will have to do.

Makes perfectly good images worse on purpose: motion, lens, Gaussian and depth-aware blur, for training models that have to cope with bad photos.
Turns iPhone HEIC photos into PNG from the CLI, a shell pipe or Python. A small tool for a small, recurring annoyance.
Fixes I sent upstream, and packages other people install.
jeanp413/open-remote-ssh (opens in a new tab)8 merged PRs
8 merged PRs, including the host list in Connect to Host, known_hosts verification and ProxyJump fixes.
serengil/deepface (opens in a new tab)Merged PR
Batch age and gender prediction.
tensorflow/models (opens in a new tab)Merged PR
Compatibility fixes for newer TensorFlow and Python 3.
nipy/nipype (opens in a new tab)Merged PR
A docs fix in the example code.
BlurGenerator7070 stars on GitHub
Motion, lens, Gaussian and depth-aware blur for making blurry training data.
HEIC2PNG2626 stars on GitHub
Turn iPhone HEIC photos into PNG from the CLI, a shell pipe or Python.
FisheyeWarping1616 stars on GitHub
Dewarp top-down fisheye images to panoramas and back.
EagleWrapper88 stars on GitHub
A Python wrapper for the Eagle image manager's API.
ShowSys (opens in a new tab)66 stars on GitHub
Print system information from Python or the shell.
django-simple-third-party-jwt (opens in a new tab)22 stars on GitHub
Third-party login and JWT in one Django app.
django-simple-api-proxy (opens in a new tab)55 stars on GitHub
Proxy any API through a Django server.
Four rooms so far. Each one taught me something the next one needed, usually the hard way.
2018 – 2019
First job. Scraped the web, trained language models, learned that regex is a lifestyle.
2019 – 2021
Medical imaging, retail analytics and ads on embedded boards. Stared at a lot of pixels.
2021 – 2023
A sentiment platform over three billion data points. Most of them were complaints.
2023 – now
Solar forecasts first, then power trading for Japan. The weather is now my problem.
Most of what I build now, I build together with AI coding agents. I decide what to make, how the pieces fit and whether it actually works. The agent writes a lot of the code, and I read every change before it ships.
Daily tools