intertwingly

It’s just data

Nine Days

The internet says Claude Code is nerfed. That has not been my experience. A Rails blog app, transpiled to six compiled languages with real-time WebSocket broadcasting, downloadable binaries, 126+ tests. Nine days.

Rust on Rails

Railcar can now transpile a Rails application to Rust. The same blog app generates a working Axum server with rusqlite, Turbo Streams — 21 tests passing, zero compiler warnings, the sixth target language.

Go on Rails

Railcar can now transpile a Rails application to Go. The same blog app generates a working net/http server with view functions, modernc.org/sqlite, and Turbo Streams — 21 tests passing, the fifth target language.

Elixir on Rails

Railcar can now transpile a Rails application to Elixir. The same blog app generates a working Plug + Bandit server with EEx templates, Exqlite, and Turbo Streams — 21 tests passing, the first functional language target.

TypeScript on Rails

Railcar can now transpile a Rails application to TypeScript. The same blog app generates a working Express server with EJS templates, better-sqlite3, Turbo Streams — 21 tests passing, the third target in a single day.

Python on Rails

Railcar can now transpile a Rails application to Python. The same blog app that compiles to Crystal also generates a working Python web application with aiohttp, SQLite, Tailwind CSS, and Turbo Streams — 21 tests passing, full CRUD with nested resources.

Crystal on Rails

Compiling arbitrary Ruby is hard. Generating type signatures for arbitrary Ruby is hard. But Rails isn't arbitrary Ruby — it's a DSL with known semantics. Railcar exploits that to do three things: transpile Rails apps to Crystal, provide a Rails-compatible Crystal framework, and generate RBS type signatures.

Rails on the BEAM

Same blog. Same Turbo Streams. But now a runtime crash doesn't crash the server, broadcasts span nodes without Redis, and you have a path to Phoenix.

Calling JavaScript from Ruby

Ruby can call C. Ruby can call Python. But calling JavaScript has always meant eval strings or manual bundling. Boax embeds the Boa JS engine in Ruby via Rust, letting you call JS libraries with the same proxy-object pattern Ruby developers already know.

The Transpiler That Reads Your Whole App

Most transpilers work file by file. But Rails encodes meaning across files — controller names imply view paths, associations imply async behavior, group_by in a controller implies Map operations in a view. Juntos reads the whole application and carries that knowledge forward.

Writebook on Juntos

We took Basecamp's Writebook — a real Rails 8 application — and ran it through Juntos. The server starts, the database initializes, and HTTP requests are served. Here's what we learned.

Ruby2JS: Self-Hosted

The Ruby2JS documentation site now compiles itself. Every live demo runs Ruby2JS transpiled by Ruby2JS — no Opal, no server, just the transpiler in your browser.

Same Code, Same Output

A Rails blog transpiled to JavaScript produces identical HTML. Not similar. Not close enough. Identical. Here's how I proved it and what I found along the way.

Three Tiers, Zero Servers

A Rails blog running across three browser Workers — SharedWorker for application logic, dedicated Worker for SQLite with OPFS persistence, main thread for Turbo and Stimulus. Under 600KB gzipped. No server required.

Full Stack Watch Mode

The full test suite—model tests, controller tests, system tests—running continuously on every save at 47ms per test. Faster than jsdom. In a real browser. The tests DHH gave up on, running on every save.

Capybara Without the Browser Tax

Transpiling Ruby to JavaScript is usually discussed in terms of deployment targets. But it has a second payoff: system tests that run in 75ms with zero flakiness. Same Capybara DSL. No browser required.

Routing to Identity

Kubernetes routes to capacity. Cell orchestration routes to identity. These are fundamentally different problems, and everything downstream follows from which one you're solving.

Submitted for Your Approval

Open two browser windows. Add a comment in one. Watch it appear in the other. No server. Just GitHub Pages. You unlock this door with the key of imagination.

Rails Apps on V8 Isolates

What happens when you transpile a Rails chat app to Cloudflare Workers? D1, Durable Objects, Hotwire—it all just works.

Rails to the Edge and Beyond

One Rails app. Five runtimes. The same blog—models, controllers, ERB templates—running with CRuby, in the browser, on Node.js, and deployed to Vercel Edge. Same code, different platforms.