Designing Tegon: a signature vision for the AI-driven issue tracker
Martian Chronicles
- Creating a winning sales flow with authentic writing from engineers
Creating a winning sales flow with authentic writing from engineers
- A letter to founders: join the local-first movement!
A letter to founders: join the local-first movement!
- How to quickly (and weightlessly) convert Chrome extensions to Safari
How to quickly (and weightlessly) convert Chrome extensions to Safari
- Dev tools AI‑fication 101: lessons from Martian robots
Dev tools AI‑fication 101: lessons from Martian robots
- Railing against time: tools and techniques that got us 5X faster tests
Railing against time: tools and techniques that got us 5X faster tests
- TestProf III: guided and automated Ruby test profiling
TestProf III: guided and automated Ruby test profiling
- The SDK Imperative: why developer tools live or die by their SDKs
The SDK Imperative: why developer tools live or die by their SDKs
- Want to make a great developer tool UI? Follow this fundamental rule!
Want to make a great developer tool UI? Follow this fundamental rule!
- Engineering connections: a conference talk primer for humans
Engineering connections: a conference talk primer for humans
- Flying free: a tale of partitioning with canaries in PostgreSQL
Flying free: a tale of partitioning with canaries in PostgreSQL
- How to make complex Chrome extensions: a zero gravity guide
How to make complex Chrome extensions: a zero gravity guide
- Startups on Rails in 2024: my keynote at RailsConf
Startups on Rails in 2024: my keynote at RailsConf
- Connection avalanche safety tips and prepping for real-time applications
Connection avalanche safety tips and prepping for real-time applications
- Recapping the first Local‑First conference in 15 minutes
Recapping the first Local‑First conference in 15 minutes
- Realtime diagnostic logging, or how to really spy on your Go web apps
Realtime diagnostic logging, or how to really spy on your Go web apps
- Beyond monospace: the search for the perfect coding font
Beyond monospace: the search for the perfect coding font
- Inertia.js in Rails: a new era of effortless integration
Inertia.js in Rails: a new era of effortless integration
- The art of Turbo Mount: Hotwire meets modern JS frameworks
The art of Turbo Mount: Hotwire meets modern JS frameworks
- The lion's den: NestJS and authentication with AWS Cognito
The lion's den: NestJS and authentication with AWS Cognito
- Gemfile of dreams: the libraries we use to build Rails apps
Gemfile of dreams: the libraries we use to build Rails apps
- How does your chatbot UX size up? The 5 laws of ChatRobotics
How does your chatbot UX size up? The 5 laws of ChatRobotics
- Keep it together: 5 essential design patterns for dev tool UIs
Keep it together: 5 essential design patterns for dev tool UIs
- Let's have more tech meetups! A quick-start guide to holding your own
Let's have more tech meetups! A quick-start guide to holding your own
- Next-level docs with Next.js: Teleport’s new customer acquisition channel
Next-level docs with Next.js: Teleport’s new customer acquisition channel
- How to manifest streamlined authentication: AWS Cognito in a React app
How to manifest streamlined authentication: AWS Cognito in a React app
- CLI UX best practices: 3 patterns for improving progress displays
CLI UX best practices: 3 patterns for improving progress displays
- Let there be docs! A documentation-first approach to Rails API development
Let there be docs! A documentation-first approach to Rails API development
- MVPs, prototypes, results: how to win with a Martian Design Sprint
MVPs, prototypes, results: how to win with a Martian Design Sprint
- Kamal: hot deployment tool to watch—or a total game changer?
Kamal: hot deployment tool to watch—or a total game changer?
- Beyond bars and lines: 7 cool ways to visualize data in your dev tool
Beyond bars and lines: 7 cool ways to visualize data in your dev tool
- Why should developers write? 3 reasons and 3 common blocks
Why should developers write? 3 reasons and 3 common blocks
- Martian Kubernetes Kit: unboxing our toolkit's technical secrets
Martian Kubernetes Kit: unboxing our toolkit's technical secrets
- How to make complex serverless file processing a piece of cake
How to make complex serverless file processing a piece of cake
- The complete guide to multi-tenant SaaS, part 1: collaboration
The complete guide to multi-tenant SaaS, part 1: collaboration
- “Fair” multi-tenant prioritization of Sidekiq jobs—and our gem for it!
“Fair” multi-tenant prioritization of Sidekiq jobs—and our gem for it!
- First steps with ruby.wasm: or how we built Ruby Next Playground
First steps with ruby.wasm: or how we built Ruby Next Playground
- Hiring a product designer: 1 hard skill and 3 soft skills to look for
Hiring a product designer: 1 hard skill and 3 soft skills to look for
- How to Favicon in 2024: Six files that fit most needs
How to Favicon in 2024: Six files that fit most needs
- Value pricing for Dev Tools: a strategy beneficial for both sides
Value pricing for Dev Tools: a strategy beneficial for both sides
- ViewComponent in the Wild III: TailwindCSS classes & HTML attributes
ViewComponent in the Wild III: TailwindCSS classes & HTML attributes
- 5 cool (and surprising) ways to configure Lefthook for automation joy
5 cool (and surprising) ways to configure Lefthook for automation joy
- How to cultivate capital: 6 tips from developer tools founders and VCs
How to cultivate capital: 6 tips from developer tools founders and VCs
- UX research for dev tools must not be neglected: our quick-start guide
UX research for dev tools must not be neglected: our quick-start guide
- Martian Kubernetes Kit: a smooth-sailing toolkit from our SRE team
Martian Kubernetes Kit: a smooth-sailing toolkit from our SRE team
- Figma plugin magic tricks: mixing colors with SVG and Canvas API
Figma plugin magic tricks: mixing colors with SVG and Canvas API
- Pen, paper, IDE: a DevTool Founder’s early-stage product design guide
Pen, paper, IDE: a DevTool Founder’s early-stage product design guide
- Care beyond code: 7 best design practices for frontend developers
Care beyond code: 7 best design practices for frontend developers
- Extremely open and incredibly close: should you go open source?
Extremely open and incredibly close: should you go open source?
- Freezolite: the magic gem for keeping Ruby literals safely frozen
Freezolite: the magic gem for keeping Ruby literals safely frozen
- Figma plugin API: diving into advanced algorithms & data structures
Figma plugin API: diving into advanced algorithms & data structures
- Midjourney vs. human illustrators II: more Martians join the battle!
Midjourney vs. human illustrators II: more Martians join the battle!
- Better dynamic themes in Tailwind with OKLCH color magic
Better dynamic themes in Tailwind with OKLCH color magic
- The future of full-stack Rails II: Turbo View Transitions
The future of full-stack Rails II: Turbo View Transitions
- 5 best practices for preventing chaos in Tailwind CSS
5 best practices for preventing chaos in Tailwind CSS
- It’s dangerous to go alone: take our guide to the “IDEAL” HTTP client!
It’s dangerous to go alone: take our guide to the “IDEAL” HTTP client!
- It deserved its own tome: Layered Design and the Extended Rails Way
It deserved its own tome: Layered Design and the Extended Rails Way
- Successful balance: gracefully and tactfully raising a dev tool price
Successful balance: gracefully and tactfully raising a dev tool price
- How to make next-level Figma plugins: auth, routing, storage, and more
How to make next-level Figma plugins: auth, routing, storage, and more
- Super GitHub Pages: budget frontend staging, with Storybook and more
Super GitHub Pages: budget frontend staging, with Storybook and more
- imgproxy goes solo: unveiling a bold future for this new company
imgproxy goes solo: unveiling a bold future for this new company
- Enter AnyCable v1.4: reliable real-time features for apps of any size
Enter AnyCable v1.4: reliable real-time features for apps of any size
- How a year-long LeetCode habit upped my professional game
How a year-long LeetCode habit upped my professional game
- “AI” marks the spot: a quick AI treasure map for businesses
“AI” marks the spot: a quick AI treasure map for businesses
- Before your next frontend pull request, use this checklist
Before your next frontend pull request, use this checklist
- How to turn an open source project into a profitable business
How to turn an open source project into a profitable business
- From Ruby to Crystal? Writing and distributing a CLI tool
From Ruby to Crystal? Writing and distributing a CLI tool
- Icon transcendence: customizing icons to complement fonts
Icon transcendence: customizing icons to complement fonts
- Don’t wait, let’s use the browser Contact Picker API now
Don’t wait, let’s use the browser Contact Picker API now
- RuboCoping with legacy: Bring your Ruby code up to Standard
RuboCoping with legacy: Bring your Ruby code up to Standard
- AnyCable off Rails: connecting Twilio streams with Hanami
AnyCable off Rails: connecting Twilio streams with Hanami
- Cool frontend arts of local-first: storage, sync, conflicts
Cool frontend arts of local-first: storage, sync, conflicts
- “Design first, then build”: let’s bury this myth forevermore
“Design first, then build”: let’s bury this myth forevermore
- Real-time magic, no elixirs: optimizing Sera with AnyCable
Real-time magic, no elixirs: optimizing Sera with AnyCable
- How to avoid tricky async state manager pitfalls in React
How to avoid tricky async state manager pitfalls in React
- OK, OKLCH: a color picker made to help think perceptively
OK, OKLCH: a color picker made to help think perceptively
- UI design for HTTPie: macOS vibes for the API testing client
UI design for HTTPie: macOS vibes for the API testing client
- How to build a better React map with Pigeon Maps and Mapbox
How to build a better React map with Pigeon Maps and Mapbox
- Decentralized app design: first aid for common dApp UI pains
Decentralized app design: first aid for common dApp UI pains
- Midjourney vs. human illustrators: has AI already won?
Midjourney vs. human illustrators: has AI already won?
- Blend to my will! Fonts on cylinder objects in Blender
Blend to my will! Fonts on cylinder objects in Blender
- Realtime text analysis with Word Tagger: recipe reader, part 2
Realtime text analysis with Word Tagger: recipe reader, part 2
- One does not simply design: designers as product owners
One does not simply design: designers as product owners
- Web Summit 2022: what you missed and how to be ready for next year
Web Summit 2022: what you missed and how to be ready for next year
- ViewComponent in the Wild II: supercharging your components
ViewComponent in the Wild II: supercharging your components
- ViewComponent in the Wild I: building modern Rails frontends
ViewComponent in the Wild I: building modern Rails frontends
- RubyKaigi 2022: a report from an Evil Martian in Japan
RubyKaigi 2022: a report from an Evil Martian in Japan
- WebSocket Director: scenario-based integration tests for realtime apps
WebSocket Director: scenario-based integration tests for realtime apps
- Martians unveiled: infusing a new site with extraterrestrial tech and soul
Martians unveiled: infusing a new site with extraterrestrial tech and soul
- The sword is yours: transferring projects to another team unscathed
The sword is yours: transferring projects to another team unscathed
- Lefthook: refactoring the Git Hooks automation tool back into shape
Lefthook: refactoring the Git Hooks automation tool back into shape
- Taking off the Heroku training wheels: the Rails preflight checklist
Taking off the Heroku training wheels: the Rails preflight checklist
- Phone inputs and you: the designer's essential UI guide
Phone inputs and you: the designer's essential UI guide
- Smartly contracted: UI design and frontend for Certora
Smartly contracted: UI design and frontend for Certora
- Down the caching‑hole: adventures in 'HTTP caching and Faraday' land
Down the caching‑hole: adventures in 'HTTP caching and Faraday' land
- The joy of Variable Fonts: getting started on the Frontend
The joy of Variable Fonts: getting started on the Frontend
- Vite-lizing Rails: get live reload and hot replacement with Vite Ruby
Vite-lizing Rails: get live reload and hot replacement with Vite Ruby
- Collaborative real-time security: Logux for Akeero
Collaborative real-time security: Logux for Akeero
- How to make absolutely any app look like a macOS app
How to make absolutely any app look like a macOS app
- Soft deletion with PostgreSQL: but with logic on the database!
Soft deletion with PostgreSQL: but with logic on the database!
- eBaymag magic: under the hood of the international eBay spinoff
eBaymag magic: under the hood of the international eBay spinoff
- Realtime text analysis with Word Tagger: pro computer vision, part 1
Realtime text analysis with Word Tagger: pro computer vision, part 1
- Devs in mind: how to design interfaces for developer tools
Devs in mind: how to design interfaces for developer tools
- A slice of life: table partitioning in PostgreSQL databases
A slice of life: table partitioning in PostgreSQL databases
- Variable fonts in real life: how to use and love them
Variable fonts in real life: how to use and love them
- Ruby on Whales: Dockerizing Ruby and Rails development
Ruby on Whales: Dockerizing Ruby and Rails development
- Object Detection with Create ML: training and demo app
Object Detection with Create ML: training and demo app
- Object Detection with Create ML: images and dataset
Object Detection with Create ML: images and dataset
- Our slice of the metaverse: 7 key AR features for iOS devs
Our slice of the metaverse: 7 key AR features for iOS devs