Blog

Essays on Rails, AI, and product engineering

What we learn shipping — rescuing stuck Rails products, scaling working ones, and making AI deliver in production. Written by the people doing the work.

Marcin Ostrowski · Aug 13, 2026

The decision sprint: why week one doesn't start with code

Strategy decks diagnose without committing. Body shops commit without diagnosing. A two-week decision sprint fuses the two halves consulting keeps splitting.

Read story
Marcin Ostrowski · Aug 10, 2026

Why Rails is still the best way to start a startup in the AI era

Rails bet everything on leverage per person. AI agents multiply exactly that bet, and conventions turn out to be what agents are best at following.

Read story
Marcin Ostrowski · Aug 6, 2026

The harness is the product: models depreciate, scaffolding compounds

Same model, same benchmark, wildly different scores depending on the scaffolding. The durable asset in AI coding isn't the model you rent. It's the harness you own.

Read story
Marcin Ostrowski · Aug 3, 2026

Rolling out AI coding to a Rails team: the playbook, not the demo

Licenses for everyone is not a rollout. The sequence that works: one champion, a harness in the repo, one team on real tickets, and expansion that has to be earned.

Read story
Marcin Ostrowski · Jul 30, 2026

Why small teams win: ownership doesn't dilute

Four people, no handoffs, and names on outcomes. The case for small teams comes down to one observation: responsibility is the input that does not survive scaling.

Read story
Marcin Ostrowski · Jul 27, 2026

Software engineer to product engineer: the shift AI just made mandatory

When code was expensive, specializing in writing it made sense. AI broke that economics. The role that survives is older, broader, and has a name.

Read story
Marcin Ostrowski · Jul 23, 2026

Scaling Rails isn't a caching problem: three years across Norway's biggest airports

Every scaling guide says caching, N+1, background jobs. Three years of scaling a real Rails system taught us the bottleneck lives somewhere else entirely.

Read story
Marcin Ostrowski · Jul 20, 2026

Fractional product engineering team: what it is, and when it beats an agency

Fractional CTOs give you strategy without hands. Agencies give you hands without ownership. There is a third shape, and it deserves a proper definition.

Read story
Marcin Ostrowski · Jul 16, 2026

The Rails AI Harness now writes plans I actually read

From 4,000-line implementation plans to 129 lines of vertical slices.

Read story
Marcin Ostrowski · Jul 16, 2026

Multi-tenant billing is where your SaaS architecture gets tested

Stripe tutorials end where real billing begins. Corrections, B2B invoices, per-tenant fees: what running payments for Norway's airports taught us about the money paths.

Read story
Marcin Ostrowski · Jul 13, 2026

Adding multi-tenancy to a live Rails app: what the gem guides skip

Retrofitting tenancy onto a product with real users is a different job than starting multi-tenant. Lessons from scaling one airport's system to all of Norway's biggest.

Read story
Marcin Ostrowski · Jul 9, 2026

How to evaluate a legacy Rails codebase before you commit to it

Taking over from an agency, buying a product, or scoping a rescue: the same week of reading answers all three. Here's what to look at, in order.

Read story
Marcin Ostrowski · Jul 6, 2026

Your team stopped shipping. The code is probably why.

A founder's guide to reading the symptoms when delivery slows to a crawl: what they mean, what makes it worse, and what to do before hiring more developers.

Read story
Marcin Ostrowski · Jul 2, 2026

Killing react-on-rails: moving a unicorn's views back to Rails

We removed react-on-rails from a 13-year-old codebase serving millions and converted the views to Stimulus. What it cost, what it paid, and what stayed React.

Read story
Marcin Ostrowski · Jun 29, 2026

AI agents flail on legacy codebases. The codebase is why.

Agents fly on greenfield demos and faceplant on ten-year-old apps. The difference is what the repo teaches them, and you can fix what it teaches.

Read story
Marcin Ostrowski · Jun 25, 2026

A CPO we worked with shipped production code daily. Here's the system that made it safe.

A product person with zero engineering background shipping to production sounds reckless. What makes it work is the system around the model.

Read story
Marcin Ostrowski · Jun 22, 2026

When should your Rails app go multi-tenant? A decision framework for CTOs

Multi-tenancy is a business decision wearing an architecture costume. A framework for when to make the move, which isolation level to pick, and what it really costs.

Read story
Marcin Ostrowski · Jun 18, 2026

11 months inside a 13-year-old Rails codebase: the Domestika rescue

What a Rails rescue actually looks like from the inside: the audit, the kills, the rebuild, and the deploy pipeline that got 40% faster on the way out.

Read story
Marcin Ostrowski · Jun 15, 2026

Rewrite or rescue? Deciding what to do with a legacy Rails app

We spent 11 months inside 13 years of Rails at Domestika and still didn't rewrite it. The rewrite question is usually the wrong question to ask.

Read story
Marcin Ostrowski · Jun 11, 2026

Why your team's AI coding adoption didn't stick

Ninety percent of firms told NBER that AI changed nothing for them. The tools work; what fails is treating an organizational change as a tooling rollout.

Read story
Marcin Ostrowski · Jun 8, 2026

The review gap: your team now writes more code than it can review

AI didn't remove your bottleneck. It moved it to code review. The fix isn't reading faster: machines check the code, humans review the intent.

Read story
Marcin Ostrowski · Apr 17, 2026

You need an AI brain.

Your agent is only as good as the context it can reach. How I turned markdown files in a git repository into one brain my agents and I both read and write — across clients, initiatives, decisions, and research.

Read story
Marcin Ostrowski · Mar 20, 2026

My Harness: How I stopped babysitting AI and went kitesurfing.

I built a system that builds the system. 4 hours from idea to production. Here's my full AI coding workflow for Rails.

Read story
Marcin Ostrowski · Feb 11, 2026

Your AI has no memory. Your Rails codebase does.

AI wakes up every session like Leonard in Memento — no memory, trusting only the tattoos. Your conventions are those tattoos. Here are the Rails rules I'd ink first: business logic in models, boring controllers, views that contain the mess.

Read story
Marcin Ostrowski · Feb 3, 2026

How do you know the software is working?

You don’t know software works because you read it. You know it works because automated checks, strict constraints, and structured review make it hard for it to fail silently.

Read story
Marcin Ostrowski · Jan 27, 2026

The single most important thing that made me believe AI coding could work

AI coding didn’t start working when prompts improved, but when rules became enforceable. Loading and applying coding conventions upfront fundamentally changed how reliable AI-generated code was.

Read story
Wojciech Janoszek · Nov 17, 2025

The state of AI design tools in 2025: How they help my workflow

I’ve spent the last months testing AI design tools like Figma Make, Builder.io and Stitch in real projects. Here’s what actually works, what breaks, and how these tools fit into my design workflow today.

Read story
Marcin Ostrowski · Nov 12, 2025

How I learned to brainstorm effectively with AI: A structured approach using Claude

Brainstorm effectively with AI using a structured approach. Learn how with Claude you can turn unstructured chat into a focused, collaborative process for designing ideas, products, and code

Read story
fryga.io
fryga — a product engineering consultancy in Kraków, Poland. We build with companies in Spain, Norway, the US, and beyond.
Marcin writes about Rails and AI at rubyonai.com
The Rails AI harness, in the open at github.com/fryga-io/superpowers-rails
We're four people — maybe five: careers
[email protected]
RubyPL sp. z o. o.; ul. Będzińska 5 /8, 31-403 Kraków, Poland; KRS: 0001044822; NIP: 6762646011; REGON: 52575800600000