Evil Martians Chronicles

evilmartians.com · Company blog · on HN since 2015

Evil Martians, a product engineering consultancy, writes about Ruby on Rails, CSS, Docker, PostgreSQL and front-end practice.

What HN saysHN commenters cite its OKLCH color article as changing their view of CSS color, and also point to its login form and Turbo Mount write-ups.
138HN people shared it
32linked it in comments
255stories submitted
3.9Kstory points
3 months agolast shared
2015people per year2026

Most-shared posts

  1. 1
    Oklch in CSS: why we moved from RGB and HSL (2024)
    26 people · 127 points · first shared 2022 · 30 comments on HN
  2. 2
    How to Favicon in 2021: Six files that fit most needs
    12 people · 374 points · first shared 2020 · 82 comments on HN
  3. 3
    Ruby on Whales: Dockerizing Ruby and Rails Development
    6 people · 20 points · first shared 2019 · discussion on HN
  4. 4
  5. 5
  6. 6
    AnyCable: Action Cable on steroids
    4 people · 15 points · first shared 2016 · discussion on HN
  7. 7
  8. 8
    A no-go fantasy: writing Go in Ruby with Ruby Next
    3 people · 170 points · first shared 2021 · 60 comments on HN
  9. 9
    Better web video with AV1 codec
    3 people · 149 points · first shared 2019 · 65 comments on HN
  10. 10
    What could Go wrong with a mutex
    3 people · 67 points · first shared 2021 · 58 comments on HN
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
    Beyond monospace: the search for the perfect coding font
    3 people · 10 points · first shared 2024 · discussion on HN

What HN people wrote when they linked it

notpushkin · 2026-05-31
Evil Martians have a nice write-up on the login forms: https://evilmartians.com/chronicles/html-best-practices-for-login-and-…
sabellito · 2025-05-18
LCH is awesome but OKLCH is even better! https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl#comp… Can honestly say this article changed my perspective on this subject drastically, such an amazing tool. I was very surprised that my designer friends hadn't heard of oklch at all, it solves a whole category of problems.
ringmaker · 2025-03-31
It's an OKLCH color picker, as well as a converter for other color spaces. https://cmringmaker.github.io/OKLCH-Picker/ https://github.com/cmRingmaker/OKLCH-Picker/ I was inspired by the article over at evilmartians[0] about OKLCH, and I loved their oklch picker. Decided I wanted to learn more about OKLCH by implementing my own tool that I've released this week. Had a lot of fun with this project, and am getting plenty of usage out of it already. [0] https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl
hahahacorn · 2024-10-08
Is there an equivalent to Turbo Mount for Htmx? https://evilmartians.com/chronicles/the-art-of-turbo-mount-hotwire-mee… I think it's one of the best ways to use Hotwire/Turbo. Default to Hotwire to whatever degree of understanding you have, and as soon as it feels like HTMX/Hotwire isn't the right tool, you can easily switch to your framework of choice.
alwillis · 2024-06-28
Great question. A great article on why OKLCH: “OKLCH in CSS: why we moved from RGB and HSL” [1]. [1]: https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl
ashishb · 2023-02-23
Docker builds are not slow if you do them properly 1. Add layers properly, so that, the most changing code appears towards bottom. 2. Use a builder pattern where you build in one image and then copy the output binary into the second image (https://ashishb.net/tech/docker-101-a-basic-web-server-displaying-hell… 3. Use Docker layer caching on GitHub Actions or your favorite CI(https://evilmartians.com/chronicles/build-images-on-github-actions-wit… IMHO, hadolint is a good docker linter but there is no tool in the market that helps people optimize docker images.
Tade0 · 2021-11-14
Going full solar and wind is going to take some time(20 year-ish?) and in the meantime energy storage will get there in terms of scale and cost. LiFePO4 packs already started trading below $100/kWh in 2020: https://evilmartians.com/chronicles/a-no-go-fantasy-writing-go-in-ruby… CATL is pushing sodium-ion batteries: https://www.reuters.com/business/energy/catls-new-sodium-ion-battery-h… You don't even need a lot of storage to greatly increase maximum stable solar and wind share. Exiting times ahead of us.
sondh · 2019-10-07
These guys (https://evilmartians.com/) sure understands a thing or two about images and image compression. I have used their imgproxy[1] (Golang image resizer) for a long time and it has been solid from the very beginning. [1] https://github.com/imgproxy/imgproxy
jacobwg · 2023-02-23
This is good advice! > Use Docker layer caching on GitHub Actions or your favorite CI (https://evilmartians.com/chronicles/build-images-on-github-actions-wit… Since the time that article was written, BuildKit added native support for interacting with the GitHub Actions cache, so it's even easier than they describe: - uses: docker/build-push-action@v4 with: cache-from: type=gha cache-to: type=gha,mode=max Kyle actually wrote a blog post with more details if you're interested: https://depot.dev/blog/docker-layer-caching-in-github-actions What has to happen with cache-to and cache-from is BuildKit has to create cache tarball files for each of the layers to be cached, then upload them to the remote cache destination. Then next build when there's a cache match, BuildKit downloads the tarballs from the remote store and un-tars them so that it can continue the build. This process can be slow, from creating the tarballs, to transferring them over the network, to unpacking them again. This is one of the reasons we created Depot in the first place. We had several commercial projects with highly optimized Dockerfiles, where saving and loading cache to GitHub Actions took several minutes, representing a significant amount of the overall build time. We also wanted to use some more advanced Dockerfile features like `RUN --mount=type=cache` that are entirely unsupported in GitHub Actions. With Depot, builds re-use the same persistent…
nylon4831 · 2025-08-25
I liked this article for an introduction to OKLCH: https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl
JimDabell · 2025-08-25
I found this to be a good article on the subject: https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl Along with their picker / converter here: https://oklch.com/ Discussed on Hacker News here: https://news.ycombinator.com/item?id=43073819 (6 months ago, 30 comments)
nonconstant · 2025-07-15
We're experiencing a global peak of Ruby meetups (globally). About 800-900 meetups in the last 12 months as per https://rubyconferences.org/meetups/ I'm hosting probably the largest Ruby meetup in San Francisco, see https://lu.ma/sfruby Rails is not at the peak of visibility (like it was in 2008-2014), it is not a "default stack for new products" but here's what we see: Rails startup just did a large IPO (Chime), another Ruby startup filed for IPO (Figma) Rails startup just posted a record ARR growth (bolt.new) Lots of startups and lots of success stories. See https://evilmartians.com/events/startups-on-rails-in-past-present-and-… Again, not the #1 or "default" choice, which is probably a good thing, because we are past the hype+disappointment cycle and on the pragmatic side of things.
ChadNauseam · 2025-04-29
oklch and oklab are much easier to reason about than alternatives. For oklch, The first parameter is the lightness, the second is the chroma (essentially its saturation), and the 3rd is the hue. I find it very easy to tweak colors by making them brighter or more saturated. Unlike lch, such changes in oklch have regular effects on how the color will be percieved. This page has more information: https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl
psygn89 · 2025-02-17
The benefit of OKLCH is that it normalizes the colors to our perception. So a saturation % change in OKLCH is more of what we'd expect than in HSL. This is good for design systems that want to have a visually expected output after running it through a color function. See the part on https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl#oklc… and notice the cut out in the right column. Now pretend to stretch those cutouts to fit the edges of the chart, you'll have a color gradient that is more uniform across the board versus the left where you have darker areas.
NetOpWibby · 2025-02-17
I learned about it from https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl And when I tried it out for myself I was amazed at the color boost. That's when I decided to create a theme!
mxfh · 2024-12-11
Rotating hues in HSL is a start, but not something that yields consistent or equivalent results for every imaginable combination. See the HSL .vs OKLCH plots here; https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl That's even before going into accessibility considerations with safeguarding the sets for common types of color vision deficiencies. Also I only clicked, because I thought it was some kind of demo on the https://en.wikipedia.org/wiki/Four_color_theorem
block_dagger · 2024-11-22
According to this article [1] OKLCH accounts for biases in human perception of color brightness. Seems useful, but I don't know the answer to your question. [1] https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl
fhub · 2024-01-09
> And forgetting that extra predicate on deleted_at can have dangerous consequences as it accidentally returns data that’s no longer meant to be seen. For postgres you could consider using a view instead. See https://evilmartians.com/chronicles/soft-deletion-with-postgresql-but-…
vhodges · 2022-12-28
NoInkling · 2022-07-21
dmix · 2022-05-21
I'm more interested in the concept of ViewComponents than just the current library. It's really just starting with Rails adopting ActionCable and Phoenix using LiveView (which I see as both immature proto-concepts of the future of JS frontends). This blog post (and my linked talk above) opened my eyes on the subject: https://evilmartians.com/chronicles/anycable-actioncable-on-steroids Right now the complexity is a bit high on this approach^ and I personally just use a mix of Vue + Turbolinks/Rails at work for legacy/simplicity reasons. But I'm watching the space.
kiallmacinnes · 2021-05-19
Yes, you can use gpg-agent to handle this - I've been doing it for years... Every machine does need to be setup to use gpg-agent in place of ssh-agent, which frankly is a little annoying - but once it's setup your key is entirely on the YubiKey or similar. Here's[1] the first blog I could find that at a glance appears to provide the right instructions. [1]: https://evilmartians.com/chronicles/stick-with-security-yubikey-ssh-gn…
bestinterest · 2021-01-15
There's a project called AnyCable which replaces ActionCable to give Rails the real-time performance equivalent of LiveView. See this https://evilmartians.com/chronicles/anycable-actioncable-on-steroids Looks like having 20,000 idle clients connected to a server sits at only 380MB and Erlang is at 737MB.
palkan · 2020-11-17
It’s possible to use health checks for that kind of “wait-for-it”-s. Checkout the configuration here: https://evilmartians.com/chronicles/ruby-on-whales-docker-for-ruby-rai… Note that it requires using Compose v2.4, not 3.x.
jhncls · 2019-10-07
The text reads Humans! We come in peace and bring cookies. We also care about your privacy: if you want to know more or withdraw your consent, please see the Privacy Policy. and links to [0]. Like most websites, also here a lot of analytics is gathered, over which you have little control. [0] https://evilmartians.com/privacy
iskin · 2019-03-12
> I doubt they understand the implications of the commands they're running. I put a description for every arguments used by me in FFmpeg commands. https://evilmartians.com/chronicles/better-web-video-with-av1-codec#un… Is it not enough?

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close