Made Notes, not a portfolio

Everything here came apart first.

Each project below is written up the same way: the problem, the pieces it was taken apart into, how they went back together, and what we'd do differently. If someone sent you here with “ask them how they built that”, this is the answer — the problem, the pieces, how they went back together, and what we'd do differently. The longer version is a note away.

01 · AI · video · audio · 2026

A local English→Thai dubbing pipeline

Hours of finished video needed a second language. Cloud dubbing was quoted at roughly three dollars a minute. The goal: professional-feeling dubs at zero dollars a minute, on the Mac already on the desk.

PartsDemucs · MLX Whisper · LM Studio · F5-TTS-THAI · ffmpeg · Python · Apple Silicon

video Demucs Whisper local LLM review F5-TTS ffmpeg EN → TH, line by line fix a line, re-run
Every box runs locally. The “review” step is a person reading English and Thai side by side; reviewed lines are kept, never regenerated.

Problem

Hours of English-language video, a Thai audience, and a budget that said no to per-minute cloud dubbing. “Good enough” had a number: about 93% of frontier quality — not perfection, but nothing that makes a listener wince.

Pieces

  • Demucs separates the voice from music and room noise, so the music survives the dub.
  • MLX Whisper transcribes with timestamps on Apple Silicon.
  • A local LLM (via LM Studio) translates line by line, keeping the timing.
  • F5-TTS-THAI clones a reference voice from a ≤12-second sample and speaks each line.
  • ffmpeg cuts long videos into ~3-minute chunks at silent gaps and stitches the dubbed parts back.
  • One Python core drives all of it, with --resume so a fixed line doesn't mean a full re-run.

Put back together

The first real five-minute review landed “quite surprised at the quality level.” Two rules made that possible: never judge synthesized speech by listening to a few seconds — Whisper round-trips every generated line and compares it to the intended text, because fluent-sounding garbage is the failure mode — and treat the transcript review as part of the pipeline, not an optional extra. What remains is sync polish: pops, dead pauses, an occasional stretched line, each itemized in a roadmap with a diagnosis and a fix.

Would do differently

Curate one reference voice per speaker up front and store it. Auto-picking a reference clip per video cost a full round of re-dubbing.

LaneAI Integration — how this kind of work goes

02 · Networks · documentation · 2026

One fiber line, four tenants, five VLANs

A mixed-use building in Southeast Asia: several unrelated tenants, one fiber line, one consumer modem's Wi-Fi for everyone. Segmented on a Cisco Meraki gateway, then written up so anyone can run it.

PartsCisco Meraki MX · VLANs · WPA2/3 · Auto VPN · client VPN · python-docx · cairosvg · SVG

fiber ONT Meraki MX mgmt guest shop tenant office 5 VLANs · 1 SSID each IDS/IPS · content filter Auto VPN · cloud managed
The public guest network is the least trusted and gets its own VLAN; the management network is the one nobody else can see.

Problem

One consumer modem, everyone on the same flat network, no separation between a public guest and the people paying rent — and nobody could say which cable went where. If the one person who set it up left, the building's internet left with them.

Pieces

  • A Cisco Meraki MX behind the ISP's fiber ONT; five VLANs — four tenants plus management; one SSID per tenant.
  • Intrusion detection and content filtering where it matters; cloud management and client VPN for remote administration.
  • Every console screen captured and reduced to one canonical data file — the single source every document is built from.

Put back together

The network is the smaller half. The larger half is the documentation set: a 16-page master manual (access and credentials first, then install/restore/recovery, then the full reference), a 4-page quick guide, an admin access sheet, a 7-page recovery guide, five diagrams (physical topology, VLAN segmentation, SSID map, security services, access layers) and a self-contained HTML overview. All of it is generated by Python from that one data file, so when the network changes the manuals are rebuilt, not re-typed. Delivered with a findings list — and the fixes to go with it, so the manual describes the network as it should be, not as it was found.

Would do differently

Get the ONT bridged on day one. Carrier-grade NAT cost a week of “why won't the VPN connect” before the cloud-managed tunnel turned out to work through it anyway.

LaneNetworks & IT — how this kind of work goes

03 · Product · CMS · 2026

A commercial plugin, kept deliberately vague

A licensing-ready plugin family for WordPress-class content platforms. What it does stays under wraps until launch — how it is built doesn't have to.

PartsPHP · JavaScript · REST · semantic versioning · licensing · auto-update · script-built docs

Problem

Plugins are easy to hack together and miserable to maintain. A product has to survive platform updates, strange hosting, and users who will never read a manual — for years, unattended.

Pieces

  • Activation and licensing that fail politely, never destructively.
  • A private update channel, semantic versioning, and a compatibility matrix across platform versions.
  • An admin experience a non-technical owner can't break — settings that explain themselves.
  • Documentation generated by the same scripts that build the release, so it can never drift from the code.

Put back together

Built, versioned and documented like a product, because it is one. The same discipline flows into client work: we specialise in plugin development for different types of CMS — WordPress first — so a site's custom behaviour survives every update instead of dying with the next one.

Would do differently

Start the compatibility matrix on day one, not after the first support question.

LaneWeb & App Design — how this kind of work goes

04 · Web · WordPress · 2026

A 15-page community hub and its WordPress twin

A nonprofit network in Southeast Asia needed a landing page, a hub, a blog and a summit page that felt like one family — approved by the client without a single revision.

PartsHTML · CSS · JS · data manifests · WordPress (PHP) · headless Chrome · LibreOffice · rsync · git

Problem

Three “front doors” that had to look like one organisation, be editable by non-technical people eventually, and work on the mid-range Android phones most of the audience actually owns.

Pieces

  • Self-contained static HTML with inline CSS and JS and Google Fonts only — no build step, opens from a folder.
  • Data manifests drive media, episode and product detail pages through slug routers: adding content means editing a list, not a page.
  • Per-section dark/light toggles with their own storage keys; a family bar on every page linking the four doors.
  • A classic PHP WordPress theme mirroring the static site — one scoped stylesheet per template, categories created on activation — plus custom plugin work where the platform falls short: we specialise in plugins for different types of CMS.

Put back together

Each client round ships as a dated review package: a start-here page, the full site, documents as PDF and DOCX (rendered from the same HTML by headless Chrome and LibreOffice), and a zip. A mobile-polish project measured every page at a true 390 px with a homemade harness — scroll height, horizontal overflow, sub-44 px tap targets — because headless browsers silently enforce a 500 px minimum and lie about mobile. 723 internal references crawled, zero broken.

Would do differently

Build the 390 px measurement tool before the design round, not after it.

LaneWeb & App Design — how this kind of work goes

05 · Content · automation · pro bono · 2026

Thirty lessons, every asset, one command

A bilingual children's education series — thirty-plus lessons, each with digital art, a slide deck, an infographic, a coloring book, review sheets and narration — produced pro bono, by a pipeline instead of a week of clicking.

PartsPython · Markdown · text-to-speech · image generation · PDF · Google Drive sync

Problem

Every lesson needed the same ten deliverables in the same style. Done by hand, lesson 30 would have looked nothing like lesson 1, and the teacher's tablets would have had thirty slightly different folder layouts.

Pieces

  • A master lesson document as the single source of truth.
  • A grading pass that scores the master against a rubric before anything is generated from it.
  • Generators for the deck, infographic, coloring pages and review sheets; text-to-speech for narration; digital art produced with the latest generation of image tools, then finished by hand.
  • A sync step that lands everything in the right lesson folder, named the way the classroom expects.

Put back together

“Create lesson 31” is now one instruction. Quality is graded, not assumed; fixes made to a reviewed lesson are kept. A separate project sets up the classroom tablets so the lessons open the same way on every device.

Would do differently

Add the grading pass earlier. The first lessons were regenerated more often than they needed to be.

LaneAI Integration — how this kind of work goes

06 · Automation · 2025 – 2026

State-of-the-art workflows that give the hours back

The fastest upgrade a small team can buy isn't hardware — it's a workflow that removes the clicking. We build them for ourselves first, then for clients.

PartsPython · headless Chrome · LibreOffice · ffmpeg · AI models · git

Problem

Recurring work — documents, review packages, media, quality checks — eats creative hours a few minutes at a time, and hand-made output drifts: version ten never quite matches version one.

Pieces

  • Document pipelines: one HTML source rendered to print-grade PDF and editable DOCX, never re-typed.
  • One-command asset generation — the curriculum above went from a week of production per lesson to a single instruction.
  • Media pipelines that chunk, process and reassemble video and audio unattended.
  • QA harnesses that measure instead of guess: real mobile widths, contrast, broken links, frame-by-frame animation checks.
  • AI where it earns its place — drafting, dubbing, artwork — always with a human pass at the end.

Put back together

A client review round that used to take a day now ships in an hour, identical every time. The same approach is packaged for clients: find the clicking, take it apart, hand back a workflow — documented, so it keeps working after we leave.

Would do differently

Automate the second time a task appears, not the fifth.

LaneAI Integration — how this kind of work goes

07 · Product · social · 2026

A social platform for a city audience

Proxcimity is a social app for people in the same city, built for a Bangkok and Manila audience and trilingual in English, Thai and Filipino from the first commit. It is a studio product rather than a client job: designed, built, and run end to end here.

PartsSvelteKit · TypeScript · Supabase · PostgreSQL · PostGIS · row-level security

The build is finished and the write-up is held back until it launches. The address is proxcimity.app.

LaneWeb & App Design — how this kind of work goes

08 · Where it started · C:\> to today

Every operating system, the hard way

This studio didn't start with a client — it started with a kid at a C:\> prompt. DOS first, then UNIX on Apple hardware, then Linux on every server since; programming learned the same way — C++ in Visual Studio first, native Mac apps along the way, Python now. The prompt in the footer below cycles through all three shells because that's the actual biography.

PartsMS-DOS 6 · UNIX (macOS) · Linux · C++ · Visual Studio · Mac apps · Python

Problem

A platform change is where most people's skills expire: new OS, new shell, new toolchain, start over. The alternative is to learn the layer underneath — the part that doesn't change — and carry it across.

Pieces

  • MS-DOS 6 — config.sys, autoexec.bat, and the first time something broke and got fixed at a prompt. Memory managed by hand, in kilobytes.
  • UNIX, on Apple — the Mac turned out to be UNIX under the glass. Same pipes, same permissions, same discipline — with professional design and video tools on top. Still the studio's daily driver.
  • Linux — every VPS, every Docker container, every self-hosted service the studio runs. When a client's site or mail or network lives on a server, this is the room it lives in.
  • C++ in Visual Studio → Python — compiled discipline first: types, builds, debuggers, memory you clean up yourself. Then Python, the glue that now drives the document pipelines, media tools and QA harnesses on this page.
  • Mac app development — native software for the platform the studio lives on. The machine that grades the video also runs tools we wrote for it.

Put back together

Three shells, C++ to Python, and native apps in between — nothing on a client's desk, or in their rack, is foreign territory. The same afternoon can touch a WordPress theme, a Linux firewall and a Mac video edit, because underneath they're the same machine, taken apart enough times to be understood.

Would do differently

Nothing. Every hour spent at a prompt has been billed against a thousand times since.

§ The stack we keep reaching for

The best tools in the world, on purpose.

Chosen for how they behave in year five, not week one — and current where it counts: the newest image, voice and language models sit beside tools trusted for a decade. One honest sentence each.

ToolWhy it's still here
HTML · CSS · JSShips anywhere, lasts a decade, opens from a folder. This site is exactly that.
SvelteKit · Svelte 5When it has to be an app: small bundles, real components, installs as a PWA.
WordPressWhen the client needs to edit and already knows WordPress. Classic themes, no page builders.
Supabase · PostgresA real database with row-level security, free at the scale a small group needs.
CloudflareDNS, mail routing, edge caching. Boring in the best possible way.
Cisco MerakiEnterprise networking a small building can afford, managed from anywhere, learnable by a newcomer.
PythonBuild scripts, document generators, media pipelines: the glue between everything else.
ffmpeg · Whisper · Demucs · F5-TTSThe local media stack. Runs on the Mac, costs nothing per minute.
Latest AI modelsImage, voice and language — digital art, dubbing and drafts made with current-generation tools, finished by hand.
Illustrator · Affinity · DaVinci Resolve · LogicDesign and video since 2010 — cut and colour-graded in the same suite the film industry grades on.

Ask us how.

Every project above has a longer story — the dead ends, the numbers, the thing that finally worked at 1 a.m. Say which one and you'll get it told straight.

Every note is read by a real person, on Indochina Time.