Sitelet https://github.com/Bortlesboat
Skip to content
View Bortlesboat's full-sized avatar
🏠
Working from home
🏠
Working from home

Block or report Bortlesboat

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
Bortlesboat/README.md

Andrew Barnes

Finance analyst (FP&A) who writes code. Most of my open-source time goes to Bitcoin and Lightning payments, AI inference infrastructure, and the Python tooling in between. I like bugs that only show up on one platform, after a restart, or halfway through a message.

Proof of Work: a 15-second motion study rendered frame by frame in canvas code

Proof of Work, a 15-second motion study drawn frame by frame in canvas code. Watch it render live · 1080p60 with sound

Selected work

Project Change What was hard about it
OpenAI Python SDK Publicly export type_to_response_format_param Callers can use openai.lib instead of private parsing modules. Resolves an upstream feature request; merged October 2, 2026.
NSA Ghidra PyGhidra: keep bean properties out of script globals iteration With no program open, JPype bean properties like firstFunction throw on read, so iterating script globals (and interpreter completion) broke. Took a second round after maintainer review to cover the no-program case.
vLLM ROCm fixes, incl. a cu_seqlens_q off-by-one in AITER speculative decode (#39120) and config registration before tokenizer init (#40299) Six merged. Most were found by reading AMD kernel paths against the backend they were supposed to match.
Mesh-LLM Owner keystore and signed+encrypted message primitives (#156), then a run of Windows fixes Nine merged in a fast-moving Rust distributed-inference project; I mostly own Windows breakage there now.
rust-lightning Expose current dust exposure in ChannelDetails Operators can now watch how close a channel is to its dust limit, counting commitment fees as well as dust HTLCs.
rust-bitcoin From<Infallible> for 31 public error types Small idea, wide surface: units, primitives and consensus_encoding all had to line up so generic ? code compiles.
HoloViz Panel Fix nested Plotly array loss across clients Reusing a figure dropped nested array data for the second client. Binary serialization was mutating containers that shallow copies still shared.
LiveKit Agents Forward provider events through session restarts Provider-specific realtime events were lost every time the fallback wrapper swapped its child session.
ordinals/ord Warn when exporting addresses without the address index Replaced a hard error with a warning, following maintainer direction from an earlier PR.

In review

  • Bitcoin Core #36190: tests that the bitcoin wrapper reports child exit status correctly on Windows. Code-review ACKed; waiting on a dependency.
  • x402 #1873: request-bound Lightning upfront payments for the Python SDK, with replay protection that holds across restarts.
  • NEAR near-sdk-rs #1638: ABI generation failed to link on Windows MSVC hosts for about two years.

What I'm working on

  • x402 + Lightning in Python. Payment verification, settlement and replay handling. Notes: x402-work.md.
  • Bitcoin research. What a private-payment wallet has to keep so it can still recover and spend after a service disappears. Reproducible experiments and their limits: bitcoin-research.
  • Wallet policy kit. Try the Python-only checks for coin-pool separation, or reproduce payments and saved-wallet restarts on regtest. Report a trial or wallet use case.
  • Mesh-LLM on Windows.

Things I maintain

  • bitcoin-mcp: MCP server that gives agents Bitcoin node, mempool and fee context. 50 tools, 180 tests.
  • Satoshi API: self-hostable fee-intelligence API behind bitcoin-mcp, with optional x402 payments. The public hosted instance is paused.
  • qlib-options: options snapshot and factor pipeline for Microsoft qlib.

Finance side

The day job is FP&A. The overlap shows up in OpenBB and qlib work, variance-commentary tooling, and a lot of Python that turns messy finance data into something a person can sign off on. Case studies.

Full record

240 merged pull requests to 160 public repositories outside my account, verified October 2, 2026. Merges in every month from March through October. Dated list and search method · raw JSON · portfolio

Site · X @BTCOrangeCoin

Pinned Loading

  1. bitcoin-protocol-guide bitcoin-protocol-guide Public

    Bitcoin protocol internals — UTXOs, Script, SegWit, Taproot, Ordinals. Real transaction examples with CLI verification.

    6 1

  2. Bortlesboat Bortlesboat Public

    Profile README

    Python

  3. bitcoin bitcoin Public

    Forked from bitcoinknots/bitcoin

    Bitcoin Knots enhanced Bitcoin node/wallet software

    C++

  4. googleworkspace/cli googleworkspace/cli Public

    Google Workspace CLI — one command-line tool for Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin, and more. Dynamically built from Google Discovery Service. Includes AI agent skills.

    Rust 31.2k 1.9k

  5. openai/skills openai/skills Public

    Skills Catalog for Codex

    Python 27.9k 1.9k