Evil Martians
We’ve got articles for junior and experienced developers, case studies for startup founders and managers, and thorough technical deep dives into unexpected terrain. No matter where you’re coming from, you’re certain to gain some insight here, whether it’s more practical, or something that really tak
Ruby / RailsFrontend / CSS / browsersAI / MLPerformance / optimizationWeb developmentEngineering blogs
- Posts
- 382 from 22 Mar 2015 to 28 Oct 2026
- Posting
- weekly (69 in the last year)
- Kind
- company blog
- Feed
- https://evilmartians.com/chronicles.atom
2026 61
- How to make postMessage type-safe in under 350 bytes
- The Agents on Rails Files: designing black-box evals for coding agents
- Don’t get burned, make your Stripe MRR boring and correct
- Don't bet on SELECT's order: shuffle your rows and see what folds
- SF Ruby Conference: regular ticket prices end September 30
- AI makes design system guardrails mandatory; this framework delivers them
- Rails Hyperdrive: supercharged agentic development for Rails
- Give up a little speed, get your team back
- The Golden Switch, or migrating from Gatsby to Astro in under 9¾ days
- Why Gusto hired Evil Martians for Sidekiq infrastructure
- 10 anti-AI slop moves for frontend projects going faster than humans can review
- Why engineers should come to the SF Ruby Conference in 2026
- Access control for AI agents on Rails: gating SQL with Action Policy
- Get in, human: cut Rails boot time with require-profiler and this guide
- Ship agent skills like packages: discovery index, digests, and install sources
- Fair by design: orchestrating background jobs in Ruby
- 5 best practices for preventing chaos in Tailwind CSS
- +14% activated users for AppSignal: designing a new homepage in code
- The secure way to release an npm package in 2026
- Which AI actually reads your site? Two months of LLM traffic, measured
- The joy of Inertia Rails: painting your own with 50 happy little lines
- Storybook Workbench: audit vibe-coded UIs and find hidden bugs in hours
- July 1, 2026
- June 30, 2026
- June 24, 2026
- June 17, 2026
- SKILLS available
- May 26, 2026
- May 19, 2026
- May 18, 2026
- May 6, 2026
- May 5, 2026
- April 21, 2026
- SKILL available
- April 14, 2026
- SKILL available
- April 8, 2026
- April 6, 2026
- April 1, 2026
- March 30, 2026
- March 24, 2026
- March 23, 2026
- March 17, 2026
- SKILLS available
- March 10, 2026
- March 3, 2026
- February 26, 2026
- February 25, 2026
- February 23, 2026
- February 18, 2026
- SKILL available
- February 11, 2026
- February 10, 2026
- February 4, 2026
- February 3, 2026
- January 29, 2026
- SKILLS available
- January 21, 2026
- January 15, 2026
- January 7, 2026
- January 6, 2026
2025 55
- SKILLS available
- December 18, 2025
- December 11, 2025
- December 10, 2025
- December 4, 2025
- November 25, 2025
- November 19, 2025
- November 10, 2025
- October 29, 2025
- October 28, 2025
- October 22, 2025
- October 15, 2025
- October 8, 2025
- October 7, 2025
- October 1, 2025
- September 23, 2025
- September 17, 2025
- September 15, 2025
- September 10, 2025
- September 3, 2025
- August 26, 2025
- August 18, 2025
- August 13, 2025
- August 6, 2025
- What we learned from creating PostCSS
- July 29, 2025
- SKILLS available
- July 23, 2025
- July 8, 2025
- July 2, 2025
- June 24, 2025
- June 23, 2025
- June 17, 2025
- June 9, 2025
- June 4, 2025
- May 28, 2025
- May 20, 2025
- May 15, 2025
- April 30, 2025
- April 29, 2025
- April 23, 2025
- April 22, 2025
- April 8, 2025
- April 1, 2025
- March 26, 2025
- March 18, 2025
- March 5, 2025
- SKILL available
- February 25, 2025
- February 19, 2025
- February 18, 2025
- January 28, 2025
- January 22, 2025
- Devs in mind 2025: how to design interfaces for developer tools
- January 7, 2025
2024 54
- December 31, 2024
- Don't just slap on a chatbot: building AI that works before you ask
- December 17, 2024
- SKILLS available
- December 2, 2024
- November 19, 2024
- Hey, AnyCable speaking! Needing help with a Twilio-OpenAI connection?
- November 5, 2024
- October 29, 2024
- October 23, 2024
- October 15, 2024
- September 25, 2024
- September 18, 2024
- September 10, 2024
- August 28, 2024
- August 20, 2024
- Railing against time: tools and techniques that got us 5X faster tests
- August 13, 2024
- August 12, 2024
- August 11, 2024
- August 10, 2024
- August 5, 2024
- July 30, 2024
- July 29, 2024
- July 23, 2024
- How to make complex Chrome extensions: a zero gravity guide
- July 15, 2024
- July 9, 2024
- July 8, 2024
- July 2, 2024
- June 25, 2024
- June 11, 2024
- June 10, 2024
- May 22, 2024
- May 7, 2024
- April 30, 2024
- April 24, 2024
- April 22, 2024
- April 15, 2024
- April 9, 2024
- April 8, 2024
- April 2, 2024
- March 26, 2024
- March 20, 2024
- March 12, 2024
- March 6, 2024
- February 28, 2024
- February 14, 2024
- February 6, 2024
- January 30, 2024
- January 24, 2024
- January 23, 2024
- January 18, 2024
- January 10, 2024
2023 38
- December 27, 2023
- December 20, 2023
- December 12, 2023
- December 4, 2023
- November 28, 2023
- November 20, 2023
- November 14, 2023
- November 13, 2023
- November 8, 2023
- November 6, 2023
- October 31, 2023
- October 23, 2023
- October 16, 2023
- September 12, 2023
- SKILL available
- August 23, 2023
- August 22, 2023
- August 4, 2023
- July 20, 2023
- July 14, 2023
- July 5, 2023
- June 28, 2023
- June 7, 2023
- May 31, 2023
- May 16, 2023
- May 3, 2023
- April 19, 2023
- April 13, 2023
- April 4, 2023
- March 28, 2023
- March 21, 2023
- March 15, 2023
- March 10, 2023
- March 1, 2023
- February 21, 2023
- February 7, 2023
- January 30, 2023
- January 24, 2023
2022 35
- December 19, 2022
- December 13, 2022
- December 5, 2022
- November 22, 2022
- November 17, 2022
- November 14, 2022
- October 18, 2022
- October 12, 2022
- October 3, 2022
- September 20, 2022
- September 15, 2022
- September 8, 2022
- September 5, 2022
- August 19, 2022
- August 18, 2022
- August 9, 2022
- August 3, 2022
- July 27, 2022
- July 21, 2022
- July 15, 2022
- July 6, 2022
- June 28, 2022
- June 23, 2022
- June 16, 2022
- June 9, 2022
- June 2, 2022
- May 25, 2022
- May 16, 2022
- May 12, 2022
- April 27, 2022
- April 12, 2022
- March 24, 2022
- February 17, 2022
- February 9, 2022
- January 5, 2022
2021 26
- December 21, 2021
- December 9, 2021
- November 30, 2021
- November 24, 2021
- November 16, 2021
- November 9, 2021
- October 27, 2021
- October 5, 2021
- September 13, 2021
- September 7, 2021
- August 23, 2021
- August 18, 2021
- August 13, 2021
- July 28, 2021
- July 26, 2021
- July 5, 2021
- June 22, 2021
- June 16, 2021
- June 3, 2021
- May 24, 2021
- April 12, 2021
- April 6, 2021
- March 11, 2021
- February 17, 2021
- January 27, 2021
- January 25, 2021
2020 25
- December 10, 2020
- November 17, 2020
- November 9, 2020
- November 4, 2020
- October 27, 2020
- October 20, 2020
- October 7, 2020
- September 14, 2020
- August 31, 2020
- August 27, 2020
- August 25, 2020
- July 14, 2020
- July 13, 2020
- July 1, 2020
- June 29, 2020
- June 15, 2020
- June 11, 2020
- June 3, 2020
- May 26, 2020
- May 11, 2020
- May 4, 2020
- April 14, 2020
- April 6, 2020
- March 2, 2020
- January 21, 2020
2019 35
- December 18, 2019
- November 19, 2019
- November 5, 2019
- October 7, 2019
- September 4, 2019
- August 28, 2019
- August 10, 2019
- August 5, 2019
- July 30, 2019
- July 19, 2019
- July 16, 2019
- July 10, 2019
- July 9, 2019
- July 2, 2019
- June 24, 2019
- June 19, 2019
- June 10, 2019
- June 4, 2019
- May 27, 2019
- May 21, 2019
- May 14, 2019
- April 29, 2019
- April 23, 2019
- April 22, 2019
- April 9, 2019
- April 2, 2019
- April 2, 2019
- March 19, 2019
- February 26, 2019
- February 12, 2019
- February 12, 2019
- January 29, 2019
- January 29, 2019
- January 15, 2019
- January 7, 2019