# Evil Martians > Evil Martians is a developer tools consultancy that helps startups build AI agents, AI-native products, scale infrastructure, and reach product-market fit. Founded in 2006, we work with 40+ developer tools startups each year, many backed by Y Combinator. Our verticals are AI agents and AI-native development, developer tools, infrastructure, and cybersecurity. Our core stack spans Ruby on Rails, TypeScript, Python, Go, Rust, React, and Next.js. We are the leading Ruby on Rails consultancy and build AI Harnesses that make agentic coding more productive for Rails and TypeScript teams. Detailed content: https://evilmartians.com/llms-full.txt For any page on this site, append .md to the URL to get a plain markdown version optimized for LLMs. Example: https://evilmartians.com/services/frontend-development → https://evilmartians.com/services/frontend-development.md ## Pages - [Home](https://evilmartians.com/index.md): Evil Martians homepage - [Services](https://evilmartians.com/services.md): Our consulting and development services - [Clients](https://evilmartians.com/clients.md): Companies we work with - [Open Source](https://evilmartians.com/opensource.md): Our open source projects - [Products](https://evilmartians.com/products.md): Our commercial products - [Blog](https://evilmartians.com/chronicles.md): The Martian Chronicles - [Events](https://evilmartians.com/events.md): Talks and conferences - [Careers](https://evilmartians.com/careers.md): Open positions - [Contact](https://evilmartians.com/contact-us.md): Get in touch ## Guides - [Ruby on Rails Startup Stack](https://evilmartians.com/rails-startup-stack.md): Our opinionated stack for building on Rails in 2026: architecture, essential gems, database, frontend, real-time, testing, deployment, and AI-assisted development. ## Services - [Agent Experience](https://evilmartians.com/services/agent-experience.md): Build Agent Experience for your product: discovery optimization, agent-friendly APIs and CLIs, and security guardrails against abuse. - [Product development](https://evilmartians.com/services/product-development.md): Forward-deployed engineers who ship your product from PoC to PMF: embedded in your repo, your stack, your cadence. - [Design for devtools](https://evilmartians.com/services/design-developer-tool.md): CLI, dashboard, SDK, and AI product interfaces that developers actually love: we design UX for developer tools, not consumer apps. - [Frontend & real-time](https://evilmartians.com/services/real-time.md): Dev tool interfaces, small libraries, design systems, real-time collaboration, LLM streaming, and voice AI: the frontend infrastructure for products developers use daily. - [Ruby on Rails consulting](https://evilmartians.com/services/ruby-on-rails-consulting.md): The leading Ruby on Rails consultancy for startups: 100+ open source projects, 25B+ downloads. Shipping production code at bolt.new, Whop, Lago, and ClickFunnels. - [Platform engineering](https://evilmartians.com/services/sre.md): Deploy anywhere and scale to millions: Kubernetes, Terraform, Go infrastructure, and cloud platforms for developer tools. - [Performance & scale](https://evilmartians.com/services/performance-scalability.md): Handle explosive growth without re-architecting: database scaling, background jobs, and the profiling to know where it hurts. - [Design engineering](https://evilmartians.com/services/design-engineer.md): Ship features in weeks, not months. Our designers eliminate the design-to-dev handoff using AI-powered workflows and direct code implementation. - [Security product design](https://evilmartians.com/services/security-product-design.md): Design and build security products that technical teams trust: threat dashboards, workflow automation, and access control interfaces for cybersecurity startups. - [SDKs, extensions & plugins](https://evilmartians.com/services/plugin-and-extension-creation.md): Build VS Code extensions, Figma plugins, browser extensions, and SDKs that make your developer tool indispensable. - [Devtools startup advisory](https://evilmartians.com/services/advisory.md): Refine your strategy and accelerate product-market fit for your devtools startup through a 6-month advisory program with our CEO. - [Developer marketing](https://evilmartians.com/services/tech-marketing.md): Convert technical audiences with landing pages, documentation, launch strategies, and content that developers actually trust. - [Hiring & training](https://evilmartians.com/services/training.md): Build and upskill engineering teams with hands-on training from engineers who ship production systems at scale. ## Clients - [AI concierge tool for enterprises](https://evilmartians.com/clients/ai-startup-under-nda.md): Evil Martians partnered with a renowned agent support platform to streamline AI-driven development, building a scalable design system and efficient developer workflows. We delivered secure, enterprise-ready infrastructure, from DevContainers to production VoIP integrations. - [Bolt.new](https://evilmartians.com/clients/stackblitz.md): Evil Martians and StackBlitz: tech partners since 2021. Our engineers helped scale their WebContainers platform from pioneering browser IDE to bolt.new—the AI-powered tool that hit $20M+ ARR in just 2 months and disrupted the industry of vibe coding. We've built core infrastructure powering 3M+ monthly developers, from backend Rails to enterprise features and performance optimization. Together, we're transforming how developers build worldwide. - [Tines](https://evilmartians.com/clients/tines.md): Evil Martians helped an advanced security orchestration and automation platform, Tines, with the core product, covering UI design, frontend, and backend. Our team designed a pro-oriented interface easy-to-use even for newcomers. - [Teleport](https://evilmartians.com/clients/teleport.md): Evil Martians has partnered with Teleport since 2020, engineering enterprise-ready features for their open-source infrastructure access platform. Our engineering and design teams work across the platform – from architecting the plugin ecosystem and deployment strategies to transforming their documentation into a powerful growth driver with Next.js. Combining deep Go expertise with product thinking, we continue as their technical partner driving R&D initiatives as well as building core features that support their growth.. - [Daylight Security](https://evilmartians.com/clients/daylight-security.md): Daylight Security is a cybersecurity platform that combines autonomous AI workflows with expert-led SOC/MDR services. As the platform scaled toward enterprise adoption, Evil Martians joined as a design partner to elevate the product experience. - [NATS](https://evilmartians.com/clients/nats.md): NATS by Synadia is an open-source messaging system, a secure connective technology for modern distributed systems at the edge and in the cloud. They reached out to Evil Martians to improve the performance of NATS's Ruby SDK, and we ended up speeding it up by more than three times for high-load cases. - [Lago](https://evilmartians.com/clients/lago.md): Lago is an open-source metering and billing system that partnered with Evil Martians to scale their engineering team, keep product development moving fast, and maintain high quality. - [Wallarm](https://evilmartians.com/clients/wallarm.md): We helped Wallarm, an API security platform, redesign and optimize their Go-based event processing pipeline that handles critical security data through NATS messaging and ClickHouse storage, and guided their team through architectural improvements and urgent feature implementations. - [Buildkite](https://evilmartians.com/clients/buildkite.md): Buildkite is a CI/CD platform used by Airbnb, Canva, Pinterest, and Uber. Evil Martians are building a unified design system and migrating legacy components across all product surfaces. - [BetterUp](https://evilmartians.com/clients/betterup.md): BetterUp, the leading coaching and professional development platform, enhanced their cutting-edge AI capabilities with Evil Martians’ support. We collaborated to create an intuitive interface with sophisticated React frontend and scalable AWS backend that maintained BetterUp’s commitment to enterprise-grade security. All while pushing the boundaries of AI-powered coaching. - [Playbook](https://evilmartians.com/clients/playbook.md): Since 2021, Evil Martians has collaborated with Playbook to build a next-generation cloud platform for creatives that serves 700,000+ users worldwide. Our engineering teams have developed their core platform features – from ML-powered visual search and AI-assisted file management to Figma plugin and third-party integrations. Our relationship deepened when Playbook acquired CanFY, an AI assistant platform we incubated, bringing advanced image recognition and natural language processing capabilities to their creative ecosystem. - [Recraft](https://evilmartians.com/clients/recraft.md): Recraft is shaping the future of AI-driven creativity. Our collaboration introduced a custom Discord bot, streamlining client acquisition and engagement. Plus, our tailored analytics enabled data-driven decisions, allowing for monitoring of the success of this customer acquisition channel. - [Thicket](https://evilmartians.com/clients/thicket.md): Thicket is an educational marketplace where PhD-level experts share knowledge with curious learners. Evil Martians built a greenfield project in two weeks to validate the idea; now we're implementing the complete V1 in production. - [Rootly](https://evilmartians.com/clients/rootly.md): Rootly is a Y Combinator startup developing an incident management platform. The team needed an urgent design makeover for their core marketing assets—and they asked Evil Martians to implement it on the frontend and backend, add new design elements, and systematize the UI components. - [Whop](https://evilmartians.com/clients/whop.md): Evil Martians worked with Whop, a creator marketplace platform, on resolving critical performance challenges. We implemented data denormalization strategies, developed data seeding solutions with evil-seed, and enhanced their developer experience to support their rapid growth. - [Quotient](https://evilmartians.com/clients/quotient.md): We designed a playground for prompt engineers and helped Quotient AI build this developer-first interface for evaluating LLMs. - [Steel](https://evilmartians.com/clients/steel.md): Evil Martians provided technical expertise and development support for Steel, an open-source browser API that lets you control fleets of browsers in the cloud. Working within their monorepo architecture, we strengthened their browser infrastructure and added new features for their Steel Browser while maintaining their open-source ethos. - [Aptos](https://evilmartians.com/clients/aptos.md): Aptos is a modern Layer-1 blockchain built for seamless upgrades and real-world performance. We helped expand their ecosystem by creating one of their core web portals, implementing an AI-powered development assistant, and crafting technical content that showcases Aptos’ unique features to blockchain developers. - [Doximity](https://evilmartians.com/clients/doximity.md): Evil Martians helped Doximity, the leading digital platform for medical professionals, add real-time features to their Rails app by integrating AnyCable. - [Major gaming platform](https://evilmartians.com/clients/major-gaming-platform.md): For 18 months, Evil Martians partnered with a major gaming platform to build a unified UI infrastructure serving 12.3 million developers and game creators. We laid the foundation for a unified UI library in Luau React for the company and established CI/CD pipeline for continuous delivery, improving developer velocity. - [Stealth Startup in Cybersecurity](https://evilmartians.com/clients/startup-stealth-mode.md): We partnered with a stealth startup in the early stages of product development to design and build their MVP, providing end-to-end support across frontend, design, and product strategy. Over seven months, we led technical execution and helped the founding team launch with confidence freeing them to focus on fundraising and hiring. - [Exponent.run](https://evilmartians.com/clients/exponent.md): Evil Martians contributed to reducing long-term technical risks in the MVP by rigorously stress-testing core functionality, refining edge-case behavior (such as stdin handling and long-running processes), and enhancing the user experience around code streaming and interaction flows. - [GMI Cloud](https://evilmartians.com/clients/gmicloud.md): In a matter of weeks, Evil Martians delivered a fully functional website with conversion-driven pages tailored specifically around the goals of GMI Cloud, a California-based GPU cloud infrastructure provider. - [eBay](https://evilmartians.com/clients/ebay.md): Evil Martians have been cooperating with eBay, a global marketplace leader, since 2014, shipping two official eBay spin-offs—eBaymag and eBay Bonus. Martians are behind all the tech and product development, analytics, design, and SRE in both projects. - [Ghost Security](https://evilmartians.com/clients/ghost-security.md): Ghost Security is a startup working on a security platform for enterprise and web applications that makes it possible to find vulnerabilities and measure the risks of their cloud infrastructures. During their mission to deliver security engineers an insightful, noise-less, and aesthetic UX inside a product that stands out in the oversaturated and effective field of security apps, the team invited Evil Martians to create their MVP’s UI design and to build its frontend together with the core team. - [ClickFunnels](https://evilmartians.com/clients/clickfunnels.md): Evil Martians partnered with ClickFunnels, a leading sales funnel platform, to stabilize their AnyCable infrastructure and optimize test suite. Our team eliminated flaky tests, migrated end-to-end tests to Ruby, and implemented sanity tests while identifying performance bottlenecks to improve test reliability. - [Medplum](https://evilmartians.com/clients/medplum.md): We designed a demo app for Medplum (YC S22), API-first open source healthcare developer platform. - [Scout](https://evilmartians.com/clients/scout.md): Scout is a performance monitoring tool that helps developers quickly identify and resolve performance issues. Evil Martians came on board to help refine their website design and tone of voice, and overhaul their copy to more effectively showcase their product value. We determined the viability of their social media channels and blog, provided a short-term and long-term content strategy, and continue to work providing editorial work and guidance on developing a writing culture within their technical team. - [Wawa Fertility](https://evilmartians.com/clients/wawa-fertility.md): Wawa Fertility is a platform helping clinics streamline fertility care through personalized, easy-to-manage solutions. To move faster while maintaining quality, they partner with Martians for senior dev expertise, tech research, and quick, focused delivery. Together, we work in agile sprints to build and ship high-impact features efficiently. - [Iterative](https://evilmartians.com/clients/iterative.md): Iterative is an open source data and models versioning tool for Machine Learning projects, built by Iterative.ai. Evil Martians were instrumental in refashioning the critical web resources and building UI and frontend for DVC Studio. - [HTTPie](https://evilmartians.com/clients/httpie.md): HTTPie is an open-source API testing client. The team called on Evil Martians to create the Web & Desktop version of the application. Though we started by building a complex professional UI design, we also helped add new features on the frontend and backend. - [Yetto](https://evilmartians.com/clients/yetto.md): We helped Yetto create the next generation of support tooling, built from the ground up to streamline the work of supporting customers for all the teams involved in this process. - [Tegon](https://evilmartians.com/clients/tegon.md): Tegon, the open source AI-first issue tracker, faced the challenge of changing its UI and UX to set the product apart from other issue trackers. Evil Martians took charge of this transformation, successfully redesigning the core experience and bringing forward new ideas for AI-first features to further enhance the issue tracker UX above and beyond. Our contributions helped Tegon launch version 2.0 in just 2.5 months, with well-received results. - [Keygen](https://evilmartians.com/clients/keygen.md): Keygen is a fair source software licensing and distribution API that is open sourced and enterprise-grade. This developer-first tool can significantly reduce development time by simplifying access to licenses. Our team built Keygen Relay, an offline-first on-premise CLI server written in Go, to help users with non-cloud infrastructure (e.g., private networks) work effectively with license distribution. - [Tesote](https://evilmartians.com/clients/tesote.md): Tesote, a fintech company transforming the way CFOs manage their treasury operations, worked with Evil Martians to develop critical bank integrations enabling the secure connection of over 700 customer bank accounts across 40+ workspaces. Additionally, we established logging and error monitoring for bank sync sessions, which power the Metabase dashboards used daily by the Tesote team. - [Photobucket](https://evilmartians.com/clients/photobucket.md): Photobucket is an image and video hosting service that allows users to upload, store, edit, and share their media online. We helped them launch a new Go-based feature on a tight deadline by embedding a developer into their team. It was great collaborating, sharing best practices, and setting them up for long-term success. - [Wave](https://evilmartians.com/clients/wave.md): Wave, a brand-new developer tool, is an AI-powered command line terminal based on open web standards. This startup’s team needed a new and stand-out UI design but one that was also newbie-programmer-friendly. - [Fountain](https://evilmartians.com/clients/fountain.md): As a core technical team behind Fountain’s software, doing backend and frontend development and being responsible for scaling the software, we were happy to see them become an industry leading hiring platform for hourly workers. - [Podium](https://evilmartians.com/clients/podium.md): Evil Martians have developed a mobile application for Podium (featured in Inc. 500, Forbes, Fast Company), the leading interaction platform for local business. In 2021, Podium Corp.’s valuation doubled to more than $3B at the time of their latest round of fundraising. - [Gett](https://evilmartians.com/clients/gett.md): Gett is a leading on-demand mobility company in UK, Israel, US, and CIS countries. Evil Martians helped with backend/frontend development and training, which allowed Gett to switch to microservice-oriented architecture faster. - [Chowbus](https://evilmartians.com/clients/chowbus.md): Evil Martians helped the fast-paced food delivery platform improve its backend performance and reliability and speed up new feature development. We contributed to the system design and architecture, backend and frontend, ensuring zero-downtime releases. - [Monograph](https://evilmartians.com/clients/monograph.md): We helped Monograph, who builds a back-office tool for architects, migrate the backend to GraphQL, move the frontend part from the monolith to the Next application, and accelerate and create financial reports. We also led some trainings. - [imgproxy](https://evilmartians.com/clients/imgproxy.md): We’re proud that this Martian-built open source project has gained its independence but remains the fastest and most secure image processing tool on the market! To highlight these differentiators, we refreshed their brand identity, redesigned and launched a new website, developed a content strategy, and kicked off copywriting for the imgproxy blog and social channels. - [Mayhem](https://evilmartians.com/clients/mayhem.md): Mayhem brings gamers together in tournaments, leagues, and other real-time community-driven events. Evil Martians resolved performance bottlenecks in the project’s backend, stemming from Mayhem’s active user base’s rapid growth. - [Lowkey.gg](https://evilmartians.com/clients/lowkey.md): Lowkey.gg is a gaming startup that helps esports teams to train and study competitors’ strategies. The Martian team brought Lowkey’s app CPU usage from over 30% to less than 5% while recording a Full HD video with 60 FPS. - [2U](https://evilmartians.com/clients/2u.md): Martians helped 2U achieve the strategic goal of reorganizing its microservices architecture by safe migration GraphQL API to Apollo Federation with zero downtime and fewer expenses. - [Synonym](https://evilmartians.com/clients/synonym.md): Synonym develops, finances and builds commercial-scale biomanufacturing infrastructure for synthetic biology companies that manufacture the next generation of sustainable products like alternative proteins, biomaterials and biopolymers. Our team helped them launch some critical business products, all while delivering them on a tight schedule. - [Neuromation](https://evilmartians.com/clients/neuromation.md): Martians helped to improve the documentation platform for Neuromation, the AI marketplace & development platform that pioneers the use of synthetic data to build more capable computer vision AI. - [Groupon](https://evilmartians.com/clients/groupon.md): Evil Martians spent 6 years with one of Groupon's local products in a core tech team role. We supported scaling, implemented new features and offers in record-breaking time, and fought against DDoS attacks under the project’s fairly insane growth. - [Rocketbank](https://evilmartians.com/clients/rocketbank.md): Evil Martians launched Rocketbank, the scene-disrupting, genre-defining mobile-only bank in Eastern Europe. - [eBaymag](https://evilmartians.com/clients/ebaymag.md): An official eBay B2B service to support over 20K sellers in 120 countries to access the world’s richest economies via 9 eBay local marketplaces. Martians cover tech and product aspects of eBaymag since its early MVP in 2016. - [eBay Bonus](https://evilmartians.com/clients/ebay-bonus.md): An official eBay cashback service. Working as a core product and tech team behind this cashback service since 2014, Martians helped eBay Bonus go through 3 major pivots successfully, and reach targeted financial indicators. - [Akeero](https://evilmartians.com/clients/akeero.md): Akeero is an AWS architecture audit platform. Evil Martians created a professional UI, built the frontend, including a key feature—a visual collaborative real-time editor for architecture's design. The Martians helped the team to release an MVP in just 4 months. - [Certora](https://evilmartians.com/clients/certora.md): Certora provides advanced security analysis tools for Smart Contracts, including a one-of-its-kind accessible and cost-efficient formal verification tool. Evil Martians helped them build a handy VS Code plugin for analyzing the verification results in the IDE. - [Blockscout](https://evilmartians.com/clients/blockscout.md): Blockscout is the first fully-featured open source blockchain explorer that provides access to data, analytics, and decentralized apps (dApps) from 100+ Ethereum-based chains. Evil Martians designed and built the frontend for new, cutting-edge features that would help the explorer gain traction in the highly competitive blockchain industry. - [Fund That Flip](https://evilmartians.com/clients/fundthatflip.md): Fund That Flip is a leader in online lending that specializes in funding rehab and new construction projects. Martians introduced best practices that accelerated the engineering process and reduced test suit execution time by 66%. - [Healthie](https://evilmartians.com/clients/healthie.md): Healthie is an all-in-one SaaS solution for virtual-first healthcare and wellness companies to automate and streamline back-office operations and build longitudinal relationships with their clients. They asked our team to help with the gradual migration of their real-time features from Action Cable to AnyCable Pro and other backend challenges. - [Common](https://evilmartians.com/clients/common.md): As a leading co-living platform, Common designs, creates, and operates all-inclusive homes. Martians were responsible for backend, frontend, and mobile development for the Connect by Common app. - [Zipline](https://evilmartians.com/clients/zipline.md): Zipline is a retail communication and task management platform. Martians helped improve the infrastructure, built some key product features, and brought large-scale optimization to boost performance and sped up engineering. - [Sera Systems](https://evilmartians.com/clients/sera.md): Sera Systems, a cloud-based software platform that automates back-office processes for home service businesses, asked for help running real-time features and ensuring no-brainer maintenance: our team migrated their GPS tracker to AnyCable and sped up the AWS ECS-based infrastructure. - [SumIt](https://evilmartians.com/clients/sumit.md): SumIt is a tailored platform specifically designed for family offices. Starting with accounting and financial reporting, Evil Martians built a sophisticated multi-step form wizard for their custom reports builder using Ruby on Rails and Hotwire. ## Open Source - [Rails Startup Stack](https://evilmartians.com/opensource/rails-startup-stack-link.md): Our selection of services, gems, guides, and materials to build and grow fast-paced businesses with Ruby on Rails. - [AgentPrism](https://evilmartians.com/opensource/agent-prism.md): Open course React component library that turn AI agent traces into clear, visual diagrams for debugging. - [Overmind](https://evilmartians.com/opensource/overmind.md): Advanced Procfile-based process manager for web application development. With it, you can efficiently run several processes from your Procfile in a single terminal. - [Hivemind](https://evilmartians.com/opensource/hivemind.md): Advanced Procfile-based process manager to run several processes from your Procfile in a single terminal. - [Autoprefixer](https://evilmartians.com/opensource/autoprefixer.md): Autoprefixer lets you write your CSS rules without vendor prefixes. - [Browserslist](https://evilmartians.com/opensource/browserslist.md): Defines and shares the list of target browsers between various frontend build tools. - [Gon](https://evilmartians.com/opensource/gon.md): A Ruby gem that provides a straightforward way to pass Ruby variables to the Rails frontend code. - [Lefthook](https://evilmartians.com/opensource/lefthook.md): Git hooks manager for Node.js, Ruby, or any other type of projects. - [Ruby Next](https://evilmartians.com/opensource/ruby-next.md): A transpiler and a collection of polyfills for supporting new and upcoming Ruby features in older versions and alternative implementations. - [Size Limit](https://evilmartians.com/opensource/size-limit.md): Linter for your JavaScript application that makes the Web lighter by preventing JS library bloat. - [TestProf](https://evilmartians.com/opensource/testprof.md): A Ruby test profiling toolkit with a collection of different tools to analyze your test suite performance. - [Action Policy](https://evilmartians.com/opensource/action-policy.md): An authorization framework for Ruby on Rails applications. - [Mock Suey](https://evilmartians.com/opensource/mock-suey.md): A collection of tools to keep Ruby mocks in line with real objects. - [OKLCH Color Picker & Converter](https://evilmartians.com/opensource/oklch-color-picker.md): OKLCH Color Picker & Converter helps designers and web developers pick and convert colors in OKLCH and LCH color space, enhance a11y in their projects, and prepare for a future with a vibrant P3 color space. - [Polychrom](https://evilmartians.com/opensource/polychrom.md): A Figma plugin that ensures UI text is readable by leveraging the new APCA algorithm. - [Harmony](https://evilmartians.com/opensource/harmony.md): Accessible UI Color Palette - [Harmonizer](https://evilmartians.com/opensource/harmonizer.md): Accessible Color Palettes Generator - [RunRuby.dev](https://evilmartians.com/opensource/runruby.md): Brings Ruby programming into your browser, streamlining the process of writing and running Ruby code. - [apcach](https://evilmartians.com/opensource/apcach.md): JavaScript color calculator for composing colors with consistent APCA contrast ratio. - [Yabeda](https://evilmartians.com/opensource/yabeda.md): Make Ruby and Rails application monitoring as easy as possible. - [Ossert](https://evilmartians.com/opensource/ossert.md): An open source SaaS that provides maturity maintenance certification for Ruby libraries. - [Nano ID](https://evilmartians.com/opensource/nanoid.md): A nano-sized unique string ID generator for JavaScript. - [Storeon](https://evilmartians.com/opensource/storeon.md): An event-based, Redux-like state manager for React, Preact, Angular, Vue, and Svelte. - [Color Name](https://evilmartians.com/opensource/color-name.md): A Figma plugin that answers the question “How should I name this color?” once and for all. - [PostCSS-modules](https://evilmartians.com/opensource/postcss-modules.md): A PostCSS plugin to use CSS Modules everywhere: not only at the client side. - [State Machine](https://evilmartians.com/opensource/state-machine.md): A Sketch plugin that allows you to use ⌃⌘S to switch an active tab on a tab bar you’re designing, an active navigation section in a menu, or a page number in a pagination control. - [Compo](https://evilmartians.com/opensource/compo.md): A Sketch plugin that makes it easier to work with interface components. - [Sort Me](https://evilmartians.com/opensource/sort-me.md): A Sketch plugin that makes sorting artboards and layers dead simple. - [Size Marks](https://evilmartians.com/opensource/size-marks.md): A Photoshop™ script for web designers and frontend engineers. - [Evil Blocks](https://evilmartians.com/opensource/evil-blocks.md): A tiny JavaScript framework for web pages designed to split your app to separated blocks. - [VFont](https://evilmartians.com/opensource/vfont.md): VFont is a library for mobile engineers and designers that simplifies work with variable fonts in iOS projects. - [Gem Check](https://evilmartians.com/opensource/gem-check.md): Gem Check lets users check out all the best Ruby practices in one place. - [Action Policy GraphQL](https://evilmartians.com/opensource/action-policy-graphql.md): An integration for using Action Policy as an authorization framework for Rails GraphQL applications. - [Logidze](https://evilmartians.com/opensource/logidze.md): A Ruby library for tracking Active Record changes. - [Clowne](https://evilmartians.com/opensource/clowne.md): Clowne is a powerful and customizable Ruby gem for cloning models. Clowne works with pure Ruby, ActiveRecord, and Sequel. - [TurboMount](https://evilmartians.com/opensource/turbo-mount.md): Add components from React, Vue, Svelte, and other frameworks to your Hotwire application. - [Browserslist IntelliJ Plugin](https://evilmartians.com/opensource/browserslist-intellij-plugin.md): Adds support for Browserslist config files to your favourite IDE - [Typelizer](https://evilmartians.com/opensource/typelizer.md): A TypeScript type generator for Ruby serializers. - [Dip](https://evilmartians.com/opensource/dip.md): A tool to simplify and smooth the Docker Compose utilizing. - [wasmify-rails](https://evilmartians.com/opensource/wasmify-rails.md): Tools and extensions to pack and run Rails apps on Wasm. - [Engems](https://evilmartians.com/opensource/engems.md): A collection of tools and guides on building component-based Rails applications on top of Rails Engines and gems - [Parser](https://evilmartians.com/opensource/parser.md): A tooling-grade Ruby parser. - [Terraforming Rails](https://evilmartians.com/opensource/terraforming-rails.md): A collection of tools and guides to help turn legacy Ruby on Rails code into legendary code. - [Evil Martians Telephony](https://evilmartians.com/opensource/telephony.md): A cloud-based Martian swiss army knife for voice calls, VoIP, conferencing, and voicemail. Powered by VoxImplant - [imgproxy-node](https://evilmartians.com/opensource/imgproxy-node.md): A JavaScript library for easily constructing URLs for images processed with imgproxy. - [Anyway Config](https://evilmartians.com/opensource/anyway-config.md): A configuration library for Ruby gems and applications. - [Evil Icons](https://evilmartians.com/opensource/evil-icons.md): A simple and clean SVG icon pack with the code to support Ruby on Rails, Sprockets, Node.js, Gulp, and Grunt. - [Astrocore](https://evilmartians.com/opensource/astrocore.md): An alternative, Rust-based implementation of stellar-core, the core component of the Stellar network. - [Google Translate Diff](https://evilmartians.com/opensource/google-translate-diff.md): A Ruby gem to use the Google Translation API for long texts on multi-lingual websites. - [ebay_request](https://evilmartians.com/opensource/ebay-request.md): This Ruby gem for simplifies working with eBay XML APIs. - [ebay_api](https://evilmartians.com/opensource/ebay-api.md): Ruby client to eBay RESTful JSON API. - [PGTrunk](https://evilmartians.com/opensource/pg-trunk.md): Empower PostgreSQL migrations in Rails app. - [RSpec SQLimit](https://evilmartians.com/opensource/rspec-sqlimit.md): A test-driven way to fight N+1 queries in ActiveRecord. - [GraphQL Fragment Cache](https://evilmartians.com/opensource/graphql-fragment-cache.md): Improve GraphQL Ruby applications performance with the ability to cache response fragments. - [Blood Contracts](https://evilmartians.com/opensource/blood-contracts.md): A Ruby gem for runtime data validation and monitoring. - [Liquor](https://evilmartians.com/opensource/liquor.md): A safe and extensible templating language that compiles to Ruby. - [GraphQL-AnyCable](https://evilmartians.com/opensource/graphql-anycable.md): GraphQL subscriptions for AnyCable. - [xk6-cable](https://evilmartians.com/opensource/xk6-cable.md): The k6 extension helps with the implementation of a fully-featured load testing scenario involving AnyCable Demo application xk6-cable. - [CarrierWave BombShelter](https://evilmartians.com/opensource/carrierwave-bombshelter.md): A Ruby gem designed to detect an image’s real dimensions without decoding it. - [Visibility.js](https://evilmartians.com/opensource/visibility-js.md): A JavaScript library that can detect if a browser tab is currently active for a user. - [ACLI](https://evilmartians.com/opensource/acli.md): An Action Cable command-line client written in mRuby. - [wsdirector](https://evilmartians.com/opensource/wsdirector.md): A command line tool for testing WebSocket servers using scenarios. - [Lite Cable](https://evilmartians.com/opensource/litecable.md): Lightweight Action Cable implementation to bring Rails real-time experience to any Ruby application. - [Rubanok](https://evilmartians.com/opensource/rubanok.md): A magical Ruby DSL for transforming params in HTTP controllers. - [Skooma](https://evilmartians.com/opensource/skooma.md): A Ruby library for validating API implementations against OpenAPI documents. - [JSONSkooma](https://evilmartians.com/opensource/json_skooma.md): A Ruby library for validating JSONs against JSON Schemas. - [ArLazyPreload](https://evilmartians.com/opensource/ar-lazy-preload.md): Lazy loading associations for Active Record models. - [Store Attribute](https://evilmartians.com/opensource/store-attribute.md): An ActiveRecord extension which adds typecasting to store accessors. - [N+1 control](https://evilmartians.com/opensource/n-plus-one-control.md): The tool offers RSpec and Minitest matchers designed to prevent the "N+1" queries problem. - [GraphQL Ruby Persisted Queries](https://evilmartians.com/opensource/graphql-ruby-persisted-queries.md): A plugin for graphql-ruby to reduce HTTP request sizes by sending a request ID instead of an entire selection set. - [Fixturama](https://evilmartians.com/opensource/fixturama.md): A collection of helpers that allows writing elegant Ruby tests. - [StoreModel](https://evilmartians.com/opensource/store-model.md): A Ruby gem to simplify working with JSON database columns which are used to store various unstructured data. - [Active Delivery](https://evilmartians.com/opensource/active-delivery.md): A framework that provides an entry point for all types of Rails notifications. - [Alba::Inertia](https://evilmartians.com/opensource/alba-inertia.md): Seamless integration between Alba serializers and Inertia Rails. - [Inertia Rails React Starter Kit](https://evilmartians.com/opensource/inertia-rails-react-starter-kit.md): A modern full-stack starter application with Rails backend and React frontend using Inertia.js based on the Laravel Starter Kit. - [Inertia Rails Vue Starter Kit](https://evilmartians.com/opensource/inertia-rails-vue-starter-kit.md): A modern full-stack starter application with Rails backend and Vue.js frontend using Inertia.js based on the Laravel Starter Kit. - [Inertia Rails Svelte Starter Kit](https://evilmartians.com/opensource/inertia-rails-svelte-starter-kit.md): A modern full-stack starter application with Rails backend and React frontend using Inertia.js based on the Laravel Starter Kit. - [Abstract Notifier](https://evilmartians.com/opensource/abstract-notifier.md): A framework that provides an Action Mailer-like API for describing notifier classes. - [Isolator](https://evilmartians.com/opensource/isolator.md): Isolator helps detect non-database side effects during database transactions. - [after_commit everywhere](https://evilmartians.com/opensource/after-commit-everywhere.md): Allows to use ActiveRecord transactional callbacks outside of Rails models. - [Feature Toggles](https://evilmartians.com/opensource/feature-toggles.md): A Ruby mechanism for pending product features that take longer than a single release cycle. - [dry-initializer](https://evilmartians.com/opensource/dry-initializer.md): A small domain-specific language for building class initializers with parameters and options. - [Evil::Struct](https://evilmartians.com/opensource/evil-struct.md): Nested structure with type constraints for Ruby, based on the dry-initializer DSL - [Evil::Client](https://evilmartians.com/opensource/evil-client.md): Human-friendly DSL for writing HTTP(s) clients in Ruby - [EvilSeed](https://evilmartians.com/opensource/evil-seed.md): A Ruby tool for creating partial anonymized dump of your database based on your app models - [Freezolite](https://evilmartians.com/opensource/freezolite.md): A Ruby gem that turns the frozen_string_literal compile option automatically - [RuboCop GraphQL](https://evilmartians.com/opensource/rubocop-graphql.md): A Ruby gem containing a number of rubocop rules to keep GraphQL-related code tidy. - [Kuby AnyCable](https://evilmartians.com/opensource/kuby-anycable.md): A Kuby plugin designed for deploying AnyCable applications. - [Active Event Store](https://evilmartians.com/opensource/active-event-store.md): A wrapper over Rails Event Store which adds conventions and transparent Rails integration. - [Ruby Bytes](https://evilmartians.com/opensource/ruby-bytes.md): The toolkit to build, deploy and install application templates for Ruby and Rails applications. - [view_component-contrib](https://evilmartians.com/opensource/view-component-contrib.md): A collection of extensions and developer tools for ViewComponent. - [RuboCop Markdown](https://evilmartians.com/opensource/rubocop-markdown.md): The tool to run Rubocop against your Markdown files to make sure that the code follows style guidelines and has valid syntax. - [RuboCop Gradual](https://evilmartians.com/opensource/rubocop-gradual.md): RuboCop Gradual is a tool that helps track down and fix RuboCop offenses in your code gradually. - [omniauth-ebay-oauth](https://evilmartians.com/opensource/omniauth-ebay-oauth.md): OmniAuth Strategy for eBay Apps (for using with eBay REST APIs). - [activerecord-postgres_enum](https://evilmartians.com/opensource/activerecord-postgres-enum.md): A Ruby gem to integrate PostgreSQL's enum data type into ActiveRecord's schema and migrations. - [Active Record Slotted Counters](https://evilmartians.com/opensource/active-record-slotted-counters.md): Slotted counters technique implementation for Ruby on Rails. - [GraphQL::Connections](https://evilmartians.com/opensource/graphql-connections.md): Provides additional implementations of cursor-based paginations for GraphQL Ruby gem. - [Schked](https://evilmartians.com/opensource/schked.md): A framework-agnostic scheduler for running recurring jobs. - [Downstream](https://evilmartians.com/opensource/downstream.md): A straightforward way to implement communication between Rails Engines using the Publish-Subscribe pattern. - [sidekiq-fair_tenant](https://evilmartians.com/opensource/sidekiq-fair_tenant.md): Sidekiq middleware to re-route excess jobs of “greedy” users to slower queues - [Quantizr](https://evilmartians.com/opensource/quantizr.md): Fast library for converting RGBA images to 8-bit palette images. Written in Rust; can be used with C - [URI::IDNA](https://evilmartians.com/opensource/uri-idna.md): A IDNA2008, UTS46, IDNA from WHATWG URL Standard and Punycode implementation in pure Ruby. - [Inertia Rails Contrib](https://evilmartians.com/opensource/inertia-rails-contrib.md): A collection of extensions, developer tools, and the community documentation for Inertia's Rails adapter. - [Fullstaq Ruby Docker images](https://evilmartians.com/opensource/fullstaq-ruby-docker.md): Unofficial Docker images for Fullstaq Ruby, a custom build of Ruby MRI - [Sidekiq::Grouping](https://evilmartians.com/opensource/sidekiq-grouping.md): Allows identical Sidekiq jobs to be processed with a single background call. - [sidekiq-postpone](https://evilmartians.com/opensource/sidekiq-postpone.md): Bulk-pushes tasks to Redis when you need it to. - [Sidekiq limit_fetch](https://evilmartians.com/opensource/sidekiq-limit-fetch.md): Sidekiq strategy to support a granular queue control—limiting, pausing, blocking, querying. - [protoc-gen-terraform](https://evilmartians.com/opensource/protoc-gen-terraform.md): Generates Terraform provider schemas and unmarshallers from protobuf definitions. - [protobuf-as](https://evilmartians.com/opensource/protobuf-as.md): Protobuf AssemblyScript compiler. - [PgClosureTreeRebuild](https://evilmartians.com/opensource/pg-closure-tree-rebuild.md): A Ruby gem to quickly rebuild trees in PostgreSQL implemented via the Closure Tree pattern. - [Clean Publish](https://evilmartians.com/opensource/clean-publish.md): A tool for removing configuration files, fields, and development scripts from package.json before publishing to npm. - [Nano Stores](https://evilmartians.com/opensource/nano-stores.md): A tiny state manager for React, React Native, Preact, Vue, Svelte, Solid, Lit, Angular, and vanilla JS. - [Nano Stores Router](https://evilmartians.com/opensource/nano-stores-router.md): A tiny router for the Nano Stores state manager - [Nano Stores Query](https://evilmartians.com/opensource/nano-stores-query.md): A data fetcher library for Nano Stores state manager. - [KeyUX](https://evilmartians.com/opensource/keyux.md): JavaScript library to improve keyboard UI of web apps. - [SugarSS](https://evilmartians.com/opensource/sugarss.md): An indent-based CSS syntax for PostCSS. - [Check TypeScript Definitions](https://evilmartians.com/opensource/check-dts.md): Unit tests for TypeScript definitions in your JavaScript open source library. - [tiller-releases-converter](https://evilmartians.com/opensource/tiller-releases-converter.md): A tool to automate Helm's tiller migration from ConfigMap releases backend to Secrets-based backend for Kubernetes and Helm users. - [Micro Transform](https://evilmartians.com/opensource/micro-transform.md): Tiny library to transform JavaScript objects between different states. ## Products - [imgproxy](https://evilmartians.com/products/imgproxy.md): imgproxy is a blazing fast and secure image processing tool. Built with a focus on developer productivity, imgproxy saves time and money on developing hand-rolled image processing pipelines. Our Pro version provides priority support, advanced image adjustments, ML features, watermarking, and video support. - [Layered Design for Ruby on Rails Applications](https://evilmartians.com/products/layered-design-book.md): Discover practical design patterns for maintainable web applications. Transition from the traditional Rails MVC trio to an abstraction model and evolve your application codebase with synchronized components, boosting flexibility and maintainability. - [AnyCable](https://evilmartians.com/products/anycable.md): Building realtime features at scale is easy with the dedicated realtime server, AnyCable. It runs next to your main app (or, in our cloud) and handles realtime load, while ensuring the deliverability of messages and reliability of connections. Use powerful high-level abstractions to build chats, collaboration, IoT data features, gen-AI streaming, etc. - [PostCSS](https://evilmartians.com/products/postcss.md): One of the most popular and most depended-on npm libraries, PostCSS transforms CSS using an extensible plugins API. With more than 200 plugins, developers can lint CSS, support variables and mixins, transpile future CSS syntax, and more. - [Martian Grotesk](https://evilmartians.com/products/martian-grotesk.md): An open typeface family with a strong personality designed for web and digital projects. It contains a variable font and 63 styles. Martian Grotesk appears legible on most platforms, even when being rendered in small sizes. - [Martian Mono](https://evilmartians.com/products/martian-mono.md): Martian Mono is a monospaced version of the Martian Grotesk for code style design. It's the first Evil Martians open source typeface on the market. - [Logux](https://evilmartians.com/products/logux.md): A new way to connect clients and server. Instead of sending HTTP requests (AJAX/REST), it synchronizes the log of operations between client, server, and other clients through WebSockets. - [LaunchKit](https://evilmartians.com/products/launchkit.md): Free template for devtool landing pages ## Blog - [Making your site visible to LLMs: 6 techniques that work, 8 that don't](https://evilmartians.com/chronicles/how-to-make-your-website-visible-to-llms.md): Most AI SEO advice is unproven. We tested what ChatGPT, Claude, and Perplexity actually read on our own site. Six LLM visibility techniques that worked, eight that didn't, and the metrics to tell the difference. - [Now you see it: Vite on Rails without the proxy](https://evilmartians.com/chronicles/now-you-see-it-vite-on-rails-without-the-proxy.md): Introducing rails_vite—a new Vite integration for Rails that works with Propshaft, not against it. Drop it into an existing jsbundling app for instant CSS HMR, or use the full gem for manifest-based asset resolution. - [Gemfile of dreams: the libraries we use to build Rails apps](https://evilmartians.com/chronicles/gemfile-of-dreams-libraries-we-use-to-build-rails-apps.md): We unveil the gemfile toolbox of the Martian Rails engineer; a universe of Evil Martian gems that encapsulate our philosophy and soul. - [Migrating an event pipeline from NATS to Kafka with zero downtime](https://evilmartians.com/chronicles/migrating-an-event-pipeline-from-NATS-to-Kafka.md): Evil Martians migrated Wallarm's core event pipeline from NATS to Kafka in two months with zero downtime. Learn how we also handle event deduplication and reconstruct business flows for better understanding of the application. - [TestProf Digest 2026.4: surprising finds from 30k specs](https://evilmartians.com/chronicles/test-prof-digest-2026-surprising-finds-from-30k-specs.md): Learn what's new in the world of slow tests and how TestProf continues to help Rails teams to keep CI build times under control. - [We analyzed 1,140 devtools funding rounds—here's who's writing checks and why](https://evilmartians.com/chronicles/we-analyzed-1140-devtools-funding-rounds.md): We analyzed 1,140 early-stage funding rounds in developer tools, cybersecurity, and infrastructure from January 2025 through March 2026. Here are the top VCs and investors writing checks, the metrics that got companies funded, and the exact person to email based on what you're building. - [OpenAPI + NestJS: type-safe controllers from the contract](https://evilmartians.com/chronicles/openapi-nestjs-type-safe-controllers-from-the-contract.md): NestJS is code-first by default meaning decorators describe your API, and the spec is generated from code. But decorators don't enforce anything at compile time. This post shows how to flip the flow to generate controller method types from an OpenAPI spec and let TypeScript catch contract drift before reaching production. - [Tutorialkit.rb: interactive Ruby tutorials entirely in the browser](https://evilmartians.com/chronicles/tutorialkit-rb-interactive-ruby-tutorials-entirely-in-the-browser.md): The final report for Ruby Association Grant on TutorialKit.rb—a toolkit for building interactive Ruby and Rails tutorials that run entirely in the browser using WebAssembly and WebContainers. Featuring a full-featured installer, agent-friendly development workflow, deployment pipelines, HTTP support, and real-world examples. - [Product-market fit methodology for early-stage devtool companies](https://evilmartians.com/chronicles/product-market-fit-methodology-devtools.md): How do you measure product-market fit for a developer tool? A PMF scoring model from Evil Martians—a product development consultancy for developer tools startups—built on data from 37 devtools companies across AI, infrastructure, and cybersecurity. Five metrics, real benchmarks, and a dual score that tells you whether to invest in product or go-to-market. - [Web slides are web apps: live interactivity for Reveal.js and Slidev](https://evilmartians.com/chronicles/web-slides-are-web-apps-live-interactivity-for-revealjs-and-slidev.md): Nothing could make me switch from Keynote to web-based slides. Then, I did! And as a WebSocket geek, I realized it opens up new opportunities! Here's my contribution to making your web presentations beautifully interactive. - [Why devtools startups hire Evil Martians](https://evilmartians.com/chronicles/why-devtools-startups-hire-evil-martians.md): Evil Martians is a developer tools consultancy. Founded in 2006, we work with about 40 early-stage startups a year, mostly seed to Series B. We helped bolt.new scale from zero to $40M+ ARR in 5 months. Teleport and Tines reached unicorn status with Martians on their teams. - [OpenAPI + Fastify: let the contract build your server](https://evilmartians.com/chronicles/openapi-fastify-backend-let-the-contract-build-your-server.md): Wire your OpenAPI contract into a Node.js Fastify backend with auto-generated routes, typed handlers, and request validation—no manual route definitions, no type drift, no integration surprises. - [The Flipper gem is amazing, here's how we extended it the Martian way](https://evilmartians.com/chronicles/flipper-gem-is-amazing-we-extended-it-the-martian-way.md): A deep dive extending Flipper in Rails: friendly actor IDs, team-wide flags, percentage rollouts, analytics events, and admin auditing. - [Solving the Nebraska problem with the Open Source Endowment](https://evilmartians.com/chronicles/solving-the-nebraska-problem-with-the-open-source-endowment.md): Konstantin Vinogradov, an open source and infra VC investor, and his co-founders are building the first permanent funding model for critical open source infrastructure. We dive into why OSE stands a chance at battling the Nebraska problem, and how Evil Martians contributed as a pro-bono donor. - [Life's too short to hand-write API types: OpenAPI-driven React](https://evilmartians.com/chronicles/lifes-too-short-to-hand-write-api-types-openapi-driven-react.md): Transform your React development with contract-first APIs. Generate TypeScript types, build type-safe clients, and develop with mocks while backend implements—no more waiting, no more integration chaos. - [Ruby on Whales: Dockerizing Ruby and Rails development](https://evilmartians.com/chronicles/ruby-on-whales-docker-for-ruby-rails-development.md): An exhaustive and documented Docker configuration for developing Ruby and Rails applications - [Writing custom RuboCop rules in 2026](https://evilmartians.com/chronicles/writing-custom-rubocop-rules-in-2026.md): Write and ship modern custom RuboCop cops in 2026: learn the new plugin system, requires_gem API, InternalAffairs best practices, safe autocorrection nuances, and design trade-offs for building robust, future-proof lint rules. - [PostCSS creator shares how to make your open source popular](https://evilmartians.com/chronicles/how-to-make-your-open-source-popular.md): With 20+ years and millions of downloads, PostCSS creator Andrey Sitnik shares his guide on how to make your open source project popular. - [The 4 most common security risks when vibe coding your app](https://evilmartians.com/chronicles/four-most-common-security-risks-when-vibe-coding-your-app.md): Vibe coding can speed up app development, but it can also quietly introduce serious security flaws. Here are the four most common risks and how to avoid them. - [Tutorialkit.rb: the ruby.wasm journey goes onward](https://evilmartians.com/chronicles/tutorialkit-rb-the-ruby-wasm-journey-goes-onward.md): An intermediate report for Ruby Association Grant on TutorialKit.rb, a toolkit for building interactive Ruby and Rails tutorials that run entirely in the browser using WebAssembly and WebContainers. - [Super speed, super quality: lessons from the Aptos Network site launch](https://evilmartians.com/chronicles/super-speed-super-quality-lessons-from-the-aptos-network-site-launch.md): Evil Martians make the impossible possible: launching a new Aptos Network website in just one month! - [So, your developers use AI now—here's what to know](https://evilmartians.com/chronicles/so-your-developers-use-ai-now-here-is-what-to-know.md): Research-backed insights into what AI-assisted developers can actually deliver: when productivity improves, when it doesn’t, and how setting realistic expectations means best quality results. - [Building dev tools with AI: the product decisions that need to be yours](https://evilmartians.com/chronicles/building-dev-tools-with-ai-the-product-decisions-that-need-to-be-yours.md): AI can generate a full dashboard in an afternoon. But speed doesn't eliminate design decisions—and building the wrong thing faster is an expensive mistake. Here's what design work looks like across four stages, from framing problems to learning after launch. - [Optimistic UI in Rails with optimism... and Inertia](https://evilmartians.com/chronicles/optimistic-ui-in-rails-with-optimism-and-inertia.md): Build optimistic UI in Rails with Inertia by updating props before requests complete. Learn the replaceProp pattern, automatic reconciliation, rollback behavior, and history caveats using a kanban board example. - [How to Favicon in 2026: Three files that fit most needs](https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs.md): Prefer SVG over PNG, trust browsers to downscale, drop obscure formats—the ultimate, exhaustive guide to favicons for modern web. Includes steps for static HTML and Webpack. - [How to detect Safari and iOS versions with ease in 2026](https://evilmartians.com/chronicles/how-to-detect-safari-and-ios-versions-with-ease.md): Read how to accurately detect Safari and iOS versions using WebKit feature checks, behavioral tests, and selective UA hints to gate features safely and avoid breaking UX. - [What devtools founders making $100M+ ARR told me in San Francisco](https://evilmartians.com/chronicles/what-devtools-founders-making-100m-arr-told-in-san-francisco.md): I spent the year in San Francisco, having face-to-face conversations with founders you already follow. Here are the top pieces of advice to take into 2026. - [6 things developer tools must have in 2026 to earn trust and adoption](https://evilmartians.com/chronicles/six-things-developer-tools-must-have-to-earn-trust-and-adoption.md): Developers don’t need more tools—they need fewer, higher-quality ones. This piece distills research and field evidence into six principles for faster, calmer, trustworthy devtools in 2026. - [Inertia.js in Rails: a new era of effortless integration](https://evilmartians.com/chronicles/inertiajs-in-rails-a-new-era-of-effortless-integration.md): We want to make Inertia.js more popular within the Rails community, so we've started a project to provide both Rails-specific community docs and a set of tools for simply integrating Inertia into Rails apps. - [AnyCable, Rails, and the pitfalls of LLM-streaming](https://evilmartians.com/chronicles/anycable-rails-and-the-pitfalls-of-llm-streaming.md): Real-time LLM streaming sounds simple—until it isn’t. A Rails-focused look at hidden pitfalls, AnyCable’s fixes, and the future of durable streams. - [Why your vibe-coded project needs a developer](https://evilmartians.com/chronicles/why-your-vibe-coded-project-needs-a-developer.md): After seeing dozens of vibe-coded projects up close, it's clear the gap between a prototype and product ready for users is wider than most expect. Eventually, progress becomes impossible without an experienced developer. We explore why that is, and I share a real-world case study to illustrate. - [Why Evil Martians hosted a Ruby conference in San Francisco](https://evilmartians.com/chronicles/why-evil-martians-hosted-a-ruby-conference-in-san-francisco.md): Here's why we scaled up our San Francisco Ruby meetups to SF Ruby Conf with 400+ Ruby engineers for three days of technical talks and startup demos. - [Vibe coding in style.md](https://evilmartians.com/chronicles/vibe-coding-in-style-dot-md.md): We've experimented putting the essence of a Martian engineer into AGENTS.md. Learn the story, then try it on your next AI-assisted project! - [Unparser: real life lessons migrating Ruby tools from Parser to Prism](https://evilmartians.com/chronicles/unparser-real-file-lessons-migrating-ruby-tools-from-parser-to-prism.md): A deep dive into Ruby parsing and unparsing, the transition from the Parser gem to Prism for Ruby 3.4 support, and how tooling adapts to evolving AST formats using Unparser as a case study. - [Vibecoding tools can learn from design UX and win over everyone](https://evilmartians.com/chronicles/vibecoding-tools-can-learn-from-design-ux-and-win-over-everyone.md): Tools like Bolt, Dazl, and Lovable are leading the charge with AI coding tools. But there are design patterns that can improve vibecoding workflows even more, reducing friction, and elevating AI tool UX into intuitive, creator-friendly experiences that appeal to users on a massive scale. - [Payment form best coding practices that don't drop sales](https://evilmartians.com/chronicles/payment-form-best-coding-practices-that-dont-drop-sales.md): Learn how to optimize payment forms with frontend techniques to reduce abandonment and increase conversion rates. From performance optimization to UX design, discover actionable strategies that can boost conversion by up to 35%. - [Why startups choose React (and when you shouldn't)](https://evilmartians.com/chronicles/why-startups-choose-react-and-when-you-should-not.md): React dominates with 88.6% of startup funding, but 85% of these projects are dead. We analyze funding patterns, GitHub activity, and ecosystem health across React, Vue, Angular, and Svelte. - [Migrating Whop from PostgreSQL to PlanetScale MySQL with 0 downtime](https://evilmartians.com/chronicles/migrating-whop-from-postgresql-to-planetscale-zero-downtime.md): How we helped Whop migrate their high-traffic Rails app from PostgreSQL to PlanetScale MySQL without downtime or development pauses. Read about dual-database setups, schema quirks, and the lessons learned. - [Why we're excited about the SF Ruby conference](https://evilmartians.com/chronicles/why-we-are-excited-about-sf-ruby-conference.md): SF Ruby and Evil Martians are excited to invite you to our premier event: the San Francisco Ruby Conference. - [Debug AI fast with this open source library to visualize agent traces](https://evilmartians.com/chronicles/debug-ai-fast-agent-prism-open-source-library-visualize-agent-traces.md): Debugging AI agents shouldn’t mean digging through endless JSON. AgentPrism, an open-source React component library by Evil Martians, turns raw OpenTelemetry traces into clear visualizations, instantly revealing loops, errors, and cost spikes. Built with Quotient AI, AgentPrism helps teams ship reliable, production-grade AI systems up to 5x faster. - [How to add fast, client-side search to Astro static sites](https://evilmartians.com/chronicles/how-to-add-fast-client-side-search-to-astro-static-sites.md): Join me on a breathtaking journey as we add a client-side search to an SSG docs-first site, built with Astro! - [Martian Summer: blog, talks, open source, and ready for SFRuby in Nov](https://evilmartians.com/chronicles/martian-summer-blogs-talks-open-source-ready-for-sfruby-nov.md): Open source, talks around the world and prepping SFRuby for Nov 2025. Catch up Evil Martians' blog, open source, podcast, and get ready as we head for SFRuby Conference in San Francisco. - [Contract shock therapy: the way to API-first documentation bliss](https://evilmartians.com/chronicles/contract-shock-therapy-the-way-to-api-first-documentation-bliss.md): Learn how to build a dedicated API documentation repository that becomes your team's single source of truth, enabling true contract-first development. - [Flaky tests, be gone: long-lasting relief for chronic CI retry irritation!](https://evilmartians.com/chronicles/flaky-tests-be-gone-long-lasting-relief-chronic-ci-retry-irritation.md): Flaky tests got you down? The Evil Martians formula stops chronic CI retry irritation! Clinically proven on ClickFunnels' massive test suite and dozens of developers! - [OKLCH in CSS: why we moved from RGB and HSL](https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl.md): CSS Color Module 4 adds oklch(), and we gain P3 wide-gamut support, boost code readability, and improve developer-designer communication. - [Baking with Rails at scale: recipes in Ruby, cookware from Go, C, and Rust](https://evilmartians.com/chronicles/baking-with-rails-at-scale-recipes-in-ruby-cookware-from-go-c-rust.md): Scale your Rails app without rewrites. Learn to keep business logic in Ruby and delegate heavy work to specialized tools, built with Go, C, and Rust, for performance and scalability. - [Exploring Active Agent, or can we build AI features the Rails way?](https://evilmartians.com/chronicles/exploring-active-agent-or-can-we-build-ai-features-the-rails-way.md): Explore how the Active Agent library brings Rails conventions to AI development, with real-world examples from Evil Martians' early adoption experience - [The Whop chop: how we cut a Rails test suite and CI time in half](https://evilmartians.com/chronicles/the-whop-chop-how-we-cut-a-rails-test-suite-and-ci-time-in-half.md): Evil Martians cut Whop’s Rails test suite and CI time in half using profiling, factory optimizations, and parallelization. Learn how we speed up tests and boost reliability. - [The scenic route: lessons building an IntelliJ IDEA plugin for Luau](https://evilmartians.com/chronicles/the-scenic-route-lessons-building-intellij-idea-language-support.md): This post covers the complex (but rewarding) process of building native language support for JetBrains from scratch. From crafting lexers and parsers to wrestling with soft keywords, PSI trees, and error recovery, this guide walks through the real stuff. - [The Long Game: why Rails survived the hype cycle and what it means for your startup](https://evilmartians.com/chronicles/the-long-game-why-rails-survived-the-hype-cycle-and-what-it-means-for-your-startup.md): Rails isn’t dead, it’s thriving. Learn how Ruby on Rails survived the hype cycle, why startups like Chime and Figma still bet on it, and what it means for your next project. - [Circuit breakers and Ruby in 2025: don't break your launch](https://evilmartians.com/chronicles/circuit-breakers-and-ruby-in-2025-dont-break-your-launch.md): Take a deep dive into what circuit breakers are, why you might need them, and the options you have in Ruby. - [Redprints CFP: an open source CFP management app built with Rails + Inertia.js](https://evilmartians.com/chronicles/redprints-cfp-open-source-cfp-management-app-build-with-rails-and-inertia-js.md): Introducing Redprints CFP, an open source CFP management application built for the SF Ruby Conference with Rails and Inertia.js. - [What we learned from creating PostCSS](https://evilmartians.com/chronicles/what-we-learned-from-creating-postcss.md): We share what have we learned creating PostCSS and the huge ecosystem around it. Get 8 key lessons from Andrey Sitnik, creator of PostCSS. - [AnyCable for Laravel: reliable WebSocket infrastructure](https://evilmartians.com/chronicles/anycable-for-laravel.md): - [Simplicity, vanished?! Solving the mystery with Inertia.js + Rails](https://evilmartians.com/chronicles/simplicity-vanished-solving-the-mystery-with-inertia-js-and-rails.md): Has simplicity gone missing in web development? This investigative piece uncovers how Inertia.js + Rails defy JavaScript bloat and reclaim developer sanity. - [API contracts and everything I wish I knew: a frontend survival guide](https://evilmartians.com/chronicles/api-contracts-and-everything-i-wish-i-knew-a-frontend-survival-guide.md): A letter from the future about the 3-week endpoint waits, 2 AM staging environment debugging sessions, and why contract-first development changes everything. The hard-won wisdom of API development that nobody tells you until it's too late. - [We studied 100 dev tool landing pages—here’s what really works in 2025](https://evilmartians.com/chronicles/we-studied-100-devtool-landing-pages-here-is-what-actually-works-in-2025.md): While designing a landing page template for dev tool startups, we reviewed 100+ real product sites. Along the way, we uncovered practical insights—here’s what’s worth knowing if you’re building one yourself. - [The early validation lesson: designing Quotient’s prompt sandbox](https://evilmartians.com/chronicles/the-early-validation-lesson-designing-quotient-prompt-sandbox.md): The awesome Quotient team, a vision from the future, and a brilliant pivot. But if you're a visionary working on next-gen tech, you need to learn from the road we travelled on the way there! - [The Hotwire-Rails summit, or interactive multi-step forms at peak UX](https://evilmartians.com/chronicles/hotwire-rails-summit-interactive-multi-step-forms-peak-ux.md): Read about the techniques and tools we used to build a slick-looking interactive multi-step form with Rails and Hotwire for one of our clients. - [How to make an AI clone of your CEO for the world's biggest hackathon](https://evilmartians.com/chronicles/how-to-make-an-ai-clone-of-your-ceo-worlds-biggest-hackathon-tavus-bolt-new.md): Evil Martians and Bolt.new teamed up to build an AI clone of their CEO Eric Simons using Tavus to power real-time video calls for the world’s largest hackathon. - [Weeks → days: a case for expert-led, AI-driven design engineering](https://evilmartians.com/chronicles/weeks-to-days-a-case-for-expert-led-ai-driven-design-engineering.md): While working on a project highlighting a decade of investments in AI products, I recorded how often I used LLMs. Once done, I reread my notes and was shocked—my tech knowledge, multiplied by AI, helped compress weeks of work into a few days. - [A Tea Break: building sfruby.com with Bolt.new](https://evilmartians.com/chronicles/a-tea-break-building-sfruby-com-with-bolt-new.md): How we used Bolt.new and AI to launch sfruby.com in days, building a cool and high-converting site for SF Ruby Conf with Astro, OKLCH, and some Martian flair. - [How AI startups use changelogs to win developer trust](https://evilmartians.com/chronicles/how-ai-startups-use-changelogs-to-win-developer-trust.md): The AI era demands speed—and smarter changelogs! Whether you're building agents or full-stack AI, use changelogs to get people interested and invested in your progress, build in public, and tell your story. - [Exploring the OKLCH ecosystem and its tools](https://evilmartians.com/chronicles/exploring-the-oklch-ecosystem-and-its-tools.md): Explore a powerful set of tools built around the OKLCH color model—Harmonizer for accessible palettes, Polychrom for Figma contrast checking, apcach for color contrast calculations, and more. Perfect for frontend developers and designers building consistent, modern UIs. - [How Recraft's lean team is challenging the AI image generation giants](https://evilmartians.com/chronicles/how-recraft-lean-team-is-challenging-ai-image-generation-giants.md): Conventional thinking says only tech giants with massive resources can compete in AI image generation. But startup Recraft is proving this wrong, carving out big market share with a small team and strategic thinking. - [Demo app design for Medplum, open source healthcare developer platform](https://evilmartians.com/chronicles/demo-app-design-medplum-open-source-healthcare-developer-platform.md): What began as a request to add templating capabilities to a demo app evolved into something much more valuable: a reimagining of Medplum's product strategy. - [GMI Cloud meets Webflow and speeds ahead in the AI compute race](https://evilmartians.com/chronicles/gmi-cloud-meets-webflow-and-speeds-ahead-in-the-ai-compute-race.md): Evil Martians partnered with GMI Cloud to design and launch a high-performance, Webflow-powered website in just 3.5 weeks—blending fast execution, cutting-edge 3D visuals, and analytics-ready conversion flows to help this $82M-funded AI startup win the GPU compute race. - [Rails, hacking, and Stripe as a scoreboard: Marc Köhlbrugge’s playbook](https://evilmartians.com/chronicles/rails-hacking-and-stripe-as-a-scoreboard-marc-kohlbrugge-playbook.md): Marc Köhlbrugge on hacking, building startups, shipping early, why Rails powers his experiments—and his wish for the Ruby ecosystem. - [UI for Quotient AI: the developer tool for prompt engineers](https://evilmartians.com/chronicles/ui-for-quotient-ai-the-developer-tool-for-prompt-engineers.md): We designed a playground for prompt engineers—and this is how we helped Quotient AI build this developer-first interface for evaluating LLMs. We implemented a complete and structured platform built from scratch, with a clear user flow and intuitive experience. - [Making desktop apps with revved-up potential: Rust + Tauri + sidecar](https://evilmartians.com/chronicles/making-desktop-apps-with-revved-up-potential-rust-tauri-sidecar.md): Real experience using the Tauri framework to build a desktop app with a sidecar running in the background; this may be a program written in any language and can be used to surpass the framework possibilities of Tauri! - [Let there be docs! Generating an OpenAPI schema across the Rails stack](https://evilmartians.com/chronicles/let-there-be-docs-generating-openapi-schema-across-rails-stack.md): When can an implementation-first approach to documentation be preferred over documentation-first? Find the answer, and see how to do it with an existing application by leveraging some tools in some unexpected ways (including Martian ones!) Plus, AI-assisted migration tips. - [Attention: An Important Brand Update From The Evil Martians Blog](https://evilmartians.com/chronicles/attention-an-important-brand-update-from-the-evil-martians-blog.md): Has the quest for a definitive visual identity for the Evil Martians blog finally ended? - [Hey developer tool teams, don’t copy these copywriting clichés!](https://evilmartians.com/chronicles/hey-developer-tool-teams-dont-copy-these-copywriting-cliches.md): Avoid common dev tool copywriting problems. Learn to spot errors, improve clarity, market better, and come up with messages that stick. - [Simple Declarative Presence for Hotwire apps with AnyCable](https://evilmartians.com/chronicles/simple-declarative-presence-for-hotwire-apps-with-anycable.md): Learn how to seamlessly integrate online presence tracking into a Rails application powered by Hotwire and AnyCable. - [How to kill conversions on your developer tool's landing page](https://evilmartians.com/chronicles/how-to-kill-conversions-on-your-developer-tool-landing-page.md): Over the years, we've identified several excellent ways to kill landing page conversions. If you're interested in repeating (or learning from) our mistakes, we've decided to share! - [How to make web videos way smaller in 2025 using the AV1 codec](https://evilmartians.com/chronicles/better-web-video-with-av1-codec.md): Learn to use AV1 to make videos on your website smaller and better quality. CLI instructions and cross-browser tricks. - [How Doximity brought real-time Go power to their Rails app](https://evilmartians.com/chronicles/growing-pains-and-a-dose-of-go-real-time-features-for-this-rails-app.md): We helped Doximity, an online platform for medical professionals get maximum productivity for user calls. That involved keeping their investment in Rails but adding the real-time performance benefits of Go. - [Hire better, 10X faster: how we screen 50 engineers weekly with no HR](https://evilmartians.com/chronicles/hire-better-10x-faster-how-we-screen-50-engineers-weekly-with-no-hr.md): Evil Martians have built a system that finds exceptional engineers while cutting costs and respecting everyone’s time. Read and learn how! - [Ruby on Rails on WebAssembly: a guide to full-stack in‑browser action](https://evilmartians.com/chronicles/ruby-on-rails-on-webassembly-a-guide-to-full-stack-in-browser-action.md): Learn how to run a fully functional Ruby on Rails blog in your browser using WebAssembly—no servers needed; a complete guide to making Rails Wasm-ready. - [3 smart ways to highlight features for landing pages or launch weeks](https://evilmartians.com/chronicles/three-smart-ways-to-highlight-features-for-landing-pages-or-launch-weeks.md): Explore three expert (and underutilized) methods to showcase features on landing pages or during launch weeks, enhance engagement, and boost conversions! - [Martian Kubernetes Kit: running apps—and running them well](https://evilmartians.com/chronicles/martian-kubernetes-kit-running-apps-and-running-them-well.md): In this article, we’ll talk about the process of deploying and managing a real-world application on a Kubernetes cluster using the Martian Kubernetes Kit - [Devs in mind 2025: how to design interfaces for developer tools](https://evilmartians.com/chronicles/devs-in-mind-how-to-design-interfaces-for-developer-tools.md): What interface design differences exist between commercial software and, creative, developer tools for pros? Let's analyze and find out how to better design tools! - [The 16 most active developer tool investors and VCs going into 2025](https://evilmartians.com/chronicles/top-16-developer-tool-investors-and-vcs-going-into-2025.md): Building a developer-facing product and eyeing a fundraise in 2025? Here are the current active investors and VCs. We analyze the top 16, who might be the best fit for your product, and how to effectively make connections with them. - [Railsmas on Mars: 12 Days of Mandatory Developer Joy and Challenge](https://evilmartians.com/chronicles/railsmas-on-mars-12-days-of-mandatory-developer-joy-and-challenge.md): Over 12 days, we’ll unwrap 12 small (but mighty) approaches designed to level up your Rails apps. We’ll discuss, then suggest hands-on practice! - [Don't just slap on a chatbot: building AI that works before you ask](https://evilmartians.com/chronicles/dont-just-slap-on-a-chatbot-building-ai-that-works-before-you-ask.md): Too many are racing to integrate AI the same way: bolting on a chat and calling it a day. We partner with founders to go beyond these conventional implementations. In this post, principles and lessons about a better approach to integrate proactive AI. - [Ease and epiphany: 4 ways to stop misguided dev tools user onboarding](https://evilmartians.com/chronicles/easy-and-epiphany-4-ways-to-stop-misguided-dev-tools-users-onboarding.md): Dev tool users don’t need the typical onboarding process, period. Let’s share fundamentals and tips on how we help users reach ultimate productivity ASAP! - [Keeping Rails cool: the modern frontend toolkit](https://evilmartians.com/chronicles/keeping-rails-cool-the-modern-frontend-toolkit.md): We advocate and build for Rails startups, and we know this tech gives teams a productivity and competitive edge. But we also know what startups struggle with the most: frontend. Let's share our silver toolkit for dealing with it! - [bolt.new from StackBlitz: how they surfed the AI wave—with no wipeouts](https://evilmartians.com/chronicles/bolt-new-from-stackblitz-how-they-surfed-the-ai-wave-with-no-wipeouts.md): We helped StackBlitz scale to 3M+ developers and build bolt.new, going from 0 to $4M ARR in 4 weeks. Read on and let's help your dev tool surf the AI wave. - [Founders, if you want A+ startup success, do the homework first!](https://evilmartians.com/chronicles/founders-if-you-want-a-plus-startup-success-do-the-homework-first.md): We've worked with dozens of early-stage startups and seen how rushed product development can blur founder focus, blow up budgets, and lead to frustration. So, before jumping in—do your homework! - [Hey, AnyCable speaking! Needing help with a Twilio-OpenAI connection?](https://evilmartians.com/chronicles/anycable-speaking-needing-help-with-a-twilio-openai-connection.md): Learn how to use AnyCable to integrate a voice assistant to your project with Twilio Media Streams and OpenAI Realtime API - [How to do launch weeks for developer tools, startups, and small teams](https://evilmartians.com/chronicles/how-to-do-launch-weeks-for-developer-tools-startups-and-small-teams.md): A launch week is densely packed with content and activities designed to announce and explain new releases and features from different angles. They are a tested promotional strategy for early stage startups (and especially for developer tools with small teams!) - [Woah, opacity! A full guide to this badass hero of efficient UI design](https://evilmartians.com/chronicles/woah-opacity-a-full-guide-to-this-badass-hero-of-efficient-ui-design.md): See how opacity can be a game changer for web apps, minimizing the number of design tokens, styles, and component variants, thus making your workflow more efficient and flexible, especially useful for startups and fast-moving teams. - [11 HTML best practices for login & sign-up forms](https://evilmartians.com/chronicles/html-best-practices-for-login-and-signup-forms.md): Even popular sites fail to implement the 11 best practices mentioned in this article, and thus have at least one mistake. Use this checklist on your next pull request review that deals with any form. - [A taste of Go code generator magic: a quick guide to getting started](https://evilmartians.com/chronicles/a-taste-of-go-code-generator-magic-a-quick-guide-to-getting-started.md): Make a small program that generates wrapping functions for the given type methods, and use this example as a good starting point for your own Go code generator! - [Designing Tegon: a signature vision for the AI-driven issue tracker](https://evilmartians.com/chronicles/designing-tegon-a-signature-vision-for-the-ai-driven-issue-tracker.md): Tegon, the open source, AI-first issue tracker for engineering teams, needed a UI and UX to distinguish it from other issue trackers. Evil Martians took charge of this transformation, redesigning the core experience and bringing new ideas for AI-first features to elevate the issue tracker UX. - [Creating a winning sales flow with authentic writing from engineers](https://evilmartians.com/chronicles/creating-a-winning-sales-flow-with-authentic-writing-from-engineers.md): Authentic content from engineers can promote your startup's product or service. Here's how to motivate them and set up a winning flow for your team. - [A letter to founders: join the local-first movement!](https://evilmartians.com/chronicles/a-letter-to-founders-join-the-local-first-movement.md): Local-first is the next big thing, and in fact, it’s already disrupting the market of professional tools with one killer feature: zero latency. Read on to find out what that means, if it makes sense for your product and market, and how to ride this wave! - [How to quickly (and weightlessly) convert Chrome extensions to Safari](https://evilmartians.com/chronicles/how-to-quickly-and-weightlessly-convert-chrome-extensions-to-safari.md): Created a browser extension for Chrome and now want it available in Safari too? Learn how and get guidelines on the extra steps needed for App Store publication. - [Dev tools AI‑fication 101: lessons from Martian robots](https://evilmartians.com/chronicles/dev-tools-ai-fication-101-lessons-from-martian-robots.md): Learn how to bring AI to your developer tool by following our TestProf AI case study. - [Railing against time: tools and techniques that got us 5X faster tests](https://evilmartians.com/chronicles/railing-against-time-tools-and-techniques-that-got-us-5x-faster-results.md): Read about the tools, techniques, mindset that got our client 5X faster tests. - [TestProf III: guided and automated Ruby test profiling](https://evilmartians.com/chronicles/test-prof-3-guided-and-automated-ruby-test-profiling.md): TestProf is back with new features and tips for hunting slow Ruby tests and improving the developer experience by reducing feedback loop times. - [TestProf II: Factory therapy for your Ruby tests](https://evilmartians.com/chronicles/testprof-2-factory-therapy-for-your-ruby-tests-rspec-minitest.md): Learn how to bring your Ruby test suite back to full health, and full speed, with TestProf—a powerful bag of tools to diagnose all test-related problems. Chapter II: Factories. - [TestProf: a good doctor for slow Ruby tests](https://evilmartians.com/chronicles/testprof-a-good-doctor-for-slow-ruby-tests.md): This article introduces the Ruby test profiling toolbox called TestProf. - [The SDK Imperative: why developer tools live or die by their SDKs](https://evilmartians.com/chronicles/the-sdk-imperative-why-developer-tools-live-or-die-by-their-sdks.md): Developer tools need an end-to-end developer experience, including the SDK. If that's slow, it undermines the performance benefits of the core product. - [Want to make a great developer tool UI? Follow this fundamental rule!](https://evilmartians.com/chronicles/devtool-layout-rule.md): This fundamental UI design principle can make your interface simple to use and understand: elements on the top should control elements on the bottom, and elements on the left should control elements on the right. Learn deeper nuances about this rule—and make sure your users perceive your UI as logical and intuitive! - [git push --force and how to deal with it](https://evilmartians.com/chronicles/git-push---force-and-how-to-deal-with-it.md): What to do if you have accidentally force pushed to the wrong git branch: a step by step tutorial. - [Engineering connections: a conference talk primer for humans](https://evilmartians.com/chronicles/engineering-connections-a-conference-talk-primer-for-humans.md): Evil Martians keep finding their way onstage, delivering great talks and even a few awesome keynotes. Here's some of our tips for preparing your own talk. - [Flying free: a tale of partitioning with canaries in PostgreSQL](https://evilmartians.com/chronicles/flying-free-a-tale-of-partitioning-with-canaries-in-postgresql.md): This canary-based partitioning strategy is a safer, more controlled way to handle large-scale database partitioning and query optimization. Get real-time statistics and gradual optimization, reducing the risks with traditional partitioning processes. - [How to make complex Chrome extensions: a zero gravity guide](https://evilmartians.com/chronicles/how-to-make-complex-chrome-plugins-a-zero-gravity-guide.md): Building a complex browser extension isn't exactly easy, so use this guide and float to success! - [Startups on Rails in 2024: my keynote at RailsConf](https://evilmartians.com/chronicles/startups-on-rails-in-2024-my-keynote-at-railsconf.md): Are startups choosing Ruby and Rails in 2024? Yes, they are! Moreover, they're shipping products faster by switching to Rails from the hyped Next.js and the established Java. Hear these stories in Irina's keynote at RailsConf. - [Connection avalanche safety tips and prepping for real-time applications](https://evilmartians.com/chronicles/connection-avalanche-safety-tips-and-prepping-for-realtime-applications.md): Learn about different strategies for taming a specific case of the thundering herd problem in real-time applications—connection avalanches. - [Recapping the first Local‑First conference in 15 minutes](https://evilmartians.com/chronicles/recapping-the-first-local-first-conference-in-15-minutes.md): A recap of the talks and key insights from the first Local-First Conference 2024 - [Realtime diagnostic logging, or how to really spy on your Go web apps](https://evilmartians.com/chronicles/realtime-diagnostic-logging-or-how-to-really-spy-on-your-go-web-apps.md): Learn how to temporarily stream verbose logs from your Go application without restarts and even without changing the application-level logging settings. - [Beyond monospace: the search for the perfect coding font](https://evilmartians.com/chronicles/beyond-monospace-the-search-for-the-perfect-coding-font.md): A guide for both font designers and users on the design differences that matter for programming and code readability. - [The art of Turbo Mount: Hotwire meets modern JS frameworks](https://evilmartians.com/chronicles/the-art-of-turbo-mount-hotwire-meets-modern-js-frameworks.md): Explore the fusion of Hotwire simplicity and JavaScript interactivity using the integration of Turbo Mount and React, Vue, or Svelte components for a dynamic and responsive user experience. - [The lion's den: NestJS and authentication with AWS Cognito](https://evilmartians.com/chronicles/the-lions-den-nest-js-and-authentication-with-aws-cognito.md): Read how we complete the full stack circle and integrate AWS Cognito authentication with NestJS. - [How does your chatbot UX size up? The 5 laws of ChatRobotics](https://evilmartians.com/chronicles/how-does-your-chatbot-ux-size-up-the-5-laws-of-chatrobotics.md): The quality of a chatbot's UX determines success. Take these 5 UX principles to heart during development. - [Keep it together: 5 essential design patterns for dev tool UIs](https://evilmartians.com/chronicles/keep-it-together-5-essential-design-patterns-for-dev-tool-uis.md): UI design can often make or break a successful developer tool. This post covers 5 essential dev tool UI patterns in a way so that even non-designers can get their project off the ground. - [Let's have more tech meetups! A quick-start guide to holding your own](https://evilmartians.com/chronicles/lets-have-more-tech-meetups-a-quick-start-guide-to-holding-your-own.md): Technical meetups are truly the best way to connect to people with similar passions. So, let’s bring them back! Here’s our quickstart guide based on our successful experience organzing a tech meetup in the San Francisco Bay Area. - [Next-level docs with Next.js: Teleport’s new customer acquisition channel](https://evilmartians.com/chronicles/next-level-docs-with-nextjs-teleports-new-customer-aquisition-channel.md): Well-structured, detailed documentation matters for all open source projects, but for Open Core solutions adopted by large businesses—it’s absolutely critical. See how we helped Teleport not only redesign their docs, but gain a super user acquisition channel in the process. - [How to manifest streamlined authentication: AWS Cognito in a React app](https://evilmartians.com/chronicles/how-to-manifest-streamlined-authentication-aws-cognito-in-a-react-app.md): Streamline the authentication process and essentially alleviate the burden of managing it by integrating AWS Cognito and AWS Amplify into your React TypeScript application, with a focus on SAML 2.0 integration with Identity Providers and enhancing REST API security using Bearer token authentication. - [CLI UX best practices: 3 patterns for improving progress displays](https://evilmartians.com/chronicles/cli-ux-best-practices-3-patterns-for-improving-progress-displays.md): 3 popular UI patterns for keeping users informed about ongoing processes: the spinner, the X of Y pattern, and the progress bar, the pros and cons of each, and tips for choosing the one that best suits your needs. - [Let there be docs! A documentation-first approach to Rails API development](https://evilmartians.com/chronicles/let-there-be-docs-a-documentation-first-approach-to-rails-api-development.md): We examine approaches to API documentation, with a case for why the documentation-first approach is beneficial, plus, we'll not only introduce a new Ruby gem, Skooma, that will be a revelation for those who are ready to follow this path, you can also read on for practical tips and advice for jumping in. - [MVPs, prototypes, results: how to win with a Martian Design Sprint](https://evilmartians.com/chronicles/mvps-prototypes-results-how-to-win-with-a-martian-design-sprint.md): Our clients have seen big wins from our design sprints: rapid MVPs, design artifacts that set the project course, new investment funds, successful business pivots, and even design awards. This is the ideal way to kickstart the entire development process, bring founder ideas to life, and give Evil Martians a test drive. - [Kamal: hot deployment tool to watch—or a total game changer?](https://evilmartians.com/chronicles/mrsk-hot-deployment-tool-or-total-game-changer.md): The SRE pros at Evil Martians attempt an objective analysis of the promises, applications, and potential of Kamal (formerly known as MRSK), plus things to watch out for. - [Beyond bars and lines: 7 cool ways to visualize data in your dev tool](https://evilmartians.com/chronicles/beyond-bars-and-lines-7-cool-ways-to-visualize-data-in-your-dev-tool.md): There are many different ways that developer tools can visualize data, and some may not be so obvious. We examine 7 methods of displaying data, the pros and cons of each, real life cases, and we also share even more scenarios where you might leverage each type of graph. - [Why should developers write? 3 reasons and 3 common blocks](https://evilmartians.com/chronicles/why-should-developers-write-3-reasons-and-3-common-blocks.md): Why should developers write? In this post, we share three reasons why, plus three common roadblocks and how to overcome them. - [Martian Kubernetes Kit: unboxing our toolkit's technical secrets](https://evilmartians.com/chronicles/martian-kubernetes-kit-unboxing-our-toolkits-technical-secrets.md): We’ve been shipping Kubernetes to clients since 2015, and over the years, we realized it would be nice to have a setup that referred to some core distribution for our Kubernetes configuration. Read about our efforts creating a toolkit for our clients that make adopting it easy and affordable, transforming it from potential headache into just another comfortable tool in the toolbox for those clients who decide to use it with us. - [How to make complex serverless file processing a piece of cake](https://evilmartians.com/chronicles/how-to-make-serverless-file-processing-a-piece-of-cake.md): Complex file processing can be easy with serverless solutions, but to perform manipulations on the uploaded files, you also need an easy-to-integrate system. Learn file processing tools and techniques with a real case and see an example serverless app for Google Cloud Platform. - [The complete guide to multi-tenant SaaS, part 1: collaboration](https://evilmartians.com/chronicles/the-complete-guide-to-multi-tenant-saas-part-1-collaboration.md): An experience-backed overview on adding a multiplayer/multi-tenant SaaS mode to an existing product with a focus on collaboration: conflict resolution, history management, and offline modes. - [“Fair” multi-tenant prioritization of Sidekiq jobs—and our gem for it!](https://evilmartians.com/chronicles/fair-multi-tenant-prioritization-of-sidekiq-jobs-and-our-gem-for-it.md): How can we manage the priorities of different users without compromising user experience in a multi-tenant app? We share our solution—plus, our new Ruby gem for implementing it! - [First steps with ruby.wasm: or how we built Ruby Next Playground](https://evilmartians.com/chronicles/first-steps-with-ruby-wasm-or-building-ruby-next-playground.md): Learn how to package your Ruby application into a WebAssembly module and run it right in a web browser. Get Ruby Next without leaving your browser and share your experiments with others simply by sending a link. - [Hiring a product designer: 1 hard skill and 3 soft skills to look for](https://evilmartians.com/chronicles/hiring-a-product-designer-1-hard-skill-and-3-soft-skills-to-look-for.md): It’s a challenge for founders to find product designer who is both a good fit for an early-stage startup and who has the potential to become a future head of product. This is tough because early-stage companies require a unique set of skills from candidates, but this guide will show you the way. - [Value pricing for Dev Tools: a strategy beneficial for both sides](https://evilmartians.com/chronicles/value-pricing-for-dev-tools-a-strategy-beneficial-for-both-sides.md): We dig into pricing models with a focus on value pricing, a strategy where the price of a product is derived from the value the product creates for the customer. - [ViewComponent in the Wild III: TailwindCSS classes & HTML attributes](https://evilmartians.com/chronicles/viewcomponent-in-the-wild-embracing-tailwindcss-classes-and-html-attributes.md): Learn how to manage TailwindCSS classes and HTML attributes in view components via the APIs provided by the view_component-contrib gem. - [5 cool (and surprising) ways to configure Lefthook for automation joy](https://evilmartians.com/chronicles/5-cool-and-surprising-ways-to-configure-lefthook-for-automation-joy.md): At first, Lefthook was just a wrapper for calling custom scripts on Git hooks, but it has evolved into a tool that provides a clean and flexible way to automate your development routine, both in obvious and quite surprising ways. Read and see real project examples. - [How to cultivate capital: 6 tips from developer tools founders and VCs](https://evilmartians.com/chronicles/how-to-cultivate-capital-6-tips-from-developer-tools-founders-and-vcs.md): A quick guide on the crossroads of bootstrapping and fundraising with experience-backed tips that provides a roadmap to successful fundraising for developer tool founders. - [UX research for dev tools must not be neglected: our quick-start guide](https://evilmartians.com/chronicles/ux-research-for-dev-tools-must-not-be-neglected-our-quick-start-guide.md): When making developer-facing tools, good UX research is essential for a solid product. In this post, we present practical strategies and ways of overcoming common developer tool UX research obstacles. - [Martian Kubernetes Kit: a smooth-sailing toolkit from our SRE team](https://evilmartians.com/chronicles/martian-kubernetes-kit-a-smooth-sailing-toolkit-from-our-sre-team.md): We’ve been shipping Kubernetes to clients since 2015, and over the years, we realized it would be nice to have a setup that referred to some core distribution for our Kubernetes configuration. Read about our efforts creating a toolkit for our clients that make adopting it easy and affordable, transforming it from potential headache into just another comfortable tool in the toolbox for those clients who decide to use it with us. - [Figma plugin magic tricks: mixing colors with SVG and Canvas API](https://evilmartians.com/chronicles/figma-plugin-magic-tricks-mixing-colors-with-svg-and-canvas-api.md): During development, sometimes the obvious solution doesn’t work. In those cases, you need some problem solving magic tricks. That's exactly how we used SVG and the Canvas API to successfully recreate color blending mechanics for our UI-text readability Figma plugin, Polychrom. - [Pen, paper, IDE: a DevTool Founder’s early-stage product design guide](https://evilmartians.com/chronicles/pen-paper-ide-a-devtool-founders-early-stage-design-guide.md): If you’re a technical founder: a CTO, technical CEO, VP of Engineering, or any type of engineer, and now the UI is in your court, this post is for you. We’ll discuss ways to save money and create an MVP without a designer. - [Care beyond code: 7 best design practices for frontend developers](https://evilmartians.com/chronicles/care-beyond-code-7-best-design-practices-for-frontend-developers.md): Frontend can be about more than just code—we’re also the last bastion helping our teams against pesky design bugs! We share 7 best design practices for frontend engineers. - [Extremely open and incredibly close: should you go open source?](https://evilmartians.com/chronicles/extremely-open-and-incredibly-close-should-you-go-open-source.md): Every founder building for developers must inevitably consider if the product should be open sourced. And if so, how to approach this from the financial perspective? We share a detailed list of open source business strategies. - [Freezolite: the magic gem for keeping Ruby literals safely frozen](https://evilmartians.com/chronicles/freezolite-the-magic-gem-for-keeping-ruby-literals-safely-frozen.md): Introducing the freezolite gem, which helps enable frozen string literals by default in Ruby projects on a per-folder basis. - [Figma plugin API: diving into advanced algorithms & data structures](https://evilmartians.com/chronicles/figma-plugin-api-dive-into-advanced-algorithms-and-data-structures.md): When developing a Figma plugin, one may encounter issues not covered by the official documentation. For example, making Polychrom, a supercharged UI-text readability plugin, needed innovative solutions, like applying algorithms and tree traversal techniques. This is the kind of post you read to think “outside the docs”. - [DIY PaaS: serverless real-time with one command](https://evilmartians.com/chronicles/diy-paas-serverless-real-time-with-one-command.md): Choose a scalable and maintainable real-time solution today to stay happy and productive tomorrow. Consider an open source service you can run on a modern cloud with one command as an alternative to expensive PaaS. - [Midjourney vs. human illustrators II: more Martians join the battle!](https://evilmartians.com/chronicles/midjourney-vs-human-illustrators-ii-more-martians-join-the-battle.md): Witness an emerging field, and how a team of professionals is experimenting in that field (while maintaining their humanity and eye for quality as much as possible). Plus, practical starting steps for the uninitiated! - [Better dynamic themes in Tailwind with OKLCH color magic](https://evilmartians.com/chronicles/better-dynamic-themes-in-tailwind-with-oklch-color-magic.md): We make Tailwind CSS play nice with CSS variables, OKLCH colors, and dynamic themes. Get reliable, predictable theming. - [The future of full-stack Rails II: Turbo View Transitions](https://evilmartians.com/chronicles/the-future-of-full-stack-rails-turbo-view-transitions.md): Learn how to enhance your Turbo applications’ UX with View Transitions - [The future of full-stack Rails: Turbo Morph Drive](https://evilmartians.com/chronicles/the-future-of-full-stack-rails-turbo-morph-drive.md): Learn why and how to use DOM morphing with Hotwire Turbo to improve the UX of your full-stack Rails applications. - [5 best practices for preventing chaos in Tailwind CSS](https://evilmartians.com/chronicles/5-best-practices-for-preventing-chaos-in-tailwind-css.md): Tailwind CSS has become a very popular CSS framework, and it can speed up development. But using it without proper caution can add mayhem to your code. Learn best practices to avoid getting swept away! - [It’s dangerous to go alone: take our guide to the “IDEAL” HTTP client!](https://evilmartians.com/chronicles/its-dangerous-to-go-alone-take-our-guide-to-the-ideal-http-client.md): Essential techniques to ensure your HTTP clients are robust and configured to avoid pitfalls and insights on the benefits of separating the client code layer from the app. This guide isn't limited to backend apps (although most examples are in Ruby), the same principles work for any language and platform, even frontend. - [It deserved its own tome: Layered Design and the Extended Rails Way](https://evilmartians.com/chronicles/it-deserved-its-own-tome-layered-design-and-the-extended-rails-way.md): We talk about Principal Backend Engineer Vladimir Dementyev’s new book on crafting ultra-maintainable Rails apps, “Layered Design for Ruby on Rails Applications”. We delve into the book, the Extended Rails Way, the future of Rails, his attempts to convince his nephew to try Rails, and more! - [Successful balance: gracefully and tactfully raising a dev tool price](https://evilmartians.com/chronicles/successful-balance-gracefully-and-tactfully-raising-a-dev-tool-price.md): Sometimes, a shift in monetization strategies is necessary to keep a dev tool dream going. In this post, we outline when it's time to consider a shift, the steps to take beforehand, and a practical list for following through with a new pricing plan to ensure maximum product growth and customer satisfaction. - [How to make next-level Figma plugins: auth, routing, storage, and more](https://evilmartians.com/chronicles/how-to-make-next-level-figma-plugins-auth-routing-storage-and-more.md): Playbook, a platform for creators to store, organize, and collaborate with creative content, needed a Figma plugin to create a smoother experience for designers. Learn how we built them a full-featured frontend application-style Figma plugin, with storage, auth, routing, and more. Plus, get tool recommendations and other tips! - [Super GitHub Pages: budget frontend staging, with Storybook and more](https://evilmartians.com/chronicles/super-github-pages-budget-frontend-staging-with-storybook-and-more.md): Learn how to set up a staging environment for a small project on a budget. Use GitHub Pages to create a frontend staging branch to test, collaborate, and optimize. Whether you're working with Storybook or any other tool, this is a cost-effective solution. - [imgproxy goes solo: unveiling a bold future for this new company](https://evilmartians.com/chronicles/imgproxy-goes-solo-unveiling-a-bold-future-for-this-new-company.md): imgproxy, the hyper-fast, secure image processing tool, has gone solo! In this post, the team shares future imgproxy plans and features. - [Enter AnyCable v1.4: reliable real-time features for apps of any size](https://evilmartians.com/chronicles/enter-anycable-v1-4-reliable-real-time-features-for-apps-of-any-size.md): AnyCable 1.4 is here with major improvements like Reliable Streams, Resumable Sessions, simplified Heroku deployment, long-polling fallback, enhanced HotWire compatibility, and OCPP support. Realiable real-time features for apps of any size! - [How a year-long LeetCode habit upped my professional game](https://evilmartians.com/chronicles/how-a-year-long-leetcode-habit-upped-my-professional-game.md): Are algorithmic tasks like those on LeetCode useful for a developer beyond live-coding interview tasks? After spending a year developing a LeetCode habit, Nina Torgunakova answers the question and gives tips. - [“AI” marks the spot: a quick AI treasure map for businesses](https://evilmartians.com/chronicles/ai-marks-the-spot-a-quick-ai-treasure-map-for-businesses.md): AIs have been wowing everyone, but for businesses in particular, there's still even more lucrative AI exploration to do. We uncover lesser-known gems and inspiring success stories. - [Before your next frontend pull request, use this checklist](https://evilmartians.com/chronicles/before-your-next-frontend-pull-request-use-this-checklist.md): Frontend pull requests often contain common mistakes. Avoid them with this list of 7 small (but crucial) rules. - [How to turn an open source project into a profitable business](https://evilmartians.com/chronicles/how-to-turn-an-open-source-project-into-a-profitable-business.md): Success in the word of commercial open source remains an open question. To find your path, talk to your clients and understand their goals and pains; in this article, we look closer at the scene and ways forward. - [From Ruby to Crystal? Writing and distributing a CLI tool](https://evilmartians.com/chronicles/from-ruby-to-crystal-writing-and-distributing-a-cli-tool.md): We use the Crystal language to build a CLI tool, a coverage reporter for Coveralls, as a static binary and as a Homebrew tap - [Icon transcendence: customizing icons to complement fonts](https://evilmartians.com/chronicles/icon-transcendence-customizing-icons-to-complement-fonts.md): There are many lovely open source icon sets out there, but sometimes, we just need to 'transcend' them. Product Designer Gleb Stroganov shows us how to craft customized icons by leveraging product font styles, bridging two key interface elements—and giving our products some serious style. - [Go integration testing with courage and coverage](https://evilmartians.com/chronicles/go-integration-testing-with-courage-and-coverage.md): We explore different strategies for test coverage calculation in Go, including the recently added support for coverage profiling in Go 1.20. - [Don’t wait, let’s use the browser Contact Picker API now](https://evilmartians.com/chronicles/dont-wait-lets-use-browser-contact-picker-api-now.md): We’ll explain and demo the browser Contact Picker API. Contact Picker features have been ubiquitous in native mobile apps for a long time. Browser adoption has finally picked up enough and it’s time to implement these features there, too. - [Ruby Bytes, or generating standalone generators](https://evilmartians.com/chronicles/ruby-bytes-or-generating-standalone-generators.md): Introducing Ruby Bytes, a toolkit to build, install and deploy Ruby and Rails application templates. - [RuboCoping with legacy: Bring your Ruby code up to Standard](https://evilmartians.com/chronicles/rubocoping-with-legacy-bring-your-ruby-code-up-to-standard.md): How we introduce code style to mature Ruby/Rails projects with RuboCop and Standard. - [AnyCable off Rails: connecting Twilio streams with Hanami](https://evilmartians.com/chronicles/anycable-goes-off-rails-connecting-twilio-streams-with-hanami.md): How to use AnyCable-Go as a library to control any WebSocket client from Ruby by example: analyzing Twilio Media streams with Hanami. - [Cool frontend arts of local-first: storage, sync, conflicts](https://evilmartians.com/chronicles/cool-front-end-arts-of-local-first-storage-sync-and-conflicts.md): Web applications often require an internet connection, but a fair chunk can also work offline. We show frontend engineers how to gracefully implement the big 3 local-first solutions: storage, synchronization, and conflict resolutions. - [“Design first, then build”: let’s bury this myth forevermore](https://evilmartians.com/chronicles/design-first-then-build-lets-bury-this-myth-forevermore.md): Waiting to build your mobile or web app after all the mockups and designs are complete is an increasingly obsolete model. Let’s present an alternative that we've used to great success. - [Real-time magic, no elixirs: optimizing Sera with AnyCable](https://evilmartians.com/chronicles/real-time-magic-no-elixirs-optimizing-sera-with-anycable.md): We migrated a GPS tracker from Elixir to AnyCable and sped up the infrastructure based on AWS ECS, Fargate, and CloudFormation for Sera. - [How to avoid tricky async state manager pitfalls in React](https://evilmartians.com/chronicles/how-to-avoid-tricky-async-state-manager-pitfalls-react.md): Learn how to prevent some tricky problems in React that can arise when using asynchronous state managers and avoid breaking UIs, animations, and destroying UX - [OK, OKLCH: a color picker made to help think perceptively](https://evilmartians.com/chronicles/oklch-a-color-picker-made-to-help-think-perceptively.md): We designed the UI of the OKLCH Color Picker & Converter with education in mind as the driving design principle. Beyond being a handy tool, we aim to speed up familiarity and adoption of OKLCH and perceptual color spaces. - [UI design for HTTPie: macOS vibes for the API testing client](https://evilmartians.com/chronicles/ui-design-for-httpie-macos-vibes-for-the-api-testing-client.md): We helped HTTPie, a popular open source dev tool, design an eye-catching and sleek UI that now works as a competitive differentiator. - [How to build a better React map with Pigeon Maps and Mapbox](https://evilmartians.com/chronicles/how-to-build-a-better-react-map-with-pigeon-maps-and-mapbox.md): We needed a lightweight, essentially free solution for a customer map that would display our events in our React app. So we turned to Pigeon Maps and Mapbox, and here is how we made it. - [Decentralized app design: first aid for common dApp UI pains](https://evilmartians.com/chronicles/decentralized-app-design-first-aid-common-dapp-ui-pains.md): For designers in Web3, crafting UIs for blockchain-based decentralized applications (dApps) present their own challenges—here’s how to solve them. - [Midjourney vs. human illustrators: has AI already won?](https://evilmartians.com/chronicles/midjourney-vs-human-illustrators-has-ai-already-won.md): An experiment: we repeatedly give a typical work task to both a human artist and a text-to-image AI art generator. Who wins? - [Blend to my will! Fonts on cylinder objects in Blender](https://evilmartians.com/chronicles/blend-to-my-will-fonts-on-cylinder-objects-in-blender.md): Making an illustration for a phone input UI: rendering the shape, curving text around it, and animating it. - [Realtime text analysis with Word Tagger: recipe reader, part 2](https://evilmartians.com/chronicles/realtime-text-analysis-with-word-tagger-recipe-reader-part-2.md): In this article, iOS developers finish off a recipe reader. Getting text from images, analyze the findings, and convert them into usable class objects with the help of Word Tagger in Create ML. - [One does not simply design: designers as product owners](https://evilmartians.com/chronicles/one-does-not-simply-design-designers-as-product-owners.md): Here's how Product Designers can stick to an MVP mindset, take ownership of the product, be involved, and just get things done. - [Web Summit 2022: what you missed and how to be ready for next year](https://evilmartians.com/chronicles/web-summit-what-you-missed-how-to-be-ready-next-year.md): Evil Martians’ experience at Web Summit in Lisbon Portugal, presenting imgproxy, AnyCable, and more. Plus, tips for next year! - [ViewComponent in the Wild II: supercharging your components](https://evilmartians.com/chronicles/viewcomponent-in-the-wild-supercharging-your-components.md): Learn how to supercharge your ViewComponent-based code with various techniques that we use in our projects at Evil Martians. - [ViewComponent in the Wild I: building modern Rails frontends](https://evilmartians.com/chronicles/viewcomponent-in-the-wild-building-modern-rails-frontends.md): Learn why GitHub's ViewComponent library offers a great approach for building modern Ruby on Rails apps, and why you should give it a shot, too! - [RubyKaigi 2022: a report from an Evil Martian in Japan](https://evilmartians.com/chronicles/rubykaigi-a-report-from-an-evil-martian-in-japan.md): For Evil Martians' Japanese office, the annual RubyKaigi conference was the perfect chance to meet up with the local Ruby community. - [WebSocket Director: scenario-based integration tests for realtime apps](https://evilmartians.com/chronicles/websocket-director-scenario-based-integration-tests-for-real-time-apps.md): This post introduces WebSocket Director (wsdirector), a testing automation tool for WebSocket servers which uses human-readable scenarios stored in YAML or JSON files. - [The journey from CircleCI to GitHub Actions](https://evilmartians.com/chronicles/journey-from-circleci-to-github-actions.md): Take Ruby on Rails and Node.js projects from CircleCI to GitHub Actions with almost no changes, learn the differences between the two, and more! - [5 signs your project needs a design system](https://evilmartians.com/chronicles/5-signs-your-project-needs-a-design-system.md): Find out why your project would benefit from a shared set of practices and patterns between designers and frontend engineers. - [Martians unveiled: infusing a new site with extraterrestrial tech and soul](https://evilmartians.com/chronicles/martians-unveiled-infusing-a-new-site-with-extraterrestrial-tech-and-soul.md): We've launched our new website after years of anticipation and a ton of collaboration! This article explains why and how, and reveals the tech behind it. - [The sword is yours: transferring projects to another team unscathed](https://evilmartians.com/chronicles/the-sword-is-yours-transferring-projects-to-another-team-unscathed.md): A complete look at how we successfully hand off projects to another team. - [Lefthook: refactoring the Git Hooks automation tool back into shape](https://evilmartians.com/chronicles/lefthook-refactoring-the-git-hooks-automation-tool-back-into-shape.md): Our refactoring process in action: our small Go app for automating Git Hooks actions becomes maintainable. - [Taking off the Heroku training wheels: the Rails preflight checklist](https://evilmartians.com/chronicles/taking-off-the-heroku-training-wheels-the-rails-preflight-checklist.md): An opinionated guide for small teams on setting up Heroku to deploy Rails applications—with pleasure. - [Phone inputs and you: the designer's essential UI guide](https://evilmartians.com/chronicles/phone-inputs-and-you-the-designers-essential-ui-guide.md): Phone inputs are everywhere on the web, but there are more UI and UX considerations implementing them than appear at first glance. - [And they lived happily ever after… the M&A](https://evilmartians.com/chronicles/and-they-lived-happily-ever-after-the-m-and-a.md): Merger and acquisition advice to take before the deal so everyone will live happily ever after. - [Smartly contracted: UI design and frontend for Certora](https://evilmartians.com/chronicles/smartly-contracted-ui-design-and-frontend-for-certora.md): Building a handy VS Code plugin for analyzing the verification results in the IDE for Certora. - [Down the caching‑hole: adventures in 'HTTP caching and Faraday' land](https://evilmartians.com/chronicles/down-the-caching-hole-adventures-in-http-caching-and-faraday-land.md): Learn about HTTP caches, how Faraday middleware work, and how to use them to automagically start caching API calls. - [The joy of Variable Fonts: getting started on the Frontend](https://evilmartians.com/chronicles/the-joy-of-variable-fonts-getting-started-on-the-frontend.md): Get set up with variable fonts on the frontend: properly load them, deal with settings, look at 'gotchas' and more! - [Vite-lizing Rails: get live reload and hot replacement with Vite Ruby](https://evilmartians.com/chronicles/vite-lizing-rails-get-live-reload-and-hot-replacement-with-vite-ruby.md): How to use Vite.js to manage assets in Rails 7 applications with a hybrid or fully Dockerized development environment - [Collaborative real-time security: Logux for Akeero](https://evilmartians.com/chronicles/collaborative-real-time-security-logux-for-akeero.md): Building a visual diagram composer with optimistic UI and real-time features based on Logux - [How to make absolutely any app look like a macOS app](https://evilmartians.com/chronicles/how-to-make-absolutely-any-app-look-like-a-macos-app.md): This quick article explains a few key UI features to keep in mind if you want to mimic the feel and look of a macOS desktop app. - [Building FEED: the tech behind the app](https://evilmartians.com/chronicles/building-feed-the-tech-behind-the-app.md): Martians built the FEED video iOS app from scratch: mobile development, backend, machine learning systems, and SRE - [Figma DIY: Building a color system plugin](https://evilmartians.com/chronicles/figma-diy-building-a-color-system-plugin.md): Build a missing feature for Figma to create a flexible color system for your design project - [How to use P3 colors with SVGs](https://evilmartians.com/chronicles/how-to-use-p3-colors-in-svg.md): How to make SVGs with P3 wide gamut colors for modern displays and fallbacks for old browsers and monitors - [Soft deletion with PostgreSQL: but with logic on the database!](https://evilmartians.com/chronicles/soft-deletion-with-postgresql-but-with-logic-on-the-database.md): Rubyists might take special pleasure here, but every SQL and PostgreSQL dev can learn this unorthodox approach: putting soft delete logic on the database side. - [eBaymag magic: under the hood of the international eBay spinoff](https://evilmartians.com/chronicles/ebaymag-magic-under-the-hood-of-ebay-product.md): Here's the story of how Evil Martians operated as the core tech team developing an eBay spin-off serving sellers in 120 countries - [Realtime text analysis with Word Tagger: pro computer vision, part 1](https://evilmartians.com/chronicles/realtime-text-analysis-word-tagger-pro-computer-vision-part-1.md): In this article, iOS developers can check out how to grab text from images, analyze the findings, and convert them into usable class objects with the help of Word Tagger in Create ML. - [A slice of life: table partitioning in PostgreSQL databases](https://evilmartians.com/chronicles/a-slice-of-life-table-partitioning-in-postgresql-databases.md): In this article, Ruby on Rails developers (and backend engineers in general) can learn to implement table partitioning in PostgreSQL databases and explore common problems and pitfalls. - [Variable fonts in real life: how to use and love them](https://evilmartians.com/chronicles/variable-fonts-in-real-life-how-to-use-and-love-them.md): A look at variable fonts in real life. Everything’s here: practical examples, file optimization and accessibility benefits, and… the future! - [Object Detection with Create ML: training and demo app](https://evilmartians.com/chronicles/object-detection-with-create-ml-training-and-demo-app.md): iOS devs learn object detection for Apple tech: Create ML, training, Full Network, and project integration. - [Object Detection with Create ML: images and dataset](https://evilmartians.com/chronicles/object-detection-with-create-ml-images-and-dataset.md): iOS devs learn object detection for Apple tech: Create ML, Core ML, data collection, annotation, and dataset export - [Our slice of the metaverse: 7 key AR features for iOS devs](https://evilmartians.com/chronicles/our-slice-of-the-metaverse-7-key-ar-features-for-ios-devs.md): Martian iOS Engineer Russ St Amant covers 7 key AR features every dev needs in their toolkit to make this modern-day magic possible! - [AI and the auteur: using neural networks as artistic tools](https://evilmartians.com/chronicles/ai-and-the-auteur-using-neural-networks-as-artistic-tools.md): Follow the SunGaz AI art project from start to finish as machine learning, neutral networks, and human creativity create internationally-exhibited art. - [Comms Pro: building a social video app for FEED](https://evilmartians.com/chronicles/comms-pro-building-a-social-video-app-for-feed.md): Martians built the FEED video iOS app from scratch: mobile development, backend, machine learning systems, and SRE - [Kubing Rails: stressless Kubernetes deployments with Kuby](https://evilmartians.com/chronicles/kubing-rails-stressless-kubernetes-deployments-with-kuby.md): Exploring the Kuby framework for deploying Rails and AnyCable application to Kubernetes and introducing the kuby-anycable plugin - [The Martian Design Sprint: starting and running projects faster](https://evilmartians.com/chronicles/the-martian-design-sprint-starting-and-running-projects-faster.md): Overview of the Martian Design Sprint, helping customers understand their project, goals, and get development started off on the right foot - [TimescaleDB: integrating time-series data with Ruby on Rails](https://evilmartians.com/chronicles/time-series-data-using-timescaledb-with-ruby-on-rails.md): Overview of TimescaleDB highlights. Understanding time-series data. Integrating with Ruby on Rails. Implementing views counter demo - [A no-go fantasy: writing Go in Ruby with Ruby Next](https://evilmartians.com/chronicles/a-no-go-fantasy-writing-go-in-ruby-with-ruby-next.md): Dive into both the Ruby and Go languages, learn to write Go in Ruby, and gain the ability to modify Ruby exactly as you desire - [What could Go wrong with a mutex, or the Go profiling story](https://evilmartians.com/chronicles/what-could-go-wrong-with-a-mutex-or-the-go-profiling-story.md): Profiling Go stacktrace dumps and taking a deep look into how read-write mutexes work - [Pro becomes smart: imgproxy Pro engages machine learning](https://evilmartians.com/chronicles/pro-becomes-smart-imgproxy-pro-engages-machine-learning.md): Welcome to imgproxy Pro 3.0, packed with object-oriented crop gravity, blurring and drawing detections, and auto-quality by SSIM - [The tale of Sprockets and Webpacker duality](https://evilmartians.com/chronicles/the-tale-of-sprockets-and-webpacker-duality.md): How to migrate a large Rails application from Sprockets to Webpacker using a dual build strategy - [Real-time stress: AnyCable, k6, WebSockets, and Yabeda](https://evilmartians.com/chronicles/real-time-stress-anycable-k6-websockets-and-yabeda.md): Introducing a k6 plugin to load test WebSockets and instrumenting the application under test with Yabeda, Prometheus and Grafana - [SPA hexagon: Robust app architecture for mobile and web](https://evilmartians.com/chronicles/spa-hexagon-robust-app-architecture-for-mobile-and-web.md): See how to adapt a classic hexagonal architecture to single page applications with React Native and TypeScript - [One row, many threads: How to avoid database duplicates in Rails applications](https://evilmartians.com/chronicles/one-row-many-threads-how-to-avoid-database-duplicates-in-rails-applications.md): A primer on avoiding duplicates in database tables that back your multi-threaded Rails applications with runnable examples - [Decoding AVIF: Deep dive with cats and imgproxy](https://evilmartians.com/chronicles/decoding-avif-deep-dive-with-cats-and-imgproxy.md): It is time to talk seriously about AVIF, how it is different from predecessors, and how to start using it for web images today with the help of dead-simple and reliable self-hosted image converter from Evil Martians - [Introducing JavaScript and TypeScript client for AnyCable](https://evilmartians.com/chronicles/introducing-anycable-javascript-and-typescript-client.md): Introducing AnyCable JS/TS SDK, a powerful and extensible library to communicate with Action Cable and AnyCable WebSocket servers - [Accessible design from the get-go](https://evilmartians.com/chronicles/accessible-design-from-the-get-go.md): 20% of designer effort that can take care of 80% of a11y challenges - [Designing Machine Learning for DVC Studio](https://evilmartians.com/chronicles/designing-machine-learning-for-dvc-studio.md): How we built a sophisticated, professional user interface for DVC Studio—a tool that helps Machine Learning engineers to run and track their experiments - [Custom "cops" for RuboCop: an emergency service for your Ruby code](https://evilmartians.com/chronicles/custom-cops-for-rubocop-an-emergency-service-for-your-codebase.md): Learn to write custom rules for RuboCop, test them, and extract into a gem for reuse - [AnyCable Goes Pro: Fast WebSockets for Ruby, at scale](https://evilmartians.com/chronicles/anycable-goes-pro-fast-websockets-for-ruby-at-scale.md): Introducing AnyCable Pro. The fast and robust drop-in extension for Action Cable aimed at Rails and pure Ruby projects adds commercial features on top of the open codebase - [Premium design: Building a mobile app for Loewe](https://evilmartians.com/chronicles/premium-design-building-a-mobile-app-for-loewe.md): How to build an award-winning mobile app: for Loewe, we delivered UI design and developed a React Native application for iOS and Android, an API on the backend, and a back office interface - [A broader picture: A guide on imgproxy for businesses](https://evilmartians.com/chronicles/a-broader-picture-a-guide-on-imgproxy-for-businesses.md): A detailed guide on cost-effective, on-the-fly image processing and image resizing with imgproxy, an OSS project with out-of-the-box features tailorable to your business. - [Hotwire: Reactive Rails with no JavaScript?](https://evilmartians.com/chronicles/hotwire-reactive-rails-with-no-javascript.md): Take a deep dive into building reactive Rails applications with Hotwire Turbo and only a pinch of custom JavaScript. This article compliments the RailsConf 2021 talk by Vladimir Dementyev. - [Set up Tailwind CSS JIT in a Rails project to compile styles 20x faster](https://evilmartians.com/chronicles/set-up-tailwind-css-jit-in-a-rails-project-to-compile-styles-20x-faster.md): How to switch to Tailwind CSS JIT when using Ruby on Rails and Webpacker. - [Build images on GitHub Actions with Docker layer caching](https://evilmartians.com/chronicles/build-images-on-github-actions-with-docker-layer-caching.md): Cut your Docker build times by half by leveraging the power BuildKit and buildx on a GitHub Action runner. Enable Docker layer caching for your production builds and save time and money. See full YAML example for a production build of a Rails application. - [Serverless TypeScript: A complete setup for AWS SAM Lambdas](https://evilmartians.com/chronicles/serverless-typescript-a-complete-setup-for-aws-sam-lambda.md): An ultimate serverless TypeScript workflow for Lambdas on AWS SAM that supports testing, debugging, and minimizing your Lambdas through partial compilation and shared layers - [Logidze 1.0: Active Record, Postgres, Rails, and time travel](https://evilmartians.com/chronicles/logidze-1-0-active-record-postgresql-rails-and-time-travel.md): Learn about Logidze 1.0, a performant Ruby library that tracks Active Record changes using PostgreSQL triggers and JSONB stores. - [Social background: Martians behind eBay Social's tech](https://evilmartians.com/chronicles/social-background-martians-behind-ebay-social-tech.md): Who's the core tech team for eBay Bonus cashback service, one of eBay's spin-offs? Discover what have Martians done in this project - [Climbing Steep hills, or adopting Ruby 3 types with RBS](https://evilmartians.com/chronicles/climbing-steep-hills-or-adopting-ruby-types.md): A deep dive into adding Ruby Type Signatures to existing projects and using Steep to perform type checking. - [Reusable development containers with Docker Compose and Dip](https://evilmartians.com/chronicles/reusable-development-containers-with-docker-compose-and-dip.md): Run and test your code in multiple environments with minimal effort while keeping Docker Compose files under control with Dip. Examples for Ruby, Node.js, and Erlang. - [How to GraphQL with Ruby, Rails, Active Record, and no N+1](https://evilmartians.com/chronicles/how-to-graphql-with-ruby-rails-active-record-and-no-n-plus-one.md): An exhaustive hands-on guide for dealing with N+1 problem in database-backed Ruby or Rails applications that use Active Record and serve the GraphQL APIs - [Big refactoring: Fix that app for Fund That Flip](https://evilmartians.com/chronicles/big-refactoring-fix-that-app-for-fund-that-flip.md): Helping the Fund That Flip lending platform in key features delivery and performance optimization to make the US finest house flipping - [Squash N+1 queries early with n_plus_one_control test matchers for Ruby and Rails](https://evilmartians.com/chronicles/squash-n-plus-one-queries-early-with-n-plus-one-control-test-matchers-for-ruby-and-rails.md): Discover the performance testing alternative to detecting N+1 query problem in your Rails and pure Ruby applications - [Finding growth: how to hack eBaymag with Growth Hacking](https://evilmartians.com/chronicles/finding-growth-how-to-hack-ebaymag-with-growth-hacking.md): A tutorial on Growth Hacking for engineers, based on a true story of eBaymag that brought the revenue boost with no dark patterns - [Easy multi-language, multi-version documentation with Docsify, Git, and GitHub Actions](https://evilmartians.com/chronicles/easy-multi-language-multi-version-documentation-with-docsify-git-and-github-actions.md): How to maintain your growing documentation website and introduce multiple versions and languages with Docsify using nothing but Git and GitHub - [PostCSS 8.0: Plugin migration guide](https://evilmartians.com/chronicles/postcss-8-plugin-migration.md): How to migrate your plugins to use the new API in PostCSS 8.0 for better performance and smaller node_modules - [System of a test II: Robust Rails browser testing with SitePrism](https://evilmartians.com/chronicles/system-of-a-test-2-robust-rails-browser-testing-with-siteprism.md): Decouple your Capybara tests from HTML markup specifics with the help of SitePrism and a Page Object Model - [Cloud Teleport: Building access plugins for Gravitational](https://evilmartians.com/chronicles/cloud-teleport-building-access-plugins-for-gravitational.md): A perfect match: Martians designed Slack, Jira, Mattermost, GitLab, PagerDuty integrations for approval workflows in Teleport OSS platform for engineers - [Hands-on WebAssembly: Try the basics](https://evilmartians.com/chronicles/hands-on-webassembly-try-the-basics.md): Learn the basics of WebAssembly through code examples and try different ways to compile C and Rust programs for the browser with the help of Docker image from Evil Martians. - [System of a test: Proper browser testing in Ruby on Rails](https://evilmartians.com/chronicles/system-of-a-test-setting-up-end-to-end-rails-testing.md): Discover the best practices for end-to-end browser testing in Ruby on Rails: Ferrum instead of Selenium, CDP, Docker - [Apollo launch: Building a migration architecture for 2U](https://evilmartians.com/chronicles/apollo-launch-building-a-migration-architecture-for-2u.md): We designed the architecture to migrate 2U development to Apollo GraphQL Federation with zero downtime and fewer costs - [AnyCable 1.0: Four years of real-time web with Ruby and Go](https://evilmartians.com/chronicles/anycable-1-0-four-years-of-real-time-web-with-ruby-and-go.md): Learn about AnyCable 1.0, a fast and robust drop-in extension for Action Cable, partly written in Go, for use in Rails and pure Ruby projects. - [Power for Kadenze: More performance, less cloud costs](https://evilmartians.com/chronicles/power-for-kadenze-more-performance-less-cloud-costs.md): Need to scale due to a demand spike and cut cloud infrastructure costs at the same time? Get some insights from the Kadenze story. - [Figma Auto Layout: Practical tips for dynamic designs](https://evilmartians.com/chronicles/figma-auto-layout-practical-tips-for-dynamic-designs.md): Learn Auto Layout tricks directly from Evil Martians designers to supercharge your Figma fu; grab youself some reusable components for free. - [Desktop frontier: Video app optimization for Lowkey](https://evilmartians.com/chronicles/desktop-frontier-video-app-optimization-for-lowkey.md): Bridging web and Windows apps in esports: how we optimized the performance of Lowkey's Electron-based application - [Keep up with the Tines: Rails frontend revamp](https://evilmartians.com/chronicles/keep-up-with-the-tines-a-rails-frontend-revamp.md): See how we breathed new life into a Ruby on Rails + jQuery + CoffeeScript frontend with React.js, Webpacker, TypeScript, MobX, and switching to GraphQL on the backend - [Product design that sells: the smart UX for Tines](https://evilmartians.com/chronicles/product-design-that-sells-the-smart-ux-for-tines.md): A visually pleasing case study about smart UX design that helped attract valuable customers for Tines - [Catch a batch: Making Mayhem 5 times more responsive](https://evilmartians.com/chronicles/catch-a-batch-making-mayhem-5-times-more-responsive.md): Achieving 5X faster server response: the lessons we learned during a 2-month project with Mayhem gaming startup - [Ruby Next: Make all Rubies quack alike](https://evilmartians.com/chronicles/ruby-next-make-all-rubies-quack-alike.md): Introducing Ruby Next, a transpiler for Ruby. - [Anyway Config: Keep your Ruby configuration sane](https://evilmartians.com/chronicles/anyway-config-keep-your-ruby-configuration-sane.md): Get your Ruby project out of ENV Hell with anyway_config: the framework for managing your application's configuration. - [PostCSS 8.0 is coming: Here's what it brings](https://evilmartians.com/chronicles/postcss-8-is-coming-here-is-what-it-brings.md): Leaner node_modules, faster builds with the visitor API, dropping Babel for development, and more—thanks to your support - [Beyond fashion: Deep Learning with Catalyst](https://evilmartians.com/chronicles/beyond-fashion-deep-learning-with-catalyst.md): Step-by-step tutorial for setting up a deep learning pipeline with Catalyst and deploying the model to production. - [What I learned as a developer from accidents in space](https://evilmartians.com/chronicles/what-i-learned-as-a-developer-from-accidents-in-space.md): How Soviet space tales help the creator of PostCSS to follow best practices in development. - [New home for Logux: Pouring love into an OSS documentation website](https://evilmartians.com/chronicles/new-home-for-logux-pouring-love-into-an-oss-documentation-website.md): How we built a 17 KB website with a perfect Lighthouse score while experimenting with UX and DX - [Pulling the trigger: How to update counter caches in your Rails app without Active Record callbacks](https://evilmartians.com/chronicles/pulling-the-trigger-how-to-update-counter-caches-in-you-rails-app-without-active-record-callbacks.md): Keeping your counter caches in sync using nothing but database triggers - [Persisted queries in GraphQL: Slim down Apollo requests to your Ruby application](https://evilmartians.com/chronicles/persisted-queries-in-graphql-slim-down-apollo-requests-to-your-ruby-application.md): How to set up persisted queries between a Ruby GraphQL application and an Apollo client - [Images done right: Web graphics, good to the last byte](https://evilmartians.com/chronicles/images-done-right-web-graphics-good-to-the-last-byte-optimization-techniques.md): Start taking graphics on the web seriously and boost your applications' performance by learning the essentials about digital image formats. - [GitHub Actions: First impressions](https://evilmartians.com/chronicles/github-actions-first-impressions.md): A taste of GitHub Actions for managing open source projects - [Keeping OSS documentation in check with docsify, Lefthook, and friends](https://evilmartians.com/chronicles/keeping-oss-documentation-in-check-with-docsify-lefthook-and-friends.md): A tutorial for building a perfect CI setup for generating your open source documentation - [Fullstaq Ruby: First impressions, and how to migrate your Docker/Kubernetes Ruby apps today](https://evilmartians.com/chronicles/fullstaq-ruby-first-impressions-and-how-to-migrate-your-docker-kubernetes-ruby-apps-today.md): Learn how to reduce your application memory consumption with new Ruby distribution. - [Speeding up Go Modules for Docker and CI](https://evilmartians.com/chronicles/speeding-up-go-modules-for-docker-and-ci.md): Finally, the Golang world has a built-in, conventional dependency manager in the ecosystem: Go Modules. What began in Go 1.11 as an opt-in feature has become widely adopted by the community, and we are so close to Go 1.13 when Go Modules will be enabled by default. The delightful dilemma of choosing the “best” tool can be finally resolved. - [Lefthook: knock your team’s code back into shape](https://evilmartians.com/chronicles/lefthook-knock-your-teams-code-back-into-shape.md): Meet Lefthook, the fastest polyglot Git hooks manager in our galaxy that requires zero setup from your contributors - [Reporting non-nullable violations in graphql-ruby properly](https://evilmartians.com/chronicles/reporting-non-nullable-violations-in-graphql-ruby-properly.md): Learn how to report about certain flaws in your GraphQL API to your error tracker in the right way. - [GraphQL on Rails: On the way to perfection](https://evilmartians.com/chronicles/graphql-on-rails-3-on-the-way-to-perfection.md): A hitchhiker’s guide to developing GraphQL applications with Rails and Apollo, part 3: cleaning up the code and setting up subscriptions - [Lefthook, Crystalball, and git magic for smooth development experience](https://evilmartians.com/chronicles/lefthook-crystalball-and-git-magic.md): Learn how to make git hooks to do most routine tasks for you: install gems, migrate the database, run tests, and linters. - [Asynchronous adventures: Aborting queries and mutations in react-apollo](https://evilmartians.com/chronicles/aborting-queries-and-mutations-in-react-apollo.md): How to cancel a mutation in Apollo with the help of AbortController. - [Danger on Rails: make robots do some code review for you!](https://evilmartians.com/chronicles/danger-on-rails-make-robots-do-some-code-review-for-you.md): Automating code reviews with Danger. - [Sorbetting a gem, or the story of the first adoption](https://evilmartians.com/chronicles/sorbetting-a-gem.md): The story of integrating Sorbet type checker into a Ruby gem development. - [GraphQL on Rails: Updating the data](https://evilmartians.com/chronicles/graphql-on-rails-2-updating-the-data.md): A hitchhiker’s guide to developing GraphQL applications with Rails and Apollo, part 2: how to implement the authentication and use mutations to update the data - [Normalization, consistency, and Clowne](https://evilmartians.com/chronicles/normalization-consistency-and-clowne.md): Dealing with database normalization problems in Ruby with the help of Clowne v1.0. - [GraphQL on Rails: From zero to the first query](https://evilmartians.com/chronicles/graphql-on-rails-1-from-zero-to-the-first-query.md): A hitchhiker’s guide to developing GraphQL applications with Rails and React/Apollo. Part 1: how to make your first query to your own GraphQL server - [A fixture-based approach to interface testing in Rails](https://evilmartians.com/chronicles/a-fixture-based-approach-to-interface-testing-in-rails.md): A fixture-based approach to interface testing in Rails. - [Exposing permissions in GraphQL APIs with Action Policy](https://evilmartians.com/chronicles/exposing-permissions-in-graphql-apis-with-action-policy.md): Add authorization-related fields to GraphQL schema using Action Policy to tell clients which actions are allowed and not. - [RubyKaigi 2019: A speaker’s report](https://evilmartians.com/chronicles/rubykaigi-2019-a-speakers-report.md): Andrey Novikov’s report on RubyKaigi 2019 from the speaker’s point of view - [Rails 6: B-Sides and Rarities](https://evilmartians.com/chronicles/rails-6-b-sides-and-rarities.md): Discover lesser-known Rails 6 features that stay out of the spotlight but can bring a lot to your current applications. - [Active Storage meets GraphQL pt. 2: exposing attachment URLs](https://evilmartians.com/chronicles/active-storage-meets-graphql-pt-2-exposing-attachment-urls.md): Serving files with Active Storage and GraphQL. - [Storeon: "Redux" in 173 bytes](https://evilmartians.com/chronicles/storeon-redux-in-173-bytes.md): Meet a tiny state manager for frontend applications close in spirit to Redux that fits into 173 bytes. - [Try Astrograph: Your GraphQL lens for Stellar blockchain](https://evilmartians.com/chronicles/try-astrograph-your-graphql-lens-for-stellar-blockchain.md): Blockchain meets GraphQL with the first release of a server for exploring Stellar network through a single endpoint. - [Active Storage meets GraphQL: Direct Uploads](https://evilmartians.com/chronicles/active-storage-meets-graphql-direct-uploads.md): Integrating Active Storage direct uploads into GraphQL Ruby project - [Faster WebGL/Three.js 3D graphics with OffscreenCanvas and Web Workers](https://evilmartians.com/chronicles/faster-webgl-three-js-3d-graphics-with-offscreencanvas-and-web-workers.md): Use the combination of OffscreenCanvas and Web Workers with my offscreen-canvas library to make your Three.js WebGL apps more performant even on low-end devices while keeping support for all browsers. - [Cables vs. malloc_trim, or yet another Ruby memory usage benchmark](https://evilmartians.com/chronicles/cables-vs-malloc_trim-or-yet-another-ruby-memory-usage-benchmark.md): Benchmarking Action Cable memory usage. - [Wrapping JSON-based ActiveRecord attributes with classes](https://evilmartians.com/chronicles/wrapping-json-based-active-record-attributes-with-classes.md): This post will teach you how to wrap JSON-based DB columns with ActiveModel-like classes easily. - [Rails profiling story, or how I caught Faker trying to teach my app Australian Slang](https://evilmartians.com/chronicles/rails-profiling-story-or-how-i-caught-faker-trying-to-teach-my-app-australian-slang.md): Profile application boot time using test-prof, stackprof, and memory_profiler to measure the impact of loading tons of locales for Faker gem. - [Carve your controllers like Papa Carlo](https://evilmartians.com/chronicles/rubanok-carve-your-rails-controllers-like-papa-carlo.md): Slimming down Rails controllers using the Rubanok gem. - [Anonymous web authentication with Stellar blockchain](https://evilmartians.com/chronicles/anonymous-web-authentication-with-stellar-blockchain.md): Learn how to implement anonymous blockchain-based web authentication with Stellar, JavaScript and Node.js - [CSS and JS are at war, here’s how to stop it](https://evilmartians.com/chronicles/css-and-js-are-at-war-heres-how-to-stop-it.md): There are a lot of people who love both JS and UX/CSS. If we stop labeling people just as "JS developers" or "UX developers", we can achieve a ceasefire in the current "JS vs. CSS" war and achieve a mutually benefiting peace. - [Crafting user notifications in Rails with Active Delivery](https://evilmartians.com/chronicles/crafting-user-notifications-in-rails-with-active-delivery.md): Introducing active_delivery and abstract_notifier Ruby gems. - [My Ruby 2018: Around the world in nine conferences](https://evilmartians.com/chronicles/my-ruby-2018-around-the-world-in-nine-conferences.md): How I traveled to, and talked at nine Ruby events around the world in one year. - [Big on Heroku: Scaling Fountain without losing a drop](https://evilmartians.com/chronicles/big-on-heroku-scaling-fountain-without-losing-a-drop.md): How to get the most out of Heroku when scaling a successful startup. - [Errors in Go: From denial to acceptance](https://evilmartians.com/chronicles/errors-in-go-from-denial-to-acceptance.md): Practical advice on getting the most out of handling errors "the Go way" from the creator of imgproxy and Overmind. - [Five years of PostCSS: State of the Union](https://evilmartians.com/chronicles/five-years-of-postcss-state-of-the-union.md): Andrey Sitnik on the past, the present and the future of PostCSS: a state of the union address on the 5th anniversary. - [How a month without computers changed me](https://evilmartians.com/chronicles/how-a-month-without-computers-changed-me.md): I have sent a message to my family and delegated my open source projects to my friends. With my last tweet sent, I turn off my laptop, phone, and tablet. My Digital Sabbath begins in 10 minutes: no digital devices for the next month. - [Meet Yabeda: A Ruby instrumentation framework](https://evilmartians.com/chronicles/meet-yabeda-modular-framework-for-instrumenting-ruby-applications.md): Adopt metrics-driven development with an extendable framework that supports Rails, Sidekiq and Prometheus out of the box. - [Learning how to learn deep learning](https://evilmartians.com/chronicles/learning-how-to-learn-deep-learning.md): Tips from a Ruby developer and team lead turned deep learning enthusiast on how to start with Deep Learning and not get discouraged. - [Lean by design: 5 wins for one product](https://evilmartians.com/chronicles/lean-by-design-5-wins-for-one-product.md): Five principles that helped us change the way we run product development at eBaymag.com as the project started to scale - [The silence of the Ruby exceptions: a Rails/PostgreSQL database transaction thriller](https://evilmartians.com/chronicles/the-silence-of-the-ruby-exceptions-a-rails-postgresql-database-transaction-thriller.md): Here comes a tale on why you should never silence errors inside database transactions. Learn how to use transactions properly and what to do when using them is not an option. Spoiler: use PostgreSQL advisory locks! - [Painless migration of existing Helm’s Tiller setup to Kubernetes Secrets](https://evilmartians.com/chronicles/migration-of-existing-helm-tiller-setup-to-kubernetes-secrets.md): Meet a command-line tool that solves a security problem with Helm installations by replacing unencrypted ConfigMaps for Tiller with industry-standard Kubernetes Secrets. - [Level up for UX: Design lessons from video games](https://evilmartians.com/chronicles/level-up-for-ux-design-lessons-from-videogames.md): Take clues from video games, learn the psychology behind them, and apply those tricks to your product's user experience. - [Living in sin (with Spring)](https://evilmartians.com/chronicles/living-in-sin-with-spring.md): A couple of tricks on using Spring in Ruby development. - [Stick with security: YubiKey, SSH, GnuPG, macOS](https://evilmartians.com/chronicles/stick-with-security-yubikey-ssh-gnupg-macos.md): See how to go beyond standard U2F functionality of your YubiKey and authenticate via SSH from a Mac with a PGP key on a USB stick. - [Is React Native podium-ready?](https://evilmartians.com/chronicles/is-react-native-podium-ready.md): How we embraced React Native while helping Podium to execute a new product strategy, and why we did not regret it. If you are considering React Native for your startup—our story may help you decide. - [Deploying Ruby apps to Google Cloud Kubernetes Engine continuously with CircleCI](https://evilmartians.com/chronicles/deploying-ruby-apps-to-google-cloud-kubernetes-engine-circleci.md): A step-by-step How-To on deploying Ruby applications to Google Cloud Kubernetes Engine with CircleCI - [Scroll to the future](https://evilmartians.com/chronicles/scroll-to-the-future-modern-javascript-css-scrolling-implementations.md): Everything you always wanted to know about implementing scrolling but were afraid to ask. We have scrolled to the bottom of modern web specifications to take you on a whirlwind tour of latest CSS and JavaScript features that make navigating around a single page smooth, beautiful and less resource-hungry. - [Optimizing React: Virtual DOM explained](https://evilmartians.com/chronicles/optimizing-react-virtual-dom-explained.md): Learn about React's Virtual DOM and use this knowledge to speed up your applications. In this thorough beginner-friendly introduction to framework's internals, we will demystify JSX, show you how React makes rendering decisions, explain how to find bottlenecks, and share some tips to avoid common mistakes. - [Clowne: Clone Ruby models with a smile](https://evilmartians.com/chronicles/clowne-clone-ruby-models-with-a-smile.md): Meet Clowne—a flexible tool for all your model cloning needs that comes with no strings attached. Your application does not have to be Rails or use Active Record. This Ruby gem shines at a common task: duplicating business logic entities. Read on to see how Clowne does the trick on an all too familiar e-commerce case. - [Rails’ after_commit everywhere](https://evilmartians.com/chronicles/rails-after_commit-everywhere.md): How to run arbitrary code on successful DB transaction. - [Speaking with an accent](https://evilmartians.com/chronicles/speaking-with-an-accent.md): Speaking with an accent, and getting over it. Read these tips from Andrey Sitnik, lead frontend developer at Evil Martians, creator of Autoprefixer and PostCSS, and learn how to get out of your comfort zone and on a major tech conference stage, even if your spoken English lags behind your programming skills. - [Rails 5.2: Active Storage and beyond](https://evilmartians.com/chronicles/rails-5-2-active-storage-and-beyond.md): See what's new in Rails 5.2 and try its brand new Active Storage framework for file uploads with our detailed hands-on guide. Also covering Credentials, Current singleton, CSP configuration, Bootsnap. - [Evil Front Part 3: Modern Frontend in Rails](https://evilmartians.com/chronicles/evil-front-part-3.md): An opinionated guide to modern, modular, component-based approach to handling your presentation logic in Rails that does not depend on any frontend framework. Follow this three-part tutorial to learn the bare minimum of up-to-date frontend techniques by example and finally make sense of it all. Part 3: using Action Cable as npm package with Webpack, deploying "sprocketless" Rails application to Heroku. - [Evil Front Part 2: Modern Frontend in Rails](https://evilmartians.com/chronicles/evil-front-part-2.md): An opinionated guide to modern, modular, component-based approach to handling your presentation logic in Rails that does not depend on any frontend framework. Follow this three-part tutorial to learn the bare minimum of up-to-date frontend techniques by example and finally make sense of it all. Part 2: building static chat page with components, introducing helpers and generators - [Evil Front Part 1: Modern Frontend in Rails](https://evilmartians.com/chronicles/evil-front-part-1.md): An opinionated guide to modern, modular, component-based approach to handling your presentation logic in Rails that does not depend on any frontend framework. Follow our three-part tutorial to learn the bare minimum of up-to-date frontend techniques by example and finally make sense of it all. Part 1: goodbye Asset Pipeline, code organization, linting. - [Zero downtime rebranding](https://evilmartians.com/chronicles/zero-downtime-rebranding.md): Learn how to migrate your Heroku-hosted application from one domain name to another. See how to rewire an existing Rails project and make it work with multiple domains on the same Heroku instance. SSL caveats are covered too - [Spend less on Google Translate](https://evilmartians.com/chronicles/spend-less-on-google-translate.md): We have open sourced an internal tool developed for eBaymag. It allowed us to spend three times less on Google Cloud Translation API. Learn the principle behind google_translate_diff gem and use it in your projects. - [Embracing metrics as new tests](https://evilmartians.com/chronicles/embracing-metrics-as-new-tests.md): What happens to your code after it is deployed? Learn how to add monitoring tools like Prometheus to your workflow and how to report to Prometheus from Ruby. - [Partition and conquer](https://evilmartians.com/chronicles/partition-and-conquer.md): How to perform partitioning in a large PostgreSQL table that is actively used in production with a Ruby on Rails application and not lose any data. Lessons from practice. - [imgproxy: Resize your images instantly and securely](https://evilmartians.com/chronicles/introducing-imgproxy.md): Learn how to use imgproxy, a simple, framework-agnostic microservice to handle all your image resizing needs quickly and securely. - [Size Limit: Make the Web lighter](https://evilmartians.com/chronicles/size-limit-make-the-web-lighter.md): Keep your JavaScript library or app size in check and find out what exactly makes your code bloat by using Size Limit. See how it can help you slim down the bundle considerably by following our example. - [Factories or fixtures? Give me both!](https://evilmartians.com/chronicles/factories-or-fixtures.md): How to use a mix of factories and fixtures in Ruby to test for large data structures - [Introducing Overmind and Hivemind](https://evilmartians.com/chronicles/introducing-overmind-and-hivemind.md): Never mind your usual Procfile manager, here’s Overmind and its little brother—Hivemind. Evil Martians use these tools over Foreman to manage Procfile-based applications for development. - [Fighting the Hydra of N+1 queries](https://evilmartians.com/chronicles/fighting-the-hydra-of-n-plus-one-queries.md): The N+1 problem in Rails: short intro, how to tame it, gem bullet, introducing gem rspec-sqlimit, ActiveSupport instrumentation. - [Autoprefixer 7.0 and Browserslist 2.0](https://evilmartians.com/chronicles/autoprefixer-7-browserslist-2-released.md): Autoprefixer 7.0 has been released! Learn about the key features—and why the addition of Browserslist 2.0 is the largest change. - [Open Source Software. What is in a poke?](https://evilmartians.com/chronicles/open-source-software-whats-in-a-poke.md): How could we explore and measure the quality of Ruby open source projects? I will share some insights and introduce a new open source SaaS for ranking RubyGems! - [AnyCable: Action Cable on steroids](https://evilmartians.com/chronicles/anycable-actioncable-on-steroids.md): This article tells the story of the AnyCable project that aims to increase Action Cable performance and capabilities. - [Handling errors in a non-geek interface](https://evilmartians.com/chronicles/handling-errors-in-a-non-geek-interface.md): Contemporary interfaces can be complicated, tieing a lot of data sources together: i.e., a contact list can be imported from the device’s local storage, user pics come from the cloud storage, and the status comes from a social network. The more data vendors you have, the bigger is the chance something may go wrong and cause a malfunction. - [Frontend Challenge Accepted: CSS 3D Cube](https://evilmartians.com/chronicles/frontend-challenge-accepted.md): Do you like challenges? Are you willing to take on a task that you’ve never come across before, and do it under a deadline? What if, in carrying out the task, you encounter a problem that appears unsolvable? I want to share my experience of using CSS 3D effects for the first time in a real project and to inspire you to take on challenges. - [Logidze: for all those tired of versioning data](https://evilmartians.com/chronicles/introducing-logidze.md): This article introduces the new tool for logging database records changes, Logidze. - [Compo: UI components in Sketch](https://evilmartians.com/chronicles/compo-sketch.md): Compo is a Sketch plugin that makes it easier to work with interface components. With Compo, pressing ⌘J is all it takes to turn a text layer into a button or put an existing component in order. - [PostgreSQL and Rails, sitting in a tree](https://evilmartians.com/chronicles/postgresql-and-rails-sitting-in-a-tree.md): ActiveRecord allows different approaches for storing hierarchical structures in a database. In this article, I will try to determine what pattern is best to use when it comes to huge data. - [PostCSS-modules: Isolate ’em all!](https://evilmartians.com/chronicles/postcss-modules-isolate-em-all.md): We’ve been struggling with global CSS for so many years. Now is the time to stop it. No matter what language or framework you use, CSS name clashing will never be an issue anymore. I’ll show you how to use PostCSS and PostCSS-modules to have it automatically dealt with at the server side. - [An invitation system using URL Schemes and Universal Links](https://evilmartians.com/chronicles/invitation-system-using-url-schemes-and-universal-links.md): Our experience in making an invitation system on iOS using URL Schemes and lately introduced Universal Links - [Bootstrap: an intervention](https://evilmartians.com/chronicles/bootstrap-an-intervention.md): One should always bear in mind that projects start as something simple and predictable—and later, as time goes by, they change beyond recognition. In the case of Bootstrap, it will be a huge problem while in the case of BEM or CSS Modules it will simply keep working. - [5 tips for dealing with heavy ActiveRecord dashboards in Rails](https://evilmartians.com/chronicles/5-tips-for-activerecord-dashboards.md): Of course, good performance is quite possible with ActiveRecord. However, for dashboards, the trick is that using ActiveRecord for fetching data doesn’t mean that you have to operate with ActiveRecord objects in views. - [How Ruby 2.2 can cause an out-of-memory server crash](https://evilmartians.com/chronicles/ruby-2_2-oom.md): Bad news—Ruby (MRI) can cause an out-of-memory server crash. The issue has first appeared with version 2.2.0-preview and remained ever since. - [PostCSS becomes 1.5x faster](https://evilmartians.com/chronicles/postcss-1_5x-faster.md): In this article, I’ll talk about how we've made PostCSS 1.5 times faster in the 5.0.11 release. - [Making a custom logger for Rails query optimization](https://evilmartians.com/chronicles/rails-query-optimizations.md): I've spent a lot of time figuring out where ActiveRecord chains were called and tracing problematic queries. That is why I've made a special logger to simplify this process - [PostCSS Second Birthday](https://evilmartians.com/chronicles/postcss-second-birthday.md): In this article, I’ll talk about my work on a more complex idea of DHH — Rendering views outside of actions. - [State Machine: The State Switcher](https://evilmartians.com/chronicles/state-machine-the-state-switcher.md): State Machine is a Sketch plugin. Installing it will allow you to use ⌃⌘S to switch an active tab on a tab bar you’re designing, an active navigation section in a menu, or a page number in a pagination control. - [New feature in Rails 5: Render views outside of actions](https://evilmartians.com/chronicles/new-feature-in-rails-5-render-views-outside-of-actions.md): Learn about the new feature of Rails 5—rendering views outside of actions—directly from the author. - [RailsConf 2015 Recap and Thoughts](https://evilmartians.com/chronicles/railsconf-2015-recap.md): Test runner, where.or, new test request API, Render From Anywhere and no more alias_method_chain - [Rails 5: What’s new](https://evilmartians.com/chronicles/rails-5-whats-new.md): Test runner, where.or, new test request API, Render From Anywhere and no more alias_method_chain - [An annoying Capistrano, Unicorn and Bundler issue](https://evilmartians.com/chronicles/an-annoying-capistrano-unicorn-and-bundler-issue.md): In short: always use an absolute path to Unicorn in Capistrano scripts; otherwise your application server will fail to restart after a number of deploys because of Capistrano release cleanups. ## Events - [Startups on Rails: 2026](https://evilmartians.com/events/blastoff-rails-startups-on-rails.md): Startups on Rails: 2026 (Albuquerque, New Mexico, United States) - [Pattern matching on the loose](https://evilmartians.com/events/rubyconf-austria-pattern-matching-on-the-loose.md): Pattern matching on the loose (Vienna, Austria) - [Drop your app/services!](https://evilmartians.com/events/balkan-ruby-vladimir-dementyev.md): Drop your app/services! (Sofia, Bulgaria) - [Require Hooks: Filling the Gap in Ruby's Extensibility](https://evilmartians.com/events/require-hooks-rubykaigi.md): Require Hooks: Filling the Gap in Ruby's Extensibility (Hakodate, Hokkaido, Japan) - [TutorialKit.rb: interactive Ruby gem docs powered by Wasm](https://evilmartians.com/events/tutorialkit-rb-rubykaigi.md): TutorialKit.rb: interactive Ruby gem docs powered by Wasm (Hakodate, Hokkaido, Japan) - [Writing DSL for DSL: Catch Code as It's Born with TracePoint](https://evilmartians.com/events/writing-dsl-for-dsl-rubykaigi.md): Writing DSL for DSL: Catch Code as It's Born with TracePoint (Hakodate, Hokkaido, Japan) - [Amir Rustamzadeh of Firestreak Ventures: founders before products](https://evilmartians.com/events/amir-rustamzadeh-firestreak.md): Amir Rustamzadeh of Firestreak Ventures: founders before products - [Keynote at Tropical on Rails](https://evilmartians.com/events/tropical-on-rails-keynote.md): Keynote at Tropical on Rails (São Paulo, Brazil) - [Inertia Rails: from rails new to production](https://evilmartians.com/events/inertia-rails-workshop-tropical-on-rails.md): Inertia Rails: from rails new to production (São Paulo, Brazil) - [Anuraag Gutgutia, co-founder of TrueFoundry: trust closes enterprise deals](https://evilmartians.com/events/anuraag-gutgutia-truefoundry.md): Anuraag Gutgutia, co-founder of TrueFoundry: trust closes enterprise deals - [CSS Tooling, Plugin Ecosystems & Open Source Values at Scale](https://evilmartians.com/events/senor-developer-sitnik.md): CSS Tooling, Plugin Ecosystems & Open Source Values at Scale - [Stas Kelvich: from quantum physics to Neon's $1B Databricks acquisition](https://evilmartians.com/events/stas-kelvich-neon.md): Stas Kelvich: from quantum physics to Neon's $1B Databricks acquisition - [Building better software with Rails](https://evilmartians.com/events/strictly-from-nowhere-irina-nazarova.md): Building better software with Rails - [The Silicon Heel: Does architecture still matter when AI writes the code?](https://evilmartians.com/events/the-silicon-heel-sf-ruby-meetup.md): The Silicon Heel (San Francisco, California, United States) - [Harjot Gill: how CodeRabbit went from viral in Japan to $60M Series B](https://evilmartians.com/events/podcast-harjot-gill-coderabbit.md): Harjot Gill: how CodeRabbit went from viral in Japan to $60M Series B - [David Gomes of Cursor: why half of developers still aren't using AI](https://evilmartians.com/events/podcast-david-gomes-cursor.md): David Gomes of Cursor: why half of developers still aren't using AI - [Startups on Rails: 2026](https://evilmartians.com/events/rubyconf-th-startups-on-rails.md): Startups on Rails: 2026 (Bangkok, Thailand) - [Monica Sarbu of Xata: rebuilding a Postgres platform and why diverse teams win](https://evilmartians.com/events/podcast-monica-sarbu-xata.md): Monica Sarbu of Xata: rebuilding a Postgres platform and why diverse teams win - [Piyush Agarwal of Reo.dev: intent signals and devtool GTM](https://evilmartians.com/events/podcast-piyush-agarwal-reo-dev.md): Piyush Agarwal of Reo.dev: intent signals and devtool GTM - [David Cramer, founder of Sentry: building for the Fortune 500,000](https://evilmartians.com/events/podcast-david-cramer-sentry.md): David Cramer, founder of Sentry: building for the Fortune 500,000 - [Abhi Aiyer, co-founder of Mastra: TypeScript for AI agents and making moves](https://evilmartians.com/events/podcast-abhi-aiyer-mastra.md): Abhi Aiyer, co-founder of Mastra: TypeScript for AI agents and making moves - [Automatic and Accessible Dynamic Themes With OKLCH Color Space](https://evilmartians.com/events/react-advanced-conference-2025.md): Automatic and Accessible Dynamic Themes With OKLCH Color Space (London, United Kingdom) - [Keynote: Rails X](https://evilmartians.com/events/vladimir-dementyev-keynote-sf-ruby-conference.md): Keynote: Rails X (San Francisco, California, United States) - [Rails + Inertia.js Workshop](https://evilmartians.com/events/inertia-rails-workshop-sf-ruby-conference.md): Rails + Inertia.js Workshop (San Francisco, California, United States) - [Michael Grinich, founder of WorkOS: the plumbing behind OpenAI and Cursor](https://evilmartians.com/events/podcast-michael-grinich-workos.md): Michael Grinich, founder of WorkOS: the plumbing behind OpenAI and Cursor - [Ivan Burazin, CEO of Daytona: walking from $300K ARR to build for agents](https://evilmartians.com/events/podcast-ivan-burazin-daytona.md): Ivan Burazin, CEO of Daytona: walking from $300K ARR to build for agents - [Developing a Language Plugin: LSP versus the Joy of Learning](https://evilmartians.com/events/jb-plugin-developer-conf.md): Developing a Language Plugin: LSP versus the Joy of Learning - [Paul Copplestone: scaling to 5M developers with no meetings](https://evilmartians.com/events/podcast-paul-copplestone-supabase.md): Paul Copplestone: scaling to 5M developers with no meetings - [Sam Lambert, CEO of PlanetScale: databases that never go down](https://evilmartians.com/events/podcast-sam-lambert-planetscale.md): Sam Lambert, CEO of PlanetScale: databases that never go down - [Zeno Rocha, founder of Resend: $18M Series A by obsessing over every detail](https://evilmartians.com/events/podcast-zeno-rocha-resend.md): Zeno Rocha, founder of Resend: $18M Series A by obsessing over every detail - [Devtool founder picnic | Seed, series A - #SFTechWeek](https://evilmartians.com/events/sf-tech-week-devtool-founder-picnic.md): Devtool founder picnic | Seed, series A - #SFTechWeek (San Francisco) - [Misconceptions about colors for developers](https://evilmartians.com/events/colors-misconceptions-barcelona.md): Misconceptions about colors for developers (Barcelona, Spain) - [Jeff Huber, co-founder of Chroma: context engineering and modern AI search](https://evilmartians.com/events/podcast-jeff-huber-chroma.md): Jeff Huber, co-founder of Chroma: context engineering and modern AI search - [Smart Nano Stores, or how we made front-end simpler](https://evilmartians.com/events/what-the-stack.md): Smart Nano Stores, or how we made front-end simpler (Skopje, North Macedonia) - [Don't Be "Thread"-ened: Testing Multithreaded Code with Confidence](https://evilmartians.com/events/dont-be-thread-ened-euruko.md): Don't Be "Thread"-ened: Testing Multithreaded Code with Confidence (Viana do Castelo, Portugal) - [Building interactive Ruby gem tutorials with Wasm – yes, right in the browser!](https://evilmartians.com/events/interactive-ruby-gem-tutorials-with-wasm-euruko.md): Building interactive Ruby gem tutorials with Wasm – yes, right in the browser! (Viana do Castelo, Portugal) - [Prioritization justice: lessons from making background jobs fair at scale](https://evilmartians.com/events/prioritization-justice-euruko.md): Prioritization justice: lessons from making background jobs fair at scale (Viana do Castelo, Portugal) - [SF Ruby with Irina and Vladimir](https://evilmartians.com/events/remote-ruby-sfruby-with-irina-and-vladimir.md): SF Ruby with Irina and Vladimir - [Learning to consult, learning to live](https://evilmartians.com/events/friendly-rb-learning-to-consult.md): Learning to consult, learning to live (Bucharest, Romania) - [Sarah Wooders: on why LLMs are like Memento](https://evilmartians.com/events/podcast-sarah-wooders-letta.md): Sarah Wooders: on why LLMs are like Memento - [Adam Frankl: problem over product](https://evilmartians.com/events/podcast-developer-marketing-adam-frankl.md): Adam Frankl: problem over product - [The Whop & Chop: Cutting CI time in half](https://evilmartians.com/events/whop-and-chop-sf-ruby-meetup.md): The Whop & Chop: Cutting CI time in half (San Francisco, California, United States) - [Jason Bosco: serving billions searches monthly without VC funding](https://evilmartians.com/events/podcast-founder-typesense-jason-bosco.md): Jason Bosco: profitability without VC money - [Rails Business: Irina Nazarova](https://evilmartians.com/events/rails-business-irina-nazarova.md): Rails Business: Irina Nazarova - [Nuances of running Ruby on Kubernetes](https://evilmartians.com/events/nuance-on-kubernetes-rubyconftw.md): Nuances of running Ruby on Kubernetes (Taipei, Taiwan) - [What is happening with strings in Ruby and why is it feeling chilly?](https://evilmartians.com/events/ruby-chilly-strings-rubyconftw.md): What is happening with strings in Ruby and why is it feeling chilly? (Taipei, Taiwan) - [Anna Veronika Dorogush: my team makes me proud](https://evilmartians.com/events/podcast-founder-recraft-anna-veronika-dorogush.md): Anna Veronika Dorogush: my team makes me proud - [LaunchKit pitch: devtool landing page template](https://evilmartians.com/events/awesome-devtools-sf.md): LaunchKit pitch: devtool landing page template (San Francisco, United States) - [SF Ruby AI Hackathon at Sentry HQ](https://evilmartians.com/events/sf-ruby-ai-hackathon.md): SF Ruby AI Hackathon at Sentry HQ (San Francisco, California, United States) - [Svelte Society meetup NYC](https://evilmartians.com/events/svelte-meetup.md): Svelte Society meetup NYC (New York, NY, United States) - [Michael Magán: time to build user-centric software](https://evilmartians.com/events/podcast-michael-magan-tambo-ai.md): Michael Magán: It's time to build truly user-centric software - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-devbcn.md): Privacy-first architecture (Barcelona, Spain) - [Rails Frontend Evolution: It Was a Setup All Along](https://evilmartians.com/events/rails-frontend-evolution-it-was-a-setup-all-along.md): Rails Frontend Evolution: It Was a Setup All Along (Philadelphia, PA, United States) - [Startups on Rails in Past, Present and Future](https://evilmartians.com/events/startups-on-rails-in-past-present-and-future.md): Startups on Rails in Past, Present and Future (Philadelphia, PA, United States) - [The future of Rails begins in the browser](https://evilmartians.com/events/the-future-of-rails-begins-in-the-browser.md): The future of Rails begins in the browser (Philadelphia, PA, United States) - [José Valim: 13 years of Elixir and the future of AI tooling](https://evilmartians.com/events/podcast-jose-valim-elixir-tidewave.md): José Valim: 13 years of Elixir and the future of AI tooling - [Adam Wenchel, founder and CEO at Arthur: developer empathy, last mile problem in AI deployment and open source](https://evilmartians.com/events/podcast-adam-wenchel-arthur-ai.md): Adam Wenchel, Founder and CEO at Arthur AI - [Code and the Coding Coders who Code it: Vladimir Dementyev](https://evilmartians.com/events/rails-on-wasm-with-vladimir-dementyev.md): Code and the Coding Coders who Code it: Vladimir Dementyev - [Ode to RailsConf: Irina Nazarova](https://evilmartians.com/events/ode-to-railsconf-irina-nazarova.md): Ode to RailsConf: Irina Nazarova - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-norway.md): Privacy-first architecture (Oslo, Norway) - [Why Bolt.new Won and Most DevTools AI Pivots Failed](https://evilmartians.com/events/ai-engineer-world-fair.md): Why Bolt.new Won and Most DevTools AI Pivots Failed (San Francisco, United States) - [Sam Bhagwat, Founder and CEO at Mastra](https://evilmartians.com/events/podcast-sam-bhagwat-mastra-gatsby.md): Sam Bhagwat, Founder and CEO at Mastra - [Simplifying State Management in Angular with Smart Nano Stores](https://evilmartians.com/events/smart-nano-stores-london.md): Simplifying State Management in Angular with Smart Nano Stores (London, United Kingdom) - [Programmable colors: bridging design and code](https://evilmartians.com/events/config-programmable-colors-bridging-design-and-code.md): Programmable colors: bridging design and code (San Francisco, United States) - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-svelte-summit.md): Privacy-first architecture (Barcelona, Spain) - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-balkanruby.md): Privacy-first architecture (Sofia, Bulgaria) - [Startups on Rails in 2025](https://evilmartians.com/events/startups-on-rails-in-2025-sin-city-ruby.md): Startups on Rails in 2025 (Las Vegas) - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-commitconf.md): Privacy-first architecture (Madrid, Spain) - [Defying Front-End Inertia: Inertia.js on Rails](https://evilmartians.com/events/defying-front-end-inertia-inertia-js-on-rails.md): Defying Front-End Inertia: Inertia.js on Rails (São Paulo) - [Startups on Rails in 2025](https://evilmartians.com/events/startups-on-rails-in-2025-tropical-on-rails.md): Startups on Rails in 2025 (São Paulo) - [Solving algorithms: beyond cramming for job interviews](https://evilmartians.com/events/solving-algorithms-zurich.md): Solving algorithms: beyond cramming for job interviews (Zürich, Switzerland) - [Ruby in Japan vs. the World](https://evilmartians.com/events/owddm-ruby-in-japan-vs-the-world.md): Ruby in Japan vs. the World (Osaka, Japan) - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-t3chfest.md): Privacy-first architecture (Madrid, Spain) - [Generating OpenAPI schema from serializers throughout the Rails stack](https://evilmartians.com/events/kyobashi-rb.md): シリアライザーからRailsスタック全体を参考してOpenAPIスキーマの生成方法 (Osaka, Japan) - [Don't just slap on a chatbot: building AI that works before you ask](https://evilmartians.com/events/ai-engineer-summit.md): Don't just slap on a chatbot: building AI that works before you ask (New York, United States) - [Presence ain't perfect](https://evilmartians.com/events/presence-aint-perfect-sf-ruby.md): SF Bay Area Ruby Meetup (San Francisco, California, United States) - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-fosdem.md): Privacy-first architecture (Brussels, Belgium) - [Irina Nazarova, CEO of Evil Martians and Sin City Ruby 2025 Speaker](https://evilmartians.com/events/code-with-jason-irina-nazarova-2025.md): Irina Nazarova, CEO of Evil Martians and Sin City Ruby 2025 Speaker - [Keeping it Ruby: why your product need to have Ruby SDK](https://evilmartians.com/events/keeping-it-ruby-rubyworld.md): Keeping it Ruby: why your product need to have Ruby SDK (Matsue, Japan) - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-casablanca.md): Privacy-first architecture (Casablanca, Morocco) - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-barcelonajs.md): Privacy-first architecture (Barcelona, Spain) - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-devfest-berlin.md): Privacy-first architecture (Berlin, Germany) - [From Server to Client: Ruby on Rails on WebAssembly](https://evilmartians.com/events/from-server-to-client-ruby-on-rails-on-webassembly-wasmcon-2024.md): From Server to Client: Ruby on Rails on WebAssembly (Salt Lake City, Utah, United States) - [Simplify State Management with Nano Stores](https://evilmartians.com/events/angularday-meetup.md): Simplify State Management with Nano Stores (Verona, Italy) - [Evolution of real-time and AnyCable Pro](https://evilmartians.com/events/evolution-of-real-time-and-anycable-pro-dev-innovation-summit.md): Evolution of real-time and AnyCable Pro (Santa Clara, California) - [Keynote: Rails Way or the highway](https://evilmartians.com/events/keynote-rails-way-or-the-highway-kaigi-on-rails-2024.md): Keynote: Rails Way or the highway (Tokyo, Japan) - [5 best practices for preventing chaos in Tailwind CSS](https://evilmartians.com/events/react-advanced-conference.md): 5 best practices for preventing chaos in Tailwind CSS (London, United Kingdom) - [Evolution of real-time and AnyCable Pro](https://evilmartians.com/events/evolution-of-real-time-and-anycable-rocky-mountain.md): Evolution of real-time and AnyCable Pro (Boulder, Colorado) - [Using Vite Ruby](https://evilmartians.com/events/using-vite-ruby-vite-conf.md): Using Vite Ruby - [Rails World 2024 Martian Lightning Talks](https://evilmartians.com/events/rails-world-2024.md): Rails World 2024 Martian Lightning Talks (Toronto, Canada) - [Andrey Sitnik from Talks with Ido Evergreen](https://evilmartians.com/events/andrey-sitnik-with-ido-evergreen.md): Andrey Sitnik from Talks with Ido Evergreen - [Evolution of real-time and AnyCable Pro](https://evilmartians.com/events/evolution-of-real-time-and-anycable-pro-euruko.md): Evolution of real-time and AnyCable Pro (Sarajevo, Bosnia and Herzegovina) - [Assembling the Future: crafting the missing pieces of the Ruby on Wasm puzzle](https://evilmartians.com/events/assembling-the-future-ruby-on-wasm-puzzle-euruko.md): Assembling the Future: crafting the missing pieces of the Ruby on Wasm puzzle (Sarajevo, Bosnia and Herzegovina) - [SF Bay Area Ruby Meetup in September @ GitHub](https://evilmartians.com/events/sf-bay-area-ruby-meetup-github.md): SF Bay Area Ruby Meetup in September @ GitHub (San Francisco, California, United States) - [YC Ruby Meetup: Ruby & Rails powering YC startups in 2024](https://evilmartians.com/events/yc-ruby-meetup.md): YC Ruby Meetup: Ruby & Rails powering YC startups in 2024 (San Francisco, California, United States) - [SF Bay Area Ruby Meetup in July @ Cisco Meraki](https://evilmartians.com/events/sf-bay-area-ruby-meetup-cisco-meraki.md): SF Bay Area Ruby Meetup in July @ Cisco Meraki (San Francisco, California, United States) - [How to Make Your Open Source Project Popular](https://evilmartians.com/events/open-source-open-south-code.md): How to Make Your Open Source Project Popular (Malaga, Spain) - [Leveraging OpenAPI: Creating Effective RESTful API Specifications and Documentation](https://evilmartians.com/events/leveraging-openapi-creating-effective-restful-api-specifications-and-documentation.md): Leveraging OpenAPI: Creating Effective RESTful API Specifications and Documentation - [Panel Discussion: JS Frameworks](https://evilmartians.com/events/c3fest-js-framework-panel.md): Panel Discussion: JS Frameworks (Amsterdam, The Netherlands) - [Privacy-first architecture](https://evilmartians.com/events/jsnation-privacy-first-architecture.md): Privacy-first architecture (Amsterdam, The Netherlands) - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-ow2con.md): Privacy-first architecture (Paris-Châtillon, France) - [How to Make Your Open Source Project Popular](https://evilmartians.com/events/open-source-fork-it.md): How to Make Your Open Source Project Popular (Rouen, France) - [How to make your open source project popular](https://evilmartians.com/events/how-to-make-your-open-source-project-popular-upstream.md): How to make your open source project popular - [Narrative Reflections: Transmuting Ruby Code into Storytelling Gold](https://evilmartians.com/events/narrative-reflections-transmuting-ruby-code-into-storytelling-gold.md): Narrative Reflections: Transmuting Ruby Code into Storytelling Gold (Asheville, North Carolina, United States) - [A perfect combo: content that sells from engineers who write](https://evilmartians.com/events/content-that-sells-from-engineers-who-write-05f5.md): A perfect combo: content that sells from engineers who write (Paris, France) - [SF Bay Area Ruby Meetup at New Relic](https://evilmartians.com/events/sf-bay-area-ruby-meetup-new-relic.md): SF Bay Area Ruby Meetup at New Relic (San Francisco, California, United States) - [Ruby Mixology 101: adding shots of PHP, Elixir, and more](https://evilmartians.com/events/ruby-mixology-101.md): Ruby Mixology 101: adding shots of PHP, Elixir, and more (Naha, Okinawa, Japan) - [Keynote: Startups on Rails in 2024](https://evilmartians.com/events/startups-on-rails-railsconf-2024.md): Keynote: Startups on Rails in 2024 (Detroit, Michigan, United States) - [From slow to go: Rails test profiling hands-on](https://evilmartians.com/events/from-slow-to-go-rails-test-profiling-hands-on-railsconf-2024.md): From slow to go: Rails test profiling hands-on (Detroit, Michigan, United States) - [Friendly Show at Balkan Ruby! Irina Nazarova, making money on dev tools](https://evilmartians.com/events/friendly-show-at-balkan-ruby-irina-nazarova-making-money-on-dev-tools.md): Friendly Show at Balkan Ruby! Irina Nazarova, making money on dev tools - [How to do well in consulting](https://evilmartians.com/events/how-to-do-well-in-consulting-balkan-ruby.md): How to do well in consulting (Sofia, Bulgaria) - [Remote Ruby with Irina Nazarova from Evil Martians](https://evilmartians.com/events/remote-ruby-with-irina-nazarova-from-evil-martians.md): Remote Ruby with Irina Nazarova from Evil Martians - [Threads, callbacks, and execution context in Ruby](https://evilmartians.com/events/ruby-threads-callbacks-rubyconfau.md): Threads, callbacks, and execution context in Ruby (Sydney, Australia) - [Privacy-first architecture](https://evilmartians.com/events/privacy-first-architecture-react-amsterdam.md): Privacy-first architecture (Amsterdam, The Netherlands) - [Jono Bacon, former Director of Community at GitHub and Ubuntu](https://evilmartians.com/events/dev-propulsion-labs-s03e02-jono.md): Jono Bacon, former Director of Community at GitHub and Ubuntu - [SF Bay Area Ruby Meetup](https://evilmartians.com/events/sf-bay-area-ruby-meetup.md): SF Bay Area Ruby Meetup (San Francisco, California, United States) - [Rails on Wasm](https://evilmartians.com/events/rails-on-wasm-sf-ruby-meetup.md): SF Bay Area Ruby Meetup (San Francisco, California, United States) - [Seven deadly Rails anti-patterns](https://evilmartians.com/events/seven-deadly-rails-anti-patterns-sin-city-ruby-2024.md): Seven deadly Rails anti-patterns (Las Vegas, Nevada, United States) - [How to do well in consulting](https://evilmartians.com/events/irina-nazarova-sin-city-ruby-2024.md): How to do well in consulting (Las Vegas, Nevada, United States) - [Irina Nazarova — Investing in Innovation: The Consultancy's Guide to Growth ](https://evilmartians.com/events/irina-nazarova-the-consultancys-guide-to-growth.md): Irina Nazarova — Investing in Innovation: The Consultancy's Guide to Growth - [How to Make Your Open Source Project Popular](https://evilmartians.com/events/opensource-promotion.md): How to Make Your Open Source Project Popular (Florence, Italy) - [Designing UIs without a UI designer](https://evilmartians.com/events/designing-uis-without-a-designer-foss-backstage.md): Designing UIs without a UI designer (Berlin, Germany) - [Devs in mind: how to design interfaces for developer tools](https://evilmartians.com/events/devs-in-mind-design-interfaces-for-developer-tools-foss-backstage.md): Devs in mind: how to design interfaces for developer tools (Berlin, Germany) - [Alice Chen, CTO & Co-Founder at OpenContext](https://evilmartians.com/events/dev-propulsion-labs-s03e01-alice-chen-cto-and-cofounder-at-opencontext.md): Alice Chen, CTO & Co-Founder at OpenContext - [Wildest dreams of making profit on Open Source](https://evilmartians.com/events/wildest-dreams-of-making-profit-on-open-source-developerweek.md): Wildest dreams of making profit on Open Source (Oakland, California, United States) - [DHH: 20 years of Rails and why one developer can build everything](https://evilmartians.com/events/dev-propulsion-labs-episode-9-david-heinemeier-hansson-dhh-basecamp-hey-ruby-on-rails-creator.md): DHH: 20 years of Rails and why one developer can build everything - [Hahnbee Lee, Mintlify](https://evilmartians.com/events/dev-propulsion-labs-episode-8-hahnbee-lee-mintlify.md): Hahnbee Lee, Mintlify - [Miško Hevery, Builder.io, Angular, Qwik](https://evilmartians.com/events/dev-propulsion-labs-episode-7-mishko-hevery-builderio-angular-qwik.md): Miško Hevery, BuilderIO, Angular, Qwik - [Shanea Leven, CodeSee](https://evilmartians.com/events/dev-propulsion-labs-episode-6-shanea-leven-codesee.md): Shanea Leven, CodeSee - [Wildest Dreams of Making Profit on Open Source](https://evilmartians.com/events/wildest-dreams-of-making-profit-on-opensource-opencoresummit.md): Irina Nazarova at the Open Core Summit 2023: Wildest Dreams of Making Profit on Open Source (San Francisco, California, United States) - [Navigating success: business strategies for design & web development services](https://evilmartians.com/events/navigating-success-business-strategies-for-design-and-web-development-services.md): Navigating success: business strategies for design & web development services (Porto, Portugal) - [Ivar Østhus, Unleash](https://evilmartians.com/events/dev-propulsion-labs-episode-5-ivar-eusthus-unleash.md): Ivar Østhus, Unleash - [3 reasons to switch to OKLCH](https://evilmartians.com/events/3-reasons-to-switch-to-oklch-epichey.md): 3 reasons to switch to OKLCH (Lisbon, Portugal) - [Profiling Ruby tests with Swiss precision](https://evilmartians.com/events/profiling-ruby-tests-with-swiss-precision-helvetic-ruby.md): Profiling Ruby tests with Swiss precision (Bern, Switzerland) - [3 reasons to switch to OKLCH](https://evilmartians.com/events/3-reasons-to-switch-to-oklch-wey-wey.md): 3 reasons to switch to OKLCH (Malaga, Spain) - [Peer Richelsen, Cal.com](https://evilmartians.com/events/dev-propulsion-labs-episode-4-peer-richelsen-cal-com.md): Peer Richelsen, Cal.com - [Monica Sarbu, Xata](https://evilmartians.com/events/dev-propulsion-labs-episode-3-monica-sarbu-xata.md): Monica Sarbu, Xata - [Ruby on Whales: building a convenient development environment using Docker](https://evilmartians.com/events/kujira-ni-notta-ruby-izumorb.md): クジラに乗ったRuby: Dockerを使って、便利な開発環境の構築 (Izumo, Japan) - [Nikita Shamgunov, Neon](https://evilmartians.com/events/dev-propulsion-labs-episode-2-nikita-shamgunov-neon.md): Nikita Shamgunov, Neon - [Commercializing Open Source with Victoria Melnikova](https://evilmartians.com/events/net-rocks-commercializing-open-source-with-victoria-melnikova.md): Commercializing Open Source with Victoria Melnikova - [Layers Meetup: Crafting Blog covers: AI tools vs Human Illustrators. Who is the winner?](https://evilmartians.com/events/layers-meetup-crafting-blog-covers-ai-tools-vs-human-illustrators-who-is-the-winner.md): Layers Meetup: Crafting Blog covers: AI tools vs Human Illustrators. Who is the winner? (Lisbon, Portugal) - [Layers Meetup: Resolving text accessibility dilemmas in UIs](https://evilmartians.com/events/layers-meetup-resolving-text-accessibility-dilemmas-in-uis.md): Layers Meetup: Resolving text accessibility dilemmas in UIs (Lisbon, Portugal) - [Layers Meetup: Smart Nano Stores for state management, or how we made frontend simpler](https://evilmartians.com/events/layers-meetup-smart-nano-stores-for-state-management-or-how-we-made-frontend-simpler.md): Layers Meetup: Smart Nano Stores for state management, or how we made frontend simpler (Lisbon, Portugal) - [Layers Meetup 02: Meet the Evil Martians](https://evilmartians.com/events/meet-the-evil-martians-layers-meetup-02.md): Layers Meetup 02: Meet the Evil Martians (Lisbon, Portugal) - [Stefan Avram, WunderGraph](https://evilmartians.com/events/dev-propulsion-labs-episode-1-stefan-avram-wundergraph.md): Stefan Avram, WunderGraph - [Active Support’s CurrentAttributes: a really useful but hated Rails feature?](https://evilmartians.com/events/activesupport-currentattributes-a-really-useful-but-hated-rails-feature.md): ActiveSupport::CurrentAttributes: すっごく便利なのに嫌われ者?! (Tokyo, Japan) - [Rails Executor: the border between application and framework code](https://evilmartians.com/events/rails-executor-kaigionrails.md): Rails Executor: フレームワークとあなたのコードとの境 (Tokyo, Japan) - [Nano Stores for Massive State Management Advancement](https://evilmartians.com/events/nano-stores-for-massive-state-management-advancement.md): Nano Stores for Massive State Management Advancement (Munich, Germany) - [The Ruby on Rails Podcast: Vladimir Dementyev on Layered Design](https://evilmartians.com/events/the-ruby-on-rails-podcast-vladimir-dementyev-on-layered-design.md): The Ruby on Rails Podcast: Vladimir Dementyev on Layered Design - [Commercializing Open Source](https://evilmartians.com/events/commercializing-open-source-ndc-porto.md): Open Source 101: Monetize or Vanish — NDC Porto 2023 (Porto, Portugal) - [Untangling Cables and Demystifying Twisted Transistors](https://evilmartians.com/events/untangling-cables-and-demystifying-twisted-transistors-railsworld.md): Vladimir Dementyev - Untangling cables and demystifying twisted transistors - Rails World 2023 (Amsterdam, The Netherlands) - [Wildest Dreams of Making Profit on Open Source](https://evilmartians.com/events/wildest-dreams-of-making-profit-on-opensource-railsworld.md): Irina Nazarova - Wildest Dreams of Making Profit on Open Source - Rails World 2023 (Amsterdam, The Netherlands) - [What I learned as a developer from accidents in space](https://evilmartians.com/events/space-accidents-hacktoberfest-barcelona.md): What I learned as a developer from accidents in space (Barcelona, Spain) - [Layered Rails Design with Vladimir Dementyev](https://evilmartians.com/events/layered-rails-design-with-vladimir-dementyev-remoteruby.md): Layered Rails Design with Vladimir Dementyev - [Let there be docs! A documentation-first approach to Rails API development](https://evilmartians.com/events/let-there-be-docs-a-documentation-first-approach-to-rails-api-development.md): Let there be docs! A documentation-first approach to Rails API development (Bucharest, Romania) - [Mastering dynamic UI theming for designers](https://evilmartians.com/events/mastering-dynamic-ui-theming-for-designers-layers.md): Mastering dynamic UI theming for designers (Lisbon, Portugal) - [Commercializing Open Source with Victoria Melnikova of Evil Martians](https://evilmartians.com/events/commercializing-open-source-with-victoria-melnikova-jamstack-radio.md): Commercializing Open Source with Victoria Melnikova of Evil Martians - [Nano Stores at Borderless JS](https://evilmartians.com/events/nano-stores-borderless-js.md): Nano Stores at Borderless JS - [Bites and Bytes: meetup for developers and designers in Lisbon](https://evilmartians.com/events/bites-and-bytes-meetup-for-developers-and-designers-in-lisbon.md): Bites and Bytes: meetup for developers and designers in Lisbon (Lisbon, Portugal) - [Customizing Icons to Complement Fonts](https://evilmartians.com/events/customizing-icons-to-complement-fonts-bites-and-bytes-lisbon.md): Customizing Icons to Complement Fonts (Lisbon, Portugal) - [Overcoming imposter syndrome: promoting yourself and your Open Source](https://evilmartians.com/events/overcoming-imposter-syndrome-promoting-yourself-and-your-open-source-bites-and-bytes-lisbon.md): Overcoming imposter syndrome: promoting yourself and your open source (Lisbon, Portugal) - [Taking the edge off: demystifying edge computing using Cloudflare Workers](https://evilmartians.com/events/demystifying-edge-computing-using-cloudflare-workers-bites-and-bytes-lisbon.md): Taking the edge off: demystifying edge computing using Cloudflare Workers (Lisbon, Portugal) - [Mastering dynamic UI theming for designers](https://evilmartians.com/events/mastering-dynamic-ui-theming-for-designers-bites-and-bytes-lisbon.md): Mastering dynamic UI theming for designers (Lisbon, Portugal) - [Threads, callbacks, and execution context in Ruby](https://evilmartians.com/events/ruby-threads-callbacks-osakarubykaigi.md): Threads, callbacks, and execution context in Ruby (Osaka, Japan) - [GemRuby Show: Vladimir Dementyev & Action Policy](https://evilmartians.com/events/gemruby-show-vladimir-dementyev-action-policy.md): GemRuby Show: Vladimir Dementyev & Action Policy - [Building Custom Infrastructure with Kirill Kuznetsov](https://evilmartians.com/events/building-customi-infrastructure-with-kirill-kuznetsov-ruby-rogues.md): Building Custom Infrastructure with Kirill Kuznetsov - [What I learned as a developer from accidents in space](https://evilmartians.com/events/space-accidents-wearedevelopers.md): What I learned as a developer from accidents in space (Berlin, Germany) - [AnyCable v1.4: real-time for all](https://evilmartians.com/events/anycable-v1-4-real-time-for-all.md): AnyCable v1.4: real-time for all - [imgproxy is amazing: handling user-uploaded images with ease and confidence](https://evilmartians.com/events/imgproxy-is-amazing-owddm.md): imgproxy is amazing: handling user-uploaded images with ease and confidence (Osaka, Japan) - [Andrey Sitnik from Evil Martians for Devtools FM](https://evilmartians.com/events/andrey-sitnik-for-devtools-fm.md): Andrey Sitnik from Evil Martians for Devtools FM - [3 reasons to switch to OKLCH](https://evilmartians.com/events/3-reasons-to-switch-to-oklch-bites-and-bytes-serbia.md): 3 reasons to switch to OKLCH (Belgrade, Serbia) - [Infrastructure therapy: cloud, bare-metal, or time to turn Kubernetes screams into dreams?](https://evilmartians.com/events/infrastructure-therapy-bites-and-bytes-serbia.md): Infrastructure therapy: cloud, bare-metal, or time to turn Kubernetes screams into dreams? (Belgrade, Serbia) - [Bites and Bytes: meetup for developers in Serbia](https://evilmartians.com/events/bites-and-bytes-meetup-for-developers-in-serbia.md): Bites and Bytes: meetup for developers in Serbia (Belgrade, Serbia) - [Why OKLCH is the future of colors in CSS](https://evilmartians.com/events/adevinta-oklch.md): Why OKLCH is the future of colors in CSS (Barcelona, Spain) - [Giant Robots: Evil Martians with Irina Nazarova](https://evilmartians.com/events/giant-robots-evil-martians-with-irina-nazarova.md): Giant Robots: Evil Martians with Irina Nazarova - [Code with Jason: Sin City Ruby Speaker Irina Nazarova](https://evilmartians.com/events/code-with-jason-sin-city-ruby-speaker-irina-nazarova.md): Code with Jason: Sin City Ruby Speaker Irina Nazarova - [CRDT and other new ideas for client-server communication](https://evilmartians.com/events/crdt-and-other-new-ideas-for-client-server-communication-devbcn.md): CRDT and other new ideas for client-server communication (Barcelona, Spain) - [Season 1, Episode 4: Bootstrapping & Fundraising](https://evilmartians.com/events/dev-propulsion-labs-bootstrapping-and-fundraising.md): Ep. 4: Bootstrapping & Fundraising - [OKLCH at Colorful Web Meetup](https://evilmartians.com/events/oklch-colorful-web-meetup.md): OKLCH at Colorful Web Meetup (Osaka, Japan) - [What I learned as a developer from accidents in space](https://evilmartians.com/events/space-accidents-barcelonajs.md): What I learned as a developer from accidents in space (Barcelona, Spain) - [Code with Jason: Test Suite Performance with Vladimir Dementyev](https://evilmartians.com/events/code-with-jason-vladimir-dementyev-test-suite-performance.md): Code with Jason: Test Suite Performance with Vladimir Dementyev - [Blue Ridge Ruby Conference](https://evilmartians.com/events/blue-ridge-ruby-conference-2023.md): Blue Ridge Ruby Conference (Asheville, North Carolina, United States) - [Navigating risk like a pro](https://evilmartians.com/events/navigating-risk-like-a-pro-rails-saas.md): Navigating risk like a pro (Athens, Greece) - [Irina Nazarova from Evil Martians for Devtools FM](https://evilmartians.com/events/irina-nazarova-for-devtools-fm.md): Irina Nazarova from Evil Martians for Devtools FM - [Season 1, Episode 3: Developer Tools & Product Design](https://evilmartians.com/events/dev-propulsion-labs-developer-tools-and-product-design.md): Ep. 3: Developer Tools & Product Design - [Railsconf 2023: A Ruby Community Podcast Live with Irina Nazarova](https://evilmartians.com/events/therubyonrailspodcast-irina-nazarova-railsconf-2023.md): RailsConf 2023 - A Ruby Community Podcast Live! by Brittany Martin, Jason Charnes & Paul Bahr - [How to make money at open source](https://evilmartians.com/events/how-to-make-money-at-open-source-ruby-rogues.md): How to make money at open source - [Rails as a piece of birthday cake](https://evilmartians.com/events/rails-as-a-piece-of-birthday-cake.md): RailsConf 2023 - Rails as a piece of birthday cake by Vladimir Dementyev (Atlanta, Georgia, United States) - [The Rails Changelog: CTEs In Rails, CPKs coming soon with Vladimir Dementyev](https://evilmartians.com/events/ctes-in-rails-cpks-coming-soon-vladimir-dementyev.md): The Rails Changelog: CTEs In Rails, CPKs coming soon with Vladimir Dementyev - [Season 1, Episode 2: Tech marketing done right](https://evilmartians.com/events/dev-propulsion-labs-tech-marketing-done-right.md): Ep. 2: Tech marketing done right - [Visiting the Startup Grind conference](https://evilmartians.com/events/visiting-startup-grind-conference.md): Visiting the Startup Grind conference (San Francisco, California, United States) - [Algorithms? Are you serious?](https://evilmartians.com/events/algorithms-are-you-serious.md): Algorithms? Are you serious? - [Bites and Bytes: meetup for developers in Tbilisi](https://evilmartians.com/events/bites-and-bytes-meetup-for-developers-in-tbilisi.md): Bites and Bytes: meetup for developers in Tbilisi (Tbilisi, Georgia) - [Ruby is not slow anymore](https://evilmartians.com/events/ruby-is-not-slow-anymore-bites-and-bytes.md): Bites and Bytes: meetup for developers in Tbilisi (Tbilisi, Georgia) - [Solving algorithms: beyond cramming for job interviews](https://evilmartians.com/events/solving-algorithms-bites-and-bytes.md): Bites and Bytes: meetup for developers in Tbilisi (Tbilisi, Georgia) - [Coming into my own](https://evilmartians.com/events/coming-into-my-own.md): Coming into my own (Lisbon, Portugal) - [Code with Jason: How to Build a Feature with Irina Nazarova, CEO of Evil Martians](https://evilmartians.com/events/code-with-jason-irina-nazarova-how-to-build-a-feature.md): Code with Jason: How to Build a Feature with Irina Nazarova, CEO of Evil Martians - [Flying multi-regionally with NATS](https://evilmartians.com/events/flying-multi-regionally-with-nats.md): Flying multi-regionally with NATS - [Andrey Sitnik and Using OKLCH for Color](https://evilmartians.com/events/using-oklch-for-color-shoptalkshow.md): Andrey Sitnik and Using OKLCH for Color - [Season 1, Episode 1: Building communities around products](https://evilmartians.com/events/dev-propulsion-labs-building-communities-around-products.md): Ep. 1: Building communities around products - [Bites and Bytes: our meetup for developers in Istanbul](https://evilmartians.com/events/bites-and-bytes-istanbul.md): Bites and Bytes: our meetup for developers in Istanbul (Istanbul, Türkiye) - [Code with Jason: Irina Nazarova, CEO of Evil Martians](https://evilmartians.com/events/code-with-jason-irina-nazarova.md): Code with Jason: Irina Nazarova, CEO of Evil Martians - [Why OKLCH is the future of colors in CSS](https://evilmartians.com/events/why-oklch.md): Why OKLCH is the future of colors in CSS (Vilnius, Lithuania) - [Future of colors in CSS: why I moved to oklch() from rgb(), hex, and hsl()](https://evilmartians.com/events/oklch.md): Future of colors in CSS: why I moved to oklch() from rgb(), hex, and hsl() (Barcelona, Spain) - [Weaving and seaming mocks](https://evilmartians.com/events/weaving-and-seaming-mocks.md): Weaving and seaming mocks (Providence, Rhode Island, United States) - [Presenting imgproxy—the blazing fast and secure image processing tool](https://evilmartians.com/events/websummit-presenting-imgproxy.md): Presenting imgproxy—the blazing fast and secure image processing tool (Lisbon, Portugal) - [Bites and Bytes founder gathering: dev tools & open source](https://evilmartians.com/events/bites-and-bytes-founder-gathering.md): Bites and Bytes founder gathering: dev tools & open source (Lisbon, Portugal) - [PostgreSQL as seen by Rubyists](https://evilmartians.com/events/postgresql-as-seen-by-rubyists.md): ルビイストの目で見たPostgreSQLのデータ型 - [Presenting AnyCable](https://evilmartians.com/events/presenting-anycable.md): Presenting AnyCable (Los Angeles, California, United States) - [Visiting RubyKaigi](https://evilmartians.com/events/visiting-rubykaigi.md): Visiting RubyKaigi (Tsu, Japan) - [Learn to fly.io with AnyCable](https://evilmartians.com/events/learn-to-fly-io-with-anycable.md): Learn to fly.io with AnyCable - [From developer to CEO](https://evilmartians.com/events/from-developer-to-ceo.md): From developer to CEO - [Writing code for people](https://evilmartians.com/events/writing-code-for-people-osaka.md): Writing code for people (Osaka, Japan) - [Turbo Streams vs. consistency](https://evilmartians.com/events/turbo-streams-vs-consistency.md): Turbo Streams vs. consistency - [The pitfalls of realtime-ification](https://evilmartians.com/events/the-pitfalls-of-realtime-ification.md): The pitfalls of realtime-ification (Portland, Oregon, United States) - [Using anycable-client to auto-refresh tokens](https://evilmartians.com/events/using-anycable-client-to-auto-refresh-tokens.md): Using anycable-client to auto-refresh tokens - [Why OKLCH is the future of colors in CSS](https://evilmartians.com/events/why-oklch-is-the-future-of-colors-in-css.md): Why OKLCH is the future of colors in CSS (Berlin, Germany) - [Of users and direct messaging, pt. 2](https://evilmartians.com/events/of-users-and-direct-messaging-pt-2.md): Of users and direct messaging, pt. 2 - [Of users and direct messaging, pt. 1](https://evilmartians.com/events/of-users-and-direct-messaging-pt-1.md): Of users and direct messaging, pt. 1 - [Exploring Rails 7, Hotwire and AnyCable speedy streams](https://evilmartians.com/events/exploring-rails-7-hotwire-and-anycable-speedy-streams.md): Exploring Rails 7, Hotwire and AnyCable speedy streams - [HTML-over-WebSockets: from LiveView to Hotwire](https://evilmartians.com/events/html-over-websockets-from-liveview-to-hotwire.md): HTML-over-WebSockets: from LiveView to Hotwire - [Do this before hiring developers](https://evilmartians.com/events/do-this-before-hiring-developers.md): Do this before hiring developers - [Frontendless Rails](https://evilmartians.com/events/frontendless-rails.md): Frontendless Rails - [Rails X](https://evilmartians.com/events/rails-x.md): Rails X (St Petersburg, Russia) - [HTML over WebSockets](https://evilmartians.com/events/html-over-websockets.md): HTML over WebSockets (Sofia, Bulgaria) - [Building high-performance GraphQL APIs](https://evilmartians.com/events/building-high-performance-graphql-apis.md): Building high-performance GraphQL APIs - [Frontendless Rails frontend](https://evilmartians.com/events/frontendless-rails-frontend-railsconf.md): Frontendless Rails frontend - [Frontendless Rails frontend](https://evilmartians.com/events/frontendless-rails-frontend-jason.md): Frontendless Rails frontend - [What developers can learn from Soviet space program failures](https://evilmartians.com/events/what-developers-can-learn-from-soviet-space-program-failures-halfstack.md): What developers can learn from Soviet space program failures (Phoenix, Arizona, United States) - [Introduction to Docker for Le Wagon alumni](https://evilmartians.com/events/introduction-to-docker.md): Introduction to Docker for Le Wagon alumni (Berlin, Germany) - [Building TUI interfaces for the web](https://evilmartians.com/events/building-tui-interfaces-for-the-web.md): Building TUI interfaces for the web (Berlin, Germany) - [GraphQL doesn’t need to be hell](https://evilmartians.com/events/graphql-doesnt-need-to-be-hell-with-dmitry-tsepelev.md): GraphQL doesn’t need to be hell - [The why’s and how’s of transpiling Ruby](https://evilmartians.com/events/the-whys-and-hows-of-transpiling-ruby.md): The why’s and how’s of transpiling Ruby - [Rails::Engine with Vladimir Dementyev](https://evilmartians.com/events/railsengine-with-vladimir-dementyev.md): Rails::Engine with Vladimir Dementyev - [About logical thinking, passion, and idea that everything is possible](https://evilmartians.com/events/about-logical-thinking-passion-and-idea-that-everything-is-possible.md): About logical thinking, passion, and idea that everything is possible - [Authorization in the GraphQL era](https://evilmartians.com/events/authorization-in-the-graphql-era.md): Authorization in the GraphQL era (Portland, Oregon, United States) - [Between monoliths and microservices](https://evilmartians.com/events/between-monoliths-and-microservices.md): Between monoliths and microservices (Portland, Oregon, United States) - [Ruby Next: get future Ruby changes now](https://evilmartians.com/events/ruby-next-get-future-ruby-changes-now-with-vladimir-dementyev.md): Ruby Next: get future Ruby changes now - [Kubernetes on bare metal: SSL](https://evilmartians.com/events/kubernetes-on-bare-metal-ssl.md): Kubernetes on bare metal: SSL (St Petersburg, Russia) - [GraphQL on microservices landscape](https://evilmartians.com/events/graphql-on-microservices-landscape.md): GraphQL on microservices landscape (Tver, Russia) - [CODE == TEXT, and developers are writers](https://evilmartians.com/events/code-equals-text.md): CODE == TEXT, and developers are writers (Moscow, Russia) - [GraphQL-Ruby under the hood and how to write more elegant APIs](https://evilmartians.com/events/graphql-ruby-under-the-hood.md): GraphQL-Ruby under the hood and how to write more elegant APIs (Moscow, Russia) - [Serverless is Ruby future](https://evilmartians.com/events/serverless-is-ruby-future.md): Serverless is Ruby future (Moscow, Russia) - [Welcome, or access denied](https://evilmartians.com/events/welcome-or-access-denied.md): Welcome, or access denied (Moscow, Russia) - [Globalization tools—the state of the Web](https://evilmartians.com/events/globalization-tools-the-state-of-the-web.md): Globalization tools—the state of the Web - [Dirty magic for resilient API dependencies](https://evilmartians.com/events/dirty-magic-for-resilient.md): Dirty magic for resilient API dependencies (Bangkok, Thailand) - [Engine-ering Rails apps](https://evilmartians.com/events/engine-ering-rails-apps.md): Engine-ering Rails apps (St Petersburg, Russia) - [GraphQL-AnyCable](https://evilmartians.com/events/graphql-anycable.md): GraphQL-AnyCable (Saint Petersburg, Russia) - [Thinking in graphs, or why GraphQL is not about mapping database to schema](https://evilmartians.com/events/thinking-in-graphs-saint-p.md): Thinking in graphs, or why GraphQL is not about mapping database to schema (Saint Petersburg, Russia) - [Anything new, Rails 6?](https://evilmartians.com/events/anything-new-rails-6.md): Anything new, Rails 6? (Saint Petersburg, Russia) - [How to make a popular open source project](https://evilmartians.com/events/how-to-make-a-popular-open-source-project-moscow.md): How to make a popular open source project (Moscow, Russia) - [Building resilient API dependency. No magic involved](https://evilmartians.com/events/building-resilient-api-dependency.md): Building resilient API dependency. No magic involved (Hamburg, Germany) - [Working remotely: Martian style](https://evilmartians.com/events/working-remotely-martians-style.md): Working remotely: Martian style (Hamburg, Germany) - [How to make a popular open source project](https://evilmartians.com/events/how-to-make-a-popular-open-source-project-saint-petersburg.md): How to make a popular open source project (Saint Petersburg, Russia) - [REST to GraphQL migration: pros, cons and gotchas](https://evilmartians.com/events/rest-to-graphql-migration-pros-cons-and-gotchas.md): REST to GraphQL migration: pros, cons and gotchas (Osaka, Japan) - [How to make a popular open source project](https://evilmartians.com/events/how-to-make-popular-open-source-project.md): How to make a popular open source project (Tver, Russia) - [Black magic to build resilient API dependencies](https://evilmartians.com/events/black-magic-to-build-resilient-api-dependencies.md): Black magic to build resilient API dependencies (Paris, France) - [Terraforming legacy Rails applications](https://evilmartians.com/events/terraforming-legacy-rails-applications.md): Terraforming legacy Rails applications (Minneapolis, Minnesota, United States) - [Serverless for mere mortals](https://evilmartians.com/events/serverless-for-mere-mortals.md): Serverless for mere mortals (Ekaterinburg, Russia) - [Vladimir Dementyev and I discuss contributing to Rails](https://evilmartians.com/events/vladimir-dementyev-and-i-discuss-contributing-to-rails.md): Vladimir Dementyev and I discuss contributing to Rails - [Yabeda: monitoring monogatari](https://evilmartians.com/events/yabeda-monitoring-monogatari.md): Yabeda: monitoring monogatari (Fukuoka, Japan) - [A denial!](https://evilmartians.com/events/a-denial.md): A denial! (Seattle, Washington, United States) - [My Ruby Story 078: Vlad Dem](https://evilmartians.com/events/my-ruby-story-078-vlad-dem.md): My Ruby Story 078: Vlad Dem - [Writing code for people](https://evilmartians.com/events/writing-code-for-people-tokyo.md): Writing code for people (Tokyo, Japan) - [Cables, concurrency, and Ruby](https://evilmartians.com/events/cables-concurrency-and-ruby.md): Cables, concurrency, and Ruby - [Make external API dependency great again (API contract testing)](https://evilmartians.com/events/make-external-api-dependency-great-again-api-contract-testing.md): Make external API dependency great again (API contract testing) (Minsk, Belarus) - [What developers can learn from Soviet space program failures](https://evilmartians.com/events/what-developers-can-learn-from-soviet-space-program-failures-tokyo.md): What developers can learn from Soviet space program failures (Tokyo, Japan) - [CRDT: Conflict-free Data Types for collaborative editing and offline-first](https://evilmartians.com/events/crdt-conflict-free-data-types-for-collaborative-editing-and-offline-first.md): CRDT: Conflict-free Data Types for collaborative editing and offline-first (Brooklyn, New York, United States) - [Ruby Next: make old Ruby quack like a new one](https://evilmartians.com/events/ruby-next-make-old-ruby-quack-like-a-new-one.md): Ruby Next: make old Ruby quack like a new one (Nashville, Tennessee, United States) - [High-speed cables for Ruby](https://evilmartians.com/events/high-speed-cables-for-ruby-rubyconf.md): High-speed cables for Ruby (Los Angeles, California, United States) - [CRDT and other new ideas for client-server communication](https://evilmartians.com/events/crdt-and-other-new-ideas-for-client-server-communication-oklahoma.md): CRDT and other new ideas for client-server communication (Oklahoma City, Oklahoma, United States) - [Fast tests with Vladimir Dementyev](https://evilmartians.com/events/fast-tests-with-vladimir-dementyev.md): Fast tests with Vladimir Dementyev - [CRDT and other new ideas for client-server communication](https://evilmartians.com/events/crdt-and-other-new-ideas-for-client-server-communication-china.md): CRDT and other new ideas for client-server communication (Hangzhou, China) - [Evolution of Rails application architecture: 14 years in production](https://evilmartians.com/events/evolution-of-rails-application-architecture.md): Evolution of Rails application architecture: 14 years in production (Moscow, Russia) - [CRDT and other new ideas for client-server communication](https://evilmartians.com/events/crdt-and-other-new-ideas-for-client-server-communication.md): CRDT and other new ideas for client-server communication (New York, United States) - [PostCSS way](https://evilmartians.com/events/postcss-way-new-york.md): PostCSS way (New York, United States) - [MargieMap / Mad Russian scientist / Serverless server](https://evilmartians.com/events/margiemap-mad-russian-scientist-serverless-server.md): MargieMap / Mad Russian scientist / Serverless server - [Gem Check: writing better Ruby gems](https://evilmartians.com/events/gem-check-writing-better-ruby-gems-nashville.md): Gem Check: writing better Ruby gems (Nashville, Tennessee, United States) - [CRDT: Conflict-free Data Types for collaborative editing and Offline-first](https://evilmartians.com/events/crdt-conflict-free-data-types-collaborative-editing.md): CRDT: Conflict-free Data Types for collaborative editing and Offline-first (Omaha, Nebraska, United States) - [Logux: Redux actions on the server](https://evilmartians.com/events/logux-redux-actions-on-the-server-seattle.md): Logux: Redux actions on the server (Seattle, Washington, United States) - [What developers can learn from Soviet space program failures](https://evilmartians.com/events/what-developers-can-learn-from-soviet-space-program-failures-manhattan.md): What developers can learn from Soviet space program failures (Manhattan, New York, United States) - [Railways, states & sagas: pure Ruby for wizards](https://evilmartians.com/events/railways-states-and-sagas-pure-ruby-for-wizards.md): Railways, states & sagas: pure Ruby for wizards (Minsk, Belarus) - [99 problems of slow tests](https://evilmartians.com/events/99-problems-of-slow-tests.md): 99 problems of slow tests (Paris, France) - [A healthy monolith](https://evilmartians.com/events/a-healthy-monolith.md): A healthy monolith (Saint Petersburg, Russia) - [Make external API dependency healthy again with contracts](https://evilmartians.com/events/make-external-api-dependency-healthy-again-with-contracts.md): Make external API dependency healthy again with contracts (St Petersburg, Russia) - [Metacreativity](https://evilmartians.com/events/metacreativity.md): Metacreativity (Saint-Petersburg, Russia) - [PostCSS way](https://evilmartians.com/events/postcss-way-saint-petersburg.md): PostCSS way (St Petersburg, Russia) - [AnyCable: one cable to rule them all](https://evilmartians.com/events/anycable-one-cable-to-rule-them-all.md): AnyCable: one cable to rule them all (Sendai, Japan) - [TestProf: take your slow tests to the doctor](https://evilmartians.com/events/testprof-take-your-slow-tests-to-the-doctor.md): TestProf: take your slow tests to the doctor (Sofia, Bulgaria) - [Logux: Redux actions on the server](https://evilmartians.com/events/logux-redux-actions-on-the-server-new-york.md): Logux: Redux actions on the server (New York, United States) - [CRDT and other new ideas for client-server communication](https://evilmartians.com/events/crdt-and-other-new-ideas-for-client-server-communication-porto.md): CRDT and other new ideas for client-server communication (Porto, Portugal) - [Operating Rails in Kubernetes](https://evilmartians.com/events/operating-rails-in-kubernetes.md): Operating Rails in Kubernetes (Pittsburgh, Pennsylvania, United States) - [Access denied: the missing guide to authorization in Rails](https://evilmartians.com/events/access-denied-the-missing-guide-to-authorization-in-rails.md): Access denied: the missing guide to authorization in Rails (Pittsburgh, Pennsylvania, United States) - [Logux: Redux actions on the server](https://evilmartians.com/events/logux-redux-actions-on-the-server.md): Logux: Redux actions on the server (New York, United States) - [Cables! Cables! Cables!](https://evilmartians.com/events/cables-cables-cables.md): Cables! Cables! Cables! (Wroclaw, Poland) - [Elixir. There and Back Again](https://evilmartians.com/events/elixir-there-and-back-again.md): Elixir. There and Back Again (Kazan, Russia) - [Browserslist: one config to rule them all](https://evilmartians.com/events/browserslist-one-config-to-rule-them-all.md): Browserslist: one config to rule them all (Astoria, New York, United States) - [Package quality assurance](https://evilmartians.com/events/package-quality-assurance.md): Package quality assurance (Brussels, Belgium) - [GraphQL: basics and emotions](https://evilmartians.com/events/graphql-basics-and-emotions.md): GraphQL: basics and emotions (St Petersburg, Russia) - [Size Limit: make the Web lighter](https://evilmartians.com/events/size-limit-make-the-web-lighter.md): Size Limit: make the Web lighter (Bratislava, Slovakia) - [Using Logux in production](https://evilmartians.com/events/using-logux-in-production.md): Using Logux in production (Bratislava, Slovakia) - [Using Logux in production](https://evilmartians.com/events/using-logux-in-production-vienna.md): Using Logux in production (Vienna, Austria) - [Logux, a new approach to client-server communication](https://evilmartians.com/events/logux-a-new-approach-to-client-server-communication-amsterdam.md): Logux, a new approach to client-server communication (Amsterdam, The Netherlands) - [Using Logux in production](https://evilmartians.com/events/using-logux-in-production-mexico.md): Using Logux in production (Mexico City, Mexico) - [AnyCable: universal Action Cable](https://evilmartians.com/events/anycable-universal-action-cable.md): AnyCable: universal Action Cable (Cyberjaya, Malaysia) - [Faster tests](https://evilmartians.com/events/faster-tests.md): Faster tests (Moscow, Russia) - [Robots must suffer: linters and tools for frontend development](https://evilmartians.com/events/robots-must-suffer-linters-and-tools-for-front-end-development.md): Robots must suffer: linters and tools for frontend development (Beijing, China) - [Webpack packaging mechanism and debugging optimization](https://evilmartians.com/events/webpack-packaging-mechanism-and-debugging-optimization.md): Webpack packaging mechanism and debugging optimization (Beijing, China) - [Gem Check: writing better Ruby gems](https://evilmartians.com/events/gem-check-writing-better-ruby-gems-saint-petersburg.md): Gem Check: writing better Ruby gems (St. Petersburg, Russia) - [HTTP in Ruby: tips, tricks, and techniques](https://evilmartians.com/events/http-in-ruby-tips-tricks-and-techniques.md): HTTP in Ruby: tips, tricks, and techniques (St Petersburg, Russia) - [Using Logux in production](https://evilmartians.com/events/using-logux-in-production-buenos-aires.md): Using Logux in production (Buenos Aires, Argentina) - [Stylelint: why and how to lint CSS](https://evilmartians.com/events/stylelint-why-and-how-to-lint-css-rio-de-janeiro.md): Stylelint: why and how to lint CSS (Rio de Janeiro, Brazil) - [Action Cable. Making better](https://evilmartians.com/events/action-cable-making-better.md): Action Cable. Making better (Minsk, Belarus) - [Inner structure of Webpack bundle](https://evilmartians.com/events/inner-structure-of-webpack-bundle.md): Inner structure of Webpack bundle (Minsk, Belarus) - [Run Test Run](https://evilmartians.com/events/run-test-run.md): Run Test Run (Minsk, Belarus) - [Logux, a new way of client-server conversation](https://evilmartians.com/events/logux-a-new-way-of-client-server-conversation.md): Logux, a new way of client-server conversation (London, United Kingdom) - [AnyCable or Action Cable for everybody](https://evilmartians.com/events/anycable-or-action-cable-for-everybody.md): AnyCable or Action Cable for everybody (Moscow, Russia) - [Stylelint: why and how to lint CSS](https://evilmartians.com/events/stylelint-why-and-how-to-lint-css-paris.md): Stylelint: why and how to lint CSS (Paris, France) - [The componentization of the Web](https://evilmartians.com/events/componentization-of-the-web.md): The componentization of the Web (Budapest, Hungary) - [Fix global CSS with PostCSS](https://evilmartians.com/events/fix-global-css-with-postcss.md): Fix global CSS with PostCSS (Paris, France) - [PostCSS: the future after Sass and LESS](https://evilmartians.com/events/postcss-the-future-after-sass-and-less-cssconf.md): PostCSS: the future after Sass and LESS (New York, United States) - [Building RailsPerf, a toolkit to detect performance regressions in Ruby on Rails core](https://evilmartians.com/events/building-railsperf-a-toolkit-to-detect-performance-regressions.md): Building RailsPerf, a toolkit to detect performance regressions in Ruby on Rails core (Atlanta, Georgia, United States) - [PostCSS: the future after Sass and LESS](https://evilmartians.com/events/postcss-the-future-after-sass-and-less.md): PostCSS: the future after Sass and LESS (Helsinki, Finland) - [Introducing Capistrano 3](https://evilmartians.com/events/introducing-capistrano-3.md): Introducing Capistrano 3 (Budapest, Hungary) - [Gon gem](https://evilmartians.com/events/gon-gem.md): Gon gem (Moscow, Russia) - [Wider than Rails: lightweight Ruby solutions](https://evilmartians.com/events/wider-than-rails-lightweight-ruby-solutions.md): Wider than Rails: lightweight Ruby solutions (Kyiv, Ukraine) - [New features of Rails 3.1](https://evilmartians.com/events/new-features-of-rails-3-1.md): New features of Rails 3.1 (Moscow, Russia) - [System administration for Rubists. Babushka](https://evilmartians.com/events/system-administration-for-rubists.md): System administration for Rubists. Babushka (St Petersburg, Russia) - [nonSQL databases](https://evilmartians.com/events/nonsql-databases.md): nonSQL databases (St Petersburg, Russia) ## Team - [Albert Pazderin](https://evilmartians.com/martians/albert-pazderin.md): Backend Engineer - [Alex Berdiugin](https://evilmartians.com/martians/aleksandr-berdiugin.md): Account Director - [Alena Kirdina](https://evilmartians.com/martians/alena-kirdina.md): Sr. Product Designer - [Alexander Abroskin](https://evilmartians.com/martians/alexander-abroskin.md): Backend Engineer - [Alexey Nayden](https://evilmartians.com/martians/alex-nayden.md): Senior Backend Engineer, Team Lead - [Aleksandr Slepchenkov](https://evilmartians.com/martians/aleksandr-slepchenkov.md): Frontend Engineer - [Alexander Baygeldin](https://evilmartians.com/martians/alexander-baygeldin.md): Backend Engineer - [Alexander Madyankin](https://evilmartians.com/martians/alexander-madyankin.md): Sr. Mobile Engineer - [Alexander Tishchenko](https://evilmartians.com/martians/alexander-tishchenko.md): Co-founder and Executive Vice President - [Alexey Gaziev](https://evilmartians.com/martians/alexey-gaziev.md): Head of ML Department - [Alexey Plutalov](https://evilmartians.com/martians/alexey-plutalov.md): Sr. Frontend Engineer - [Alexey Ivanov](https://evilmartians.com/martians/alexey-ivanov.md): Sr. Frontend Engineer - [Amanda Kinney Santibanez](https://evilmartians.com/martians/amanda-kinney.md): Communication Manager - [Andrew Kozin](https://evilmartians.com/martians/andrew-kozin.md): Backend Engineer - [Andrey Novikov](https://evilmartians.com/martians/andrey-novikov.md): Backend Engineer - [Andrey Deryabin](https://evilmartians.com/martians/andrey-deryabin.md): Senior Backend Engineer - [Andy Barnov](https://evilmartians.com/martians/andy-barnov.md): Writer. SRE at Le Wagon - [Anna Selezniova](https://evilmartians.com/martians/anna-selezniova.md): Frontend Engineer - [Andrey Sitnik](https://evilmartians.com/martians/andrey-sitnik.md): Author of PostCSS and Autoprefixer, Principal Frontend Engineer - [Anton Lee](https://evilmartians.com/martians/anton-lee.md): Sr. Backend Engineer - [Anton Lovchikov](https://evilmartians.com/martians/anton-lovchikov.md): Head of Design - [Anton Senkovskiy](https://evilmartians.com/martians/anton-senkovskiy.md): Account Manager - [Artem Shibakov](https://evilmartians.com/martians/artem-shibakov.md): Frontend Engineer - [Arthur Objartel](https://evilmartians.com/martians/arthur-objartel.md): Product Designer - [Artur Petrov](https://evilmartians.com/martians/artur-petrov.md): Backend Engineer - [Camila Mirabal](https://evilmartians.com/martians/camila-mirabal.md): Tech writer - [Dan Kozlov](https://evilmartians.com/martians/dan-kozlov.md): Frontend Engineer - [Dmitry Tsepelev](https://evilmartians.com/martians/dmitry-tsepelev.md): Sr. Backend Engineer - [Danil Shashkov](https://evilmartians.com/martians/danil-shashkov.md): Frontend Engineer - [Ekaterina Shibakova](https://evilmartians.com/martians/ekaterina-shibakova.md): Frontend Engineer - [Egor Lukin](https://evilmartians.com/martians/egor-lukin.md): Backend Engineer - [Evgenii Shkodin](https://evilmartians.com/martians/evgenii-shkodin.md): Frontend Engineer - [Denis Lifanov](https://evilmartians.com/martians/denis-lifanov.md): Backend Engineer - [Evgeniy Valyaev](https://evilmartians.com/martians/evgeniy-valyaev.md): Frontend Engineer - [George Asfour](https://evilmartians.com/martians/george-asfour.md): Backend Engineer - [Gleb Pospelov](https://evilmartians.com/martians/gleb-pospelov.md): Frontend Engineer - [Gleb Stroganov](https://evilmartians.com/martians/gleb-stroganov.md): Product Designer - [Igor Platonov](https://evilmartians.com/martians/igor-platonov.md): Backend Engineer - [Ilya Cherepanov](https://evilmartians.com/martians/ilya-cherepanov.md): Site Reliability Engineer - [Gleb Solntsev](https://evilmartians.com/martians/gleb-solntsev.md): Artist - [Ivan Buryak](https://evilmartians.com/martians/ivan-buryak.md): Frontend Engineer - [Irina Nazarova](https://evilmartians.com/martians/irina-nazarova.md): CEO - [Ivan Chepurin](https://evilmartians.com/martians/ivan-chepurin.md): Frontend Engineer - [Ivan Eltsov](https://evilmartians.com/martians/ivan-eltsov.md): Frontend Engineer - [Ivan Evtukhovich](https://evilmartians.com/martians/ivan-evtukhovich.md): Senior Backend Engineer, Team lead - [Julia Egorova](https://evilmartians.com/martians/julia-egorova.md): Backend Engineer - [Kirill Kuznetsov](https://evilmartians.com/martians/kirill-kuznetsov.md): Head of SRE - [Kir Shatrov](https://evilmartians.com/martians/kir-shatrov.md): Sr. Backend Engineer and a Rails hacker - [Kirill Yakovenko](https://evilmartians.com/martians/kirill-yakovenko.md): Account Manager - [Ksenia Schneider](https://evilmartians.com/martians/ksenia-schneider.md): Product Designer - [Maxim Filatov](https://evilmartians.com/martians/maxim-filatov.md): DevOps Engineer - [Marina Naperstak](https://evilmartians.com/martians/marina-naperstak.md): CEO, imgproxy - [Maxim Kushner](https://evilmartians.com/martians/maxim-kushner.md): Engineering Manager - [Maxim Skorynin](https://evilmartians.com/martians/maxim-skorynin.md): iOS Engineer - [Misha Merkushin](https://evilmartians.com/martians/misha-merkushin.md): Backend Engineer - [Natik Gadzhi](https://evilmartians.com/martians/nate-gadzhi.md): Account Manager - [Nikolay Sverchkov](https://evilmartians.com/martians/nikolay-sverchkov.md): Backend Engineer - [Niki Voronov](https://evilmartians.com/martians/niki-voronov.md): Account Manager - [Nina Torgunakova](https://evilmartians.com/martians/nina-torgunakova.md): Frontend Engineer - [Pavel Grinchenko](https://evilmartians.com/martians/pavel-grinchenko.md): Frontend Engineer - [Pasha Kalashnikov](https://evilmartians.com/martians/pasha-kalashnikov.md): Backend Engineer - [Polina Gurtovaya](https://evilmartians.com/martians/polina-gurtovaya.md): Sr. Frontend Engineer - [Olga Rusakova](https://evilmartians.com/martians/olga-rusakova.md): Head of Communications - [Ravil Bayramgalin](https://evilmartians.com/martians/ravil-bayramgalin.md): Backend Engineer, Ruby on Rails contributor, Open Source activist - [Rita Klubochkina](https://evilmartians.com/martians/rita-klubochkina.md): Sr. Frontend Engineer - [Rina Sergeeva](https://evilmartians.com/martians/rina-sergeeva.md): Backend Engineer - [Roman Shamin](https://evilmartians.com/martians/roman-shamin.md): Prev. Head of Design - [Ruslan Shakirov](https://evilmartians.com/martians/ruslan-shakirov.md): Backend Engineer - [Sampo Kuokkanen](https://evilmartians.com/martians/sampo-kuokkanen.md): Head of Evil Martians Japan - [Russ St Amant](https://evilmartians.com/martians/russ-st-amant.md): Sr. Mobile Engineer - [Sara Dolgan](https://evilmartians.com/martians/sara-dolgan.md): Sr. Backend Engineer, Open Source activist - [Sasha Koss](https://evilmartians.com/martians/sasha-koss.md): Frontend Engineer - [Sergey Nebolsin](https://evilmartians.com/martians/sergey-nebolsin.md): Sr. Backend Engineer - [Sergey Alexandrovich](https://evilmartians.com/martians/sergey-alexandrovich.md): Author of imgproxy - [Sergey Dolganov](https://evilmartians.com/martians/sergey-dolganov.md): Sr. Backend Engineer, Open Source activist - [Sergey Ponomarev](https://evilmartians.com/martians/sergey-ponomarev.md): Sr. Backend Engineer - [Svyatoslav Kryukov](https://evilmartians.com/martians/svyatoslav-kryukov.md): Backend Engineer - [Timothy N. Tsvetkov](https://evilmartians.com/martians/timothy-n-tsvetkov.md): Backend Engineer - [Travis Turner](https://evilmartians.com/martians/travis-turner.md): Tech Editor - [Vadim Pleshkov](https://evilmartians.com/martians/vadim-pleshkov.md): Product Designer - [Valentin Kiselev](https://evilmartians.com/martians/valentin-kiselev.md): Backend Engineer - [Valery Bugakov](https://evilmartians.com/martians/valery-bugakov.md): Frontend Engineer - [Vadim Kotov](https://evilmartians.com/martians/vadim-kotov.md): Frontend Engineer - [Viktor Sokolov](https://evilmartians.com/martians/viktor-sokolov.md): Sr. Backend Engineer - [Vitalii Yulieff](https://evilmartians.com/martians/vitalii-yulieff.md): Backend Engineer - [Victoria Melnikova](https://evilmartians.com/martians/victoria-melnikova.md): Head of New Business, Host of Dev Propulsion Labs - [Vladimir Dementyev](https://evilmartians.com/martians/vladimir-dementyev.md): Principal Backend Engineer - [Vladimir Kochnev](https://evilmartians.com/martians/vladimir-kochnev.md): Backend Engineer - [whitequark](https://evilmartians.com/martians/whitequark.md): Backend Engineer - [Vladimir Zhuravlev](https://evilmartians.com/martians/vladimir-zhuravlev.md): Frontend Engineer - [Yaroslav Kurbatov](https://evilmartians.com/martians/yaroslav-kurbatov.md): Backend Engineer - [Yaroslav Lozhkin](https://evilmartians.com/martians/yaroslav-lozhkin.md): Product Designer - [Yaroslav Markin](https://evilmartians.com/martians/yaroslav-markin.md): Co-founder and CTO - [Yuri Mikhin](https://evilmartians.com/martians/yuri-mikhin.md): Frontend Engineer - [Yuriy Artyukh](https://evilmartians.com/martians/yuriy-artyukh.md): Frontend Engineer