Skip to main content

MakerPortal / field notes

Notes from inside the build.

Working ideas about independent software, product judgment, interface craft, and the useful tension between speed and care.

Newsletter · Privacy-first

Field notes in your inbox

Privacy-first newsletter via Buttondown — no tracking pixels. Get new notes + archive drops first. Free snippet from BLExAR as lead magnet.

No tracking, unsubscribe anytime · RSS at /rss.xml · Privacy-first per D-014

Showing all 57 field notes

02

Launch diff

iPhone 18 Pro vs iPhone 17 Pro: Pure Iteration

Apple's own spec pages for the iPhone 18 Pro and iPhone 17 Pro, diffed: 16 sections changed, 15 identical. Every figure copied from the two documents.

By Joshua Hrisko · 11 min read

Sep 11, 2026

04

Correction / On-Device AI

OpenMed's 24–33× MLX speedup is compute, not memory

OpenMed's 24–33× MLX speedup is a compute advantage, not a memory one. Batch throughput (3.3× CPU, 2.2× MLX) shows both backends are partially…

By Joshua Hrisko · 5 min read

Sep 09, 2026

05

Correction / Audio DSP

SwanWeave's 'spatial' module is doing almost no spatial work

The module named Spatial Edit supplies 91% of SwanWeave's fidelity win over SmartDJ but only 5% of the spatial one — pretraining does the spatial work.

By Joshua Hrisko · 5 min read

Sep 07, 2026

06

Comparison / On-Device AI

AutoSubs star ratings hide different training

AutoSubs' model table uses one star scale across models with different corpora, quantization levels, and language sets.

By Joshua Hrisko · 8 min read

Sep 06, 2026

07

Comparison / On-Device AI

PACodec's 30% reduction: two baselines

The 30% figure in the PACodec paper comes from two separate comparisons at different sample rates, baseline bitrates, and dataset sizes.

By Joshua Hrisko · 6 min read

Sep 04, 2026

08

Paper / Local LLMs

ShikumiMiner AST features fail cross-project

Clang LibTooling pipeline extracts AST and CFG features from C++ LLM inference code. In-sample macro F1 is 0.40; leave-one-project-out drops to 0.112.

By Joshua Hrisko · 6 min read

Sep 03, 2026

09

Correction / Local LLMs

gpt-oss-20b scores range 0% to 87% by harness

The same gpt-oss-20b weights produce scores from ~0% to ~87% depending on template, tool format, wire API, and reasoning effort.

By Joshua Hrisko · 5 min read

Sep 02, 2026

10

Readout / Local LLMs

llama.cpp fork streams KV cache on 16 GB CUDA

A llama.cpp fork adds block-granular KV cache streaming to the CUDA server path using pinned host memory and a bounded pool, enabling 262K context on a…

By Joshua Hrisko · 6 min read

Sep 01, 2026

11

Comparison / On-Device AI

Tiel-Coder's gaps turn on unstated precision

Tiel-Coder's README places benchmark figures side by side across two quantization regimes, two chat templates, and unstated precision.

By Joshua Hrisko · 5 min read

Aug 31, 2026

12

Paper / Audio DSP

XTTSv2 anonymizer hits 0.49 EER

XTTSv2 reaches 0.49 EER on CommonVoice via speaker-embedding swaps, bounded by one ECAPA2 probe and seven of sixteen supported languages.

By Joshua Hrisko · 4 min read

Aug 30, 2026

13

Correction / Metal & the Neural Engine

8.75:1 hysteresis puts fan stop at 27°C

mac-tool-kit's 7.8°C hysteresis band splits 8.75:1, placing the fan stop at 27.0°C — a temperature inference or DSP sessions never return to mid-session.

By Joshua Hrisko · 6 min read

Aug 29, 2026

14

Readout / Trend-grounded

Hy4 preview: 770B MoE, open weights, gaps

Tencent's Hy4 ships Apache 2.0 weights with 49B activated parameters and 1M-token context, but four unexplained residual streams block anything beyond…

By Joshua Hrisko · 6 min read

Aug 28, 2026

15

Readout / Audio DSP

CSAVocoder: mel adaptor beats pose 2.6×

CSAVocoder renders binaural and FOA audio from mel-spectrograms and a 7D pose stream.

By Joshua Hrisko · 6 min read

Aug 27, 2026

16

Measurement / On-Device AI

M3 Ultra decode: 9.8 to 139 tok/s measured

Decode, prefill and first-token measured on Apple M3 Ultra, 256 GB: 9.8–139 tok/s across 9 models, median of 3 runs, prompt cache defeated.

By Joshua Hrisko · 6 min read

Aug 26, 2026

17

Correction / Local LLMs

Task type splits MTP acceptance 2.05×

Document tasks yield acceptance 0.615 vs. 0.300 for reasoning — a 2.05× gap quant level and hardware cannot explain; both run Q8KP on RTX 6000 Ada.

By Joshua Hrisko · 6 min read

Aug 26, 2026

18

Paper / On-Device AI

ANE routes by expression, not arithmetic

A 64-shape primitive matrix and ANE counters reveal routing follows operation form, with a ~0.77 bytes-per-token law holding across fp16, int8, and 2-bit…

By Joshua Hrisko · 6 min read

Aug 25, 2026

19

Comparison / On-Device AI

Fun-ASR vLLM speedup: what conditions hide

Fun-ASR-Nano's 16x, 3–5x, and ~50% speedup figures are attached to different—or missing—conditions that the README never aligns.

By Joshua Hrisko · 5 min read

Aug 24, 2026

20

Readout / On-Device AI

Qwen3.8-27B Cold Fusion: mixed attention

GGUFs of a Qwen3-27B fine-tune with 75% linear attention layers and ~2/3 thinking-token reduction — benchmark gaps and unverified quality claims noted.

By Joshua Hrisko · 5 min read

Aug 23, 2026

21

Correction / On-Device AI

Wax hybrid recall is 6.1 ms, not sub-ms

Wax's own benchmark puts hybrid recall p95 at 6.1 ms — six times above the "sub-millisecond" label — and the figure omits which index engine ran.

By Joshua Hrisko · 6 min read

Aug 22, 2026

22

Comparison / On-Device AI

OBLITERATUS MMLU gaps: what conditions hide

V1's −6.0pp and V2's −0.3pp MMLU gaps come from sample sizes a factor of ten apart; V1's arithmetic doesn't reproduce — the figures are not…

By Joshua Hrisko · 6 min read

Aug 21, 2026

23

Readout / On-Device AI

Minna: local doc search with grounded LLM

Minna indexes documents into a hybrid vector-plus-full-text store with citation-grounded chat, but requires macOS 26 beta and ships PostHog telemetry on…

By Joshua Hrisko · 6 min read

Aug 20, 2026

24

Correction / On-Device AI

3.02× FastMTP requires draft depth ≥ 3

A 3.02× speedup exceeds the 3.00× ceiling for depth-2 speculative decoding, placing FastMTP's draft depth at 3 or more with an implied acceptance rate of…

By Joshua Hrisko · 6 min read

Aug 19, 2026

25

Paper / Audio DSP

BEM HRTFs match measured: headphone VR only

BEM-synthesised HRTFs match measured HRTFs on every polar localisation metric (N = 20), but torso-omission error at low rear elevations is untested.

By Joshua Hrisko · 6 min read

Aug 18, 2026

26

Field note / Local LLMs

MoEspresso coder trades at 2.455:1 NLL

Pruning DeepSeek-V4-Flash-0731 cuts safetensors by 32.63%, but each 0.1-unit code NLL gain costs 0.245 units of WikiText degradation.

By Joshua Hrisko · 6 min read

Aug 17, 2026

27

Field note / Local LLMs

buun-llama-cpp VBR uses 10 steps per layer

The step-count formula in buun-llama-cpp's examples reduces to exactly 10 degradation steps per attention layer — 6 codec tiers × 2 KV sides minus 2.

By Joshua Hrisko · 6 min read

Aug 16, 2026

28

Field note / Local LLMs

Serial loading reclaims 4.2 GB on 8 GB devices

Two 7B Q4 models exceed an 8 GB ceiling when loaded concurrently. Serial residency via llama-swap reclaims 4.2 GB of KV cache headroom.

By Joshua Hrisko · 6 min read

Aug 15, 2026

29

Field note / On-Device AI

Espresso bounds CoreML overhead at 168.7 µs

Espresso's 3.41× ANE speedup over CoreML, read against a 70 µs dispatch floor, sets a 168.7 µs lower bound on CoreML per-token overhead.

By Joshua Hrisko · 6 min read

Aug 14, 2026

30

Field note / Local LLMs

Two 7B Q4 models exceed DLLM's 8 GB VRAM

Measured Q4 GGUF sizes show two 7B models consume 8.4 GB, 0.4 GB over DLLM's ceiling, leaving no room for the embed model or KV-cache.

By Joshua Hrisko · 5 min read

Aug 13, 2026

31

Field note / Metal & the Neural Engine

M4 Max decode uses 99.8% of bandwidth

M4 Max llama.cpp inference consumes 99.0–99.8% of its 400 GB/s bandwidth, leaving no slack to absorb VM overhead — a direct constraint on near-native…

By Joshua Hrisko · 6 min read

Aug 12, 2026

32

Field note / Local LLMs

PrivateRedact limits 7B decode to 4.0 tok/s

PrivateRedact's auto-selection limits Ollama inference to 4.0 tok/s on an 8 GB Pi 5 by defaulting to CPU memory, ignoring unified bandwidth.

By Joshua Hrisko · 5 min read

Aug 11, 2026

33

Field note / On-Device AI

ANEForge hits 2.28× speculative decode

ANEForge reaches 16.8 tok/s on Qwen3-8B (up from 7.4), hitting the verify(K)≈verify(1) ceiling at 29.6 GB/s vs Orion's 42.8 GB/s floor.

By Joshua Hrisko · 7 min read

Aug 10, 2026

34

Hardware build / Measurement

Calibrated Multichannel & Binaural Audio Recording on iPhone

Class-compliant multichannel USB audio capture, a loaded 1 V / 103 dB SPL nominal reference at 1 kHz, and binaural recording analyzed on iPhone.

By Joshua Hrisko · 11 min read

Aug 09, 2026

35

Field note / Metal & the Neural Engine

LLMKube's 66× speedup is actually 35.4×

Two figures in LLMKube's GKE benchmark are wrong: prompt processing is 35.4×, not 66×, and token generation is 13.9×, not 17×.

By Joshua Hrisko · 6 min read

Aug 09, 2026

36

Hardware build / Mic arrays

Acoustic Beamforming on iPhone: UMA-8

Real-time SRP-PHAT direction finding and MVDR superdirective beamforming with the miniDSP UMA-8 mic array on an iPhone in Biquadia.

By Joshua Hrisko · 10 min read

Aug 09, 2026

37

Field note / Local LLMs

watchOS LLM speed is capped by CPU bandwidth

ETOS-LLM-Studio pins watchOS inference to the CPU path, so bandwidth divided by model size sets the ceiling — 9.4 tok/s on a Pi 5 at 17 GB/s.

By Joshua Hrisko · 7 min read

Aug 08, 2026

38

Field note / Local LLMs

Qwen3.6-35B decodes ~11.2 B active per pass

Bandwidth-bound decode math on RTX 5090D measurements backs out that only ~32% of Qwen3.6-35B's nominal weights are active per forward pass.

By Joshua Hrisko · 7 min read

Aug 07, 2026

39

Field note / On-Device AI

Orion's ANE Decode vs CPU Baseline

Driving Apple's Neural Engine through private frameworks: 172.4 tok/s on ANE vs 283 on CPU, and delta compilation that pays for itself in 1.21 steps.

By Joshua Hrisko · 7 min read

Aug 05, 2026

40

Field note / On-Device AI

Presspeech's 100ms Latency Overhead

Bandwidth calculation for Presspeech's Parakeet model on M4 Max shows inference takes ~1% of latency, with pipeline dispatch consuming the rest.

By Joshua Hrisko · 7 min read

Aug 05, 2026

41

Field note / Edge Hardware Systems

RTX 5090 Decode Bandwidth & 25% Penalty

imp reports a 42-48% decode gap over llama.cpp on consumer Blackwell. The 5090's own 5090D comparison shows the gap is just a bandwidth model.

By Joshua Hrisko · 7 min read

Aug 05, 2026

42

Field note / On-Device Vector Search

On-Device Vector Search in Swift

How to build distraction-free local semantic search on iOS using CoreML feature extraction and native Swift HNSW index graphs, grounded in Notiary.

By Joshua Hrisko · 5 min read

Aug 03, 2026

43

Field note / Edge Hardware Systems

Running 3B LLMs on Edge SBCs & MCUs

Why parameter count isn't the bottleneck for on-device LLMs: memory bandwidth, GGUF/INT4 quantization math, and ANE lessons from Thumbdash and itria.

By Joshua Hrisko · 6 min read

Aug 03, 2026

44

Field note / Web Audio & Neural DSP

Low-Latency WebAudio DSP for Voice AI

How to build zero-glitch AudioWorklet streaming, Schroeder reverb tails, and formant filtering for real-time speech and Voice AI in the browser.

By Joshua Hrisko · 5 min read

Aug 03, 2026

45

Field note / Web Audio & Synthetic Voice

Zero-Latency Web Audio & Voice AI Architecture

How to build sub-100ms real-time voice streaming applications in the browser using ElevenLabs API, WebAssembly decoders, and AudioWorklet ring buffers.

By Joshua Hrisko · 8 min read

Jul 29, 2026

46

Field note / Edge Hardware Systems

Benchmarking Edge AI SBCs & Accelerators

Hardware benchmark comparing x86 SBCs, ARM CUDA Tensor Cores, and USB Edge TPUs for local vision, speech, and embedding inference.

By Joshua Hrisko · 9 min read

Jul 28, 2026

47

Field note / Voice infrastructure

ElevenLabs & Web Audio Streaming Latency

Browser latency ledger for ElevenLabs TTS, Web Audio scheduling, DSP, and output—plus mistakes that make a fast demo sound broken.

By Joshua Hrisko · 7 min read

Jul 19, 2026

48

Field note / Edge databases

LiteFS Multi-Region SQLite Latency Model

Mental model for LiteFS multi-region SQLite: single-primary writes, local replicas, fly-replay forwarding, and honest latency modeling.

By Joshua Hrisko · 8 min read

Jul 19, 2026

49

Field note / GPU deployment

Building Honest WebGPU Browser Benchmarks

Verification-first WebGPU benchmark methodology: warm-up, queue completion, CPU cross-checks, honest FLOP accounting, and cloud crossover math.

By Joshua Hrisko · 8 min read

Jul 19, 2026

50

Field note / AuraLinter

Agentic Coding Loops Beyond the LLM

How RAG-grounded retrieval and a clang++ verifier catch a hallucinated biquad formula a single LLM call ships — and why AuraLinter isn't fully on-device.

By Joshua Hrisko · 5 min read

Jul 17, 2026

51

Field note / BLExAR

HM-10 vs nRF52: Not the Same BLE UART Profile

Why HM-10's single-characteristic UART and the Nordic UART Service aren't interchangeable, and the newline-framing gotcha that only appears at low MTU.

By Joshua Hrisko · 5 min read

Jul 17, 2026

52

Field note / Notiary

Running Semantic Search Entirely On-Device

Notiary's semantic brain: converting a sentence-transformer to CoreML, deterministic storage math, and the fixed-length-input problem long notes hit.

By Joshua Hrisko · 4 min read

Jul 17, 2026

53

Field note / nymic

Why nymic Needs No Training Step

How kNN-VC voice conversion works: WavLM feature extraction, nearest-neighbor matching, HiFiGAN vocoding, and voice-bank coverage limits.

By Joshua Hrisko · 4 min read

Jul 17, 2026

54

Field note / MotionLink

CMHeadphoneMotionManager: What You Really Get

Quaternion attitude from the Headphone Motion API, why the reference frame resets on every launch, and the recentering pattern that fixes it.

By Joshua Hrisko · 5 min read

Jul 15, 2026

55

Studio philosophy

Why we ship small

The case for narrow products, strong opinions, and releases that can still surprise their makers.

By Joshua Hrisko · 3 min read

Jul 11, 2026

56

Interface notes

Designing the one-handed moment

A field note on glanceability, reach, and building interfaces for the imperfect moments where software is actually used.

By Joshua Hrisko · 4 min read

Jul 04, 2026

57

Build log / 004

Inside Biquadia: On-Device Audio Lab

How privacy, real-time constraints, and the character of physical sound shaped MakerPortal’s newest release.

By Joshua Hrisko · 5 min read

Jun 28, 2026