The sword is yours: transferring projects to another team unscathed

A complete look at how we successfully hand off projects to another team. | Continue reading


@evilmartians.com | 1 year ago

Martians unveiled: infusing a new site with extraterrestrial tech and soul

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. | Continue reading


@evilmartians.com | 1 year ago

Signs your project needs a design system

Find out why your project would benefit from a shared set of practices and patterns between designers and frontend engineers. | Continue reading


@evilmartians.com | 1 year ago

Taking off the Heroku training wheels: the Rails preflight checklist

An opinionated guide for small teams on setting up Heroku to deploy Rails applications—with pleasure. | Continue reading


@evilmartians.com | 1 year ago

The joy of Variable Fonts: getting started on the Front end

Get set up with variable fonts on the frontend: properly load them, deal with settings, look at 'gotchas' and more! | Continue reading


@evilmartians.com | 1 year ago

Vite-lizing Rails: get live reload and hot replacement with Vite Ruby

How to use Vite.js to manage assets in Rails 7 applications with a hybrid or fully Dockerized development environment | Continue reading


@evilmartians.com | 1 year ago

Soft deletion with PostgreSQL: but with logic on the database

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. | Continue reading


@evilmartians.com | 1 year ago

Devs in mind: how to design interfaces for developer tools

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! | Continue reading


@evilmartians.com | 2 years ago

Variable fonts in real life: how to use and love them

A look at variable fonts in real life. Everything’s here: practical examples, file optimization and accessibility benefits, and… the future! | Continue reading


@evilmartians.com | 2 years ago

Stressless Rails Deployments on K8s with Kuby

Exploring the Kuby framework for deploying Rails and AnyCable application to Kubernetes and introducing the kuby-anycable plugin | Continue reading


@evilmartians.com | 2 years ago

TimescaleDB: Understanding and integrating time-series data with Ruby on Rails

Overview of TimescaleDB highlights. Understanding time-series data. Integrating with Ruby on Rails. Implementing views counter demo | Continue reading


@evilmartians.com | 2 years ago

A no-go fantasy: writing Go in Ruby with Ruby Next

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 | Continue reading


@evilmartians.com | 2 years ago

What could Go wrong with a mutex, or the Go profiling story

Profiling Go stacktrace dumps and taking a deep look into how read-write mutexes work | Continue reading


@evilmartians.com | 2 years ago

Pro becomes smart: imgproxy Pro engages machine learning

Welcome to imgproxy Pro 3.0, packed with object-oriented crop gravity, blurring and drawing detections, and auto-quality by SSIM | Continue reading


@evilmartians.com | 2 years ago

Sprockets and Webpacker Duality

How to migrate a large Rails application from Sprockets to Webpacker using a dual build strategy | Continue reading


@evilmartians.com | 2 years ago

Real-time stress: AnyCable, k6, WebSockets, and Yabeda

Introducing a k6 plugin to load test WebSockets and instrumenting the application under test with Yabeda, Prometheus and Grafana | Continue reading


@evilmartians.com | 2 years ago

SPA hexagon: Robust app architecture for mobile and web

See how to adapt a classic hexagonal architecture to single page applications with React Native and TypeScript | Continue reading


@evilmartians.com | 2 years ago

One row, many threads: How to avoid database duplicates in Rails applications

A primer on avoiding duplicates in database tables that back your multi-threaded Rails applications with runnable examples | Continue reading


@evilmartians.com | 2 years ago

Decoding AVIF: Deep dive with cats and imgproxy

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 | Continue reading


@evilmartians.com | 2 years ago

Accessible Design from the Get-Go

20% of designer effort that can take care of 80% of a11y challenges | Continue reading


@evilmartians.com | 2 years ago

Imgproxy: An open source image proxying server case study

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 to tailor to your business | Continue reading


@evilmartians.com | 2 years ago

Set up Tailwind CSS JIT in a Rails project to compile styles 20x faster

How to switch to Tailwind CSS JIT when using Ruby on Rails and Webpacker. | Continue reading


@evilmartians.com | 3 years ago

Speed up image builds on GitHub Actions with proper Docker layer caching

Learn how to 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. | Continue reading


@evilmartians.com | 3 years ago

How to Favicon in 2021

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 Wepback | Continue reading


@evilmartians.com | 3 years ago

Active Record, Postgres, Rails, and time travel

Learn about Logidze 1.0, a performant Ruby library that tracks Active Record changes using PostgreSQL triggers and JSONB stores. | Continue reading


@evilmartians.com | 3 years ago

Climbing Steep hills, or adopting Ruby 3 types with RBS in a real-world gem

A deep dive into adding Ruby Type Signatures to existing projects and using Steep to perform type checking. | Continue reading


@evilmartians.com | 3 years ago

Reusable development containers with Docker Compose and Dip

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. | Continue reading


@evilmartians.com | 3 years ago

How to GraphQL with Ruby, Rails, Active Record, and No N+1

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 | Continue reading


@evilmartians.com | 3 years ago

Figma DIY: Building a color system plugin from scratch (tutorial)

Build a missing feature for Figma to create a flexible color system for your design project | Continue reading


@evilmartians.com | 3 years ago

Hands-On WebAssembly

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. | Continue reading


@evilmartians.com | 3 years ago

AnyCable 1.0: Fast WebSocket for Ruby, Powered by Go

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. | Continue reading


@evilmartians.com | 3 years ago

Ruby Next: A Transpiler for Ruby

Introducing Ruby Next, a transpiler for Ruby. | Continue reading


@evilmartians.com | 4 years ago

PostCSS 8.0 is coming: Here’s what it brings

Leaner node_modules, faster builds with the visitor API, dropping Babel for development, and more—thanks to your support | Continue reading


@evilmartians.com | 4 years ago

Beyond Fashion: Deep Learning with Catalyst (Hands-On Tutorial)

Step-by-step tutorial for setting up a deep learning pipeline with Catalyst and deploying the model to production. | Continue reading


@evilmartians.com | 4 years ago

It push –force and how to deal with it

What to do if you have accidentally force pushed to the wrong git branch: a step by step tutorial. | Continue reading


@evilmartians.com | 4 years ago

What I learned as a developer from Soviet accidents in Space

How Soviet space tales help the creator of PostCSS to follow best practices in development. | Continue reading


@evilmartians.com | 4 years ago

Web Graphics Done Right

Start taking graphics on the web seriously and boost your applications' performance by learning the essentials about digital image formats. | Continue reading


@evilmartians.com | 4 years ago

GitHub Actions: First Impressions (Of a Rubyist)

A taste of GitHub Actions for managing open-source projects | Continue reading


@evilmartians.com | 4 years ago

Speeding Up Go Modules for Docker and CI

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 … | Continue reading


@evilmartians.com | 4 years ago

Lefthook: The fastest polyglot Git hooks manager

Meet Lefthook, the fastest polyglot Git hooks manager in our galaxy that requires zero setup from your contributors | Continue reading


@evilmartians.com | 4 years ago

Ruby on Whales: Dockerizing Ruby and Rails Development

An exhaustive and documented Docker configuration for developing Ruby and Rails applications | Continue reading


@evilmartians.com | 4 years ago

GraphQL on Rails with React and Apollo: The hands-on guide (3/3)

A hitchhiker’s guide to developing GraphQL applications with Rails and Apollo, part 3: cleaning up the code and setting up subscriptions | Continue reading


@evilmartians.com | 4 years ago

A second part of “GraphQL on Rails” tutorial

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 | Continue reading


@evilmartians.com | 4 years ago

GraphQL on Rails: from zero to the first query

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 | Continue reading


@evilmartians.com | 4 years ago

Rails 6: B-Sides and Rarities

Discover lesser-known Rails 6 features that stay out of the spotlight but can bring a lot to your current applications. | Continue reading


@evilmartians.com | 5 years ago

Storeon: Replacement for “Redux” in just 173 bytes from the creator of PostCSS

Meet a tiny state manager for front-end applications close in spirit to Redux that fits into 173 bytes. | Continue reading


@evilmartians.com | 5 years ago

Astrograph, the GraphQL Interface to Stellar Blockchain

Blockchain meets GraphQL with the first release of a server for exploring Stellar network through a single endpoint. | Continue reading


@evilmartians.com | 5 years ago

Anonymous web authentication with Stellar blockchain

Learn how to implement anonymous blockchain-based web authentication with Stellar, JavaScript and Node.js | Continue reading


@evilmartians.com | 5 years ago