Martian Chronicles
- Devs in mind 2025: how to design interfaces for developer tools
Devs in mind 2025: how to design interfaces for developer tools
Editors’ choice![Cover for Devs in mind 2025: how to design interfaces for developer tools]()
- Railing against time: tools and techniques that got us 5X faster tests
Railing against time: tools and techniques that got us 5X faster tests
Editors’ choice![Cover for Railing against time: tools and techniques that got us 5X faster tests]()
- Super speed, super quality: lessons from the Aptos Network site launch
Super speed, super quality: lessons from the Aptos Network site launch
![Cover for Super speed, super quality: lessons from the Aptos Network site launch]()
- So, your developers use AI now—here's what to know
So, your developers use AI now—here's what to know
![Cover for So, your developers use AI now—here's what to know]()
- How to make complex Chrome extensions: a zero gravity guide
How to make complex Chrome extensions: a zero gravity guide
Editors’ choice![Cover for How to make complex Chrome extensions: a zero gravity guide]()
- Building dev tools with AI: the product decisions that need to be yours
Building dev tools with AI: the product decisions that need to be yours
![Cover for Building dev tools with AI: the product decisions that need to be yours]()
- Optimistic UI in Rails with optimism... and Inertia
Optimistic UI in Rails with optimism... and Inertia
![Cover for Optimistic UI in Rails with optimism... and Inertia]()
- Don't just slap on a chatbot: building AI that works before you ask
Don't just slap on a chatbot: building AI that works before you ask
Editors’ choice![Cover for Don't just slap on a chatbot: building AI that works before you ask]()
- How to Favicon in 2026: Three files that fit most needs
How to Favicon in 2026: Three files that fit most needs
![Cover for How to Favicon in 2026: Three files that fit most needs]()
- How to detect Safari and iOS versions with ease in 2026
How to detect Safari and iOS versions with ease in 2026
![Cover for How to detect Safari and iOS versions with ease in 2026]()
- PostCSS creator shares how to make your open source popular
PostCSS creator shares how to make your open source popular
Editors’ choice![Cover for PostCSS creator shares how to make your open source popular]()
- What devtools founders making $100M+ ARR told me in San Francisco
What devtools founders making $100M+ ARR told me in San Francisco
![Cover for What devtools founders making $100M+ ARR told me in San Francisco]()
- 6 things developer tools must have in 2026 to earn trust and adoption
6 things developer tools must have in 2026 to earn trust and adoption
![Cover for 6 things developer tools must have in 2026 to earn trust and adoption]()
- Hey, AnyCable speaking! Needing help with a Twilio-OpenAI connection?
Hey, AnyCable speaking! Needing help with a Twilio-OpenAI connection?
Editors’ choice![Cover for Hey, AnyCable speaking! Needing help with a Twilio-OpenAI connection?]()
- Inertia.js in Rails: a new era of effortless integration
Inertia.js in Rails: a new era of effortless integration
![Cover for Inertia.js in Rails: a new era of effortless integration]()
- AnyCable, Rails, and the pitfalls of LLM-streaming
AnyCable, Rails, and the pitfalls of LLM-streaming
![Cover for AnyCable, Rails, and the pitfalls of LLM-streaming]()
- 5 best practices for preventing chaos in Tailwind CSS
5 best practices for preventing chaos in Tailwind CSS
Editors’ choice![Cover for 5 best practices for preventing chaos in Tailwind CSS]()
- Why Evil Martians hosted a Ruby conference in San Francisco
Why Evil Martians hosted a Ruby conference in San Francisco
![Cover for Why Evil Martians hosted a Ruby conference in San Francisco]()
- Ruby on Whales: Dockerizing Ruby and Rails development
Ruby on Whales: Dockerizing Ruby and Rails development
Editors’ choice![Cover for Ruby on Whales: Dockerizing Ruby and Rails development]()
- Unparser: real life lessons migrating Ruby tools from Parser to Prism
Unparser: real life lessons migrating Ruby tools from Parser to Prism
![Cover for Unparser: real life lessons migrating Ruby tools from Parser to Prism]()
- Gemfile of dreams: the libraries we use to build Rails apps
Gemfile of dreams: the libraries we use to build Rails apps
Editors’ choice![Cover for Gemfile of dreams: the libraries we use to build Rails apps]()
- Vibecoding tools can learn from design UX and win over everyone
Vibecoding tools can learn from design UX and win over everyone
![Cover for Vibecoding tools can learn from design UX and win over everyone]()
- Payment form best coding practices that don't drop sales
Payment form best coding practices that don't drop sales
![Cover for Payment form best coding practices that don't drop sales]()
- Why startups choose React (and when you shouldn't)
Why startups choose React (and when you shouldn't)
![Cover for Why startups choose React (and when you shouldn't)]()
- Migrating Whop from PostgreSQL to PlanetScale MySQL with 0 downtime
Migrating Whop from PostgreSQL to PlanetScale MySQL with 0 downtime
![Cover for Migrating Whop from PostgreSQL to PlanetScale MySQL with 0 downtime]()
- A taste of Go code generator magic: a quick guide to getting started
A taste of Go code generator magic: a quick guide to getting started
![Cover for A taste of Go code generator magic: a quick guide to getting started]()
- We studied 100 dev tool landing pages—here’s what really works in 2025
We studied 100 dev tool landing pages—here’s what really works in 2025
![Cover for We studied 100 dev tool landing pages—here’s what really works in 2025]()
- API contracts and everything I wish I knew: a frontend survival guide
API contracts and everything I wish I knew: a frontend survival guide
![Cover for API contracts and everything I wish I knew: a frontend survival guide]()
- Debug AI fast with this open source library to visualize agent traces
Debug AI fast with this open source library to visualize agent traces
![Cover for Debug AI fast with this open source library to visualize agent traces]()
- The Whop chop: how we cut a Rails test suite and CI time in half
The Whop chop: how we cut a Rails test suite and CI time in half
![Cover for The Whop chop: how we cut a Rails test suite and CI time in half]()
- How to quickly (and weightlessly) convert Chrome extensions to Safari
How to quickly (and weightlessly) convert Chrome extensions to Safari
![Cover for How to quickly (and weightlessly) convert Chrome extensions to Safari]()
- Better dynamic themes in Tailwind with OKLCH color magic
Better dynamic themes in Tailwind with OKLCH color magic
![Cover for Better dynamic themes in Tailwind with OKLCH color magic]()
- How to make web videos way smaller in 2025 using the AV1 codec
How to make web videos way smaller in 2025 using the AV1 codec
![Cover for How to make web videos way smaller in 2025 using the AV1 codec]()
- imgproxy: Resize your images instantly and securely
imgproxy: Resize your images instantly and securely
![Cover for imgproxy: Resize your images instantly and securely]()
- Phone inputs and you: the designer's essential UI guide
Phone inputs and you: the designer's essential UI guide
![Cover for Phone inputs and you: the designer's essential UI guide]()
- Exploring Active Agent, or can we build AI features the Rails way?
Exploring Active Agent, or can we build AI features the Rails way?
![Cover for Exploring Active Agent, or can we build AI features the Rails way?]()
- Circuit breakers and Ruby in 2025: don't break your launch
Circuit breakers and Ruby in 2025: don't break your launch
![Cover for Circuit breakers and Ruby in 2025: don't break your launch]()
- Soft deletion with PostgreSQL: but with logic on the database!
Soft deletion with PostgreSQL: but with logic on the database!
![Cover for Soft deletion with PostgreSQL: but with logic on the database!]()
- 5 cool (and surprising) ways to configure Lefthook for automation joy
5 cool (and surprising) ways to configure Lefthook for automation joy
![Cover for 5 cool (and surprising) ways to configure Lefthook for automation joy]()
- Flaky tests, be gone: long-lasting relief for chronic CI retry irritation!
Flaky tests, be gone: long-lasting relief for chronic CI retry irritation!
![Cover for Flaky tests, be gone: long-lasting relief for chronic CI retry irritation!]()
- OK, OKLCH: a color picker made to help think perceptively
OK, OKLCH: a color picker made to help think perceptively
![Cover for OK, OKLCH: a color picker made to help think perceptively]()
- Hire better, 10X faster: how we screen 50 engineers weekly with no HR
Hire better, 10X faster: how we screen 50 engineers weekly with no HR
![Cover for Hire better, 10X faster: how we screen 50 engineers weekly with no HR]()
- Simplicity, vanished?! Solving the mystery with Inertia.js + Rails
Simplicity, vanished?! Solving the mystery with Inertia.js + Rails
![Cover for Simplicity, vanished?! Solving the mystery with Inertia.js + Rails]()
- The art of Turbo Mount: Hotwire meets modern JS frameworks
The art of Turbo Mount: Hotwire meets modern JS frameworks
![Cover for The art of Turbo Mount: Hotwire meets modern JS frameworks]()
- ViewComponent in the Wild II: supercharging your components
ViewComponent in the Wild II: supercharging your components
![Cover for ViewComponent in the Wild II: supercharging your components]()
- How to make next-level Figma plugins: auth, routing, storage, and more
How to make next-level Figma plugins: auth, routing, storage, and more
![Cover for How to make next-level Figma plugins: auth, routing, storage, and more]()
- Making desktop apps with revved-up potential: Rust + Tauri + sidecar
Making desktop apps with revved-up potential: Rust + Tauri + sidecar
![Cover for Making desktop apps with revved-up potential: Rust + Tauri + sidecar]()
- Let there be docs! Generating an OpenAPI schema across the Rails stack
Let there be docs! Generating an OpenAPI schema across the Rails stack
![Cover for Let there be docs! Generating an OpenAPI schema across the Rails stack]()
- Woah, opacity! A full guide to this badass hero of efficient UI design
Woah, opacity! A full guide to this badass hero of efficient UI design
![Cover for Woah, opacity! A full guide to this badass hero of efficient UI design]()
- How to add fast, client-side search to Astro static sites
How to add fast, client-side search to Astro static sites
![Cover for How to add fast, client-side search to Astro static sites]()
- CLI UX best practices: 3 patterns for improving progress displays
CLI UX best practices: 3 patterns for improving progress displays
![Cover for CLI UX best practices: 3 patterns for improving progress displays]()
- Try Astrograph: Your GraphQL lens for Stellar blockchain
Try Astrograph: Your GraphQL lens for Stellar blockchain
![Cover for Try Astrograph: Your GraphQL lens for Stellar blockchain]()
- System of a test: Proper browser testing in Ruby on Rails
System of a test: Proper browser testing in Ruby on Rails
![Cover for System of a test: Proper browser testing in Ruby on Rails]()
- RuboCoping with legacy: Bring your Ruby code up to Standard
RuboCoping with legacy: Bring your Ruby code up to Standard
![Cover for RuboCoping with legacy: Bring your Ruby code up to Standard]()
- Object Detection with Create ML: images and dataset
Object Detection with Create ML: images and dataset
![Cover for Object Detection with Create ML: images and dataset]()
- Let there be docs! A documentation-first approach to Rails API development
Let there be docs! A documentation-first approach to Rails API development
![Cover for Let there be docs! A documentation-first approach to Rails API development]()
- ViewComponent in the Wild I: building modern Rails frontends
ViewComponent in the Wild I: building modern Rails frontends
![Cover for ViewComponent in the Wild I: building modern Rails frontends]()
- Contract shock therapy: the way to API-first documentation bliss
Contract shock therapy: the way to API-first documentation bliss
![Cover for Contract shock therapy: the way to API-first documentation bliss]()
- TestProf III: guided and automated Ruby test profiling
TestProf III: guided and automated Ruby test profiling
![Cover for TestProf III: guided and automated Ruby test profiling]()
- The Hotwire-Rails summit, or interactive multi-step forms at peak UX
The Hotwire-Rails summit, or interactive multi-step forms at peak UX
![Cover for The Hotwire-Rails summit, or interactive multi-step forms at peak UX]()
- Kamal: hot deployment tool to watch—or a total game changer?
Kamal: hot deployment tool to watch—or a total game changer?
![Cover for Kamal: hot deployment tool to watch—or a total game changer?]()
- How a year-long LeetCode habit upped my professional game
How a year-long LeetCode habit upped my professional game
![Cover for How a year-long LeetCode habit upped my professional game]()
- Wrapping JSON-based ActiveRecord attributes with classes
Wrapping JSON-based ActiveRecord attributes with classes
- Ruby on Rails on WebAssembly: a guide to full-stack in‑browser action
Ruby on Rails on WebAssembly: a guide to full-stack in‑browser action
![Cover for Ruby on Rails on WebAssembly: a guide to full-stack in‑browser action]()
- The 16 most active developer tool investors and VCs going into 2025
The 16 most active developer tool investors and VCs going into 2025
![Cover for The 16 most active developer tool investors and VCs going into 2025]()
- ViewComponent in the Wild III: TailwindCSS classes & HTML attributes
ViewComponent in the Wild III: TailwindCSS classes & HTML attributes
![Cover for ViewComponent in the Wild III: TailwindCSS classes & HTML attributes]()
- Object Detection with Create ML: training and demo app
Object Detection with Create ML: training and demo app
![Cover for Object Detection with Create ML: training and demo app]()
- Icon transcendence: customizing icons to complement fonts
Icon transcendence: customizing icons to complement fonts
![Cover for Icon transcendence: customizing icons to complement fonts]()
- Variable fonts in real life: how to use and love them
Variable fonts in real life: how to use and love them
![Cover for Variable fonts in real life: how to use and love them]()
- bolt.new from StackBlitz: how they surfed the AI wave—with no wipeouts
bolt.new from StackBlitz: how they surfed the AI wave—with no wipeouts
![Cover for bolt.new from StackBlitz: how they surfed the AI wave—with no wipeouts]()
- Designing Tegon: a signature vision for the AI-driven issue tracker
Designing Tegon: a signature vision for the AI-driven issue tracker
- Faster WebGL/Three.js 3D graphics with OffscreenCanvas and Web Workers
Faster WebGL/Three.js 3D graphics with OffscreenCanvas and Web Workers
- The scenic route: lessons building an IntelliJ IDEA plugin for Luau
The scenic route: lessons building an IntelliJ IDEA plugin for Luau
![Cover for The scenic route: lessons building an IntelliJ IDEA plugin for Luau]()
- It deserved its own tome: Layered Design and the Extended Rails Way
It deserved its own tome: Layered Design and the Extended Rails Way
![Cover for It deserved its own tome: Layered Design and the Extended Rails Way]()
- How to GraphQL with Ruby, Rails, Active Record, and no N+1
How to GraphQL with Ruby, Rails, Active Record, and no N+1
- The Long Game: why Rails survived the hype cycle and what it means for your startup
The Long Game: why Rails survived the hype cycle and what it means for your startup
![Cover for The Long Game: why Rails survived the hype cycle and what it means for your startup]()
- Redprints CFP: an open source CFP management app built with Rails + Inertia.js
Redprints CFP: an open source CFP management app built with Rails + Inertia.js
![Cover for Redprints CFP: an open source CFP management app built with Rails + Inertia.js]()
- First steps with ruby.wasm: or how we built Ruby Next Playground
First steps with ruby.wasm: or how we built Ruby Next Playground
![Cover for First steps with ruby.wasm: or how we built Ruby Next Playground]()
- Keep it together: 5 essential design patterns for dev tool UIs
Keep it together: 5 essential design patterns for dev tool UIs
![Cover for Keep it together: 5 essential design patterns for dev tool UIs]()






























































































