I've been using a simple trick on updown.io since May 2015 to make pages feel faster without doing much work. And I extracted it as a gem so you can too. It's called render-later and I thought it deserved a quick write-up (better late than never). The problem You know that annoying moment when you're building a dashboard and there's one metric that takes 200ms to compute? Maybe it's a database…
In 2024, I migrated from UserVoice to Canny for user feedback collection. This move followed the UserVoice turn to enterprise clients and their removal of free & small plans. UserVoice still offerred me a hidden plan for a small fee after discussion with the support (something like $39 or $49/month as I recall), but who knows when they were gonna kill it, it's never a good idea to rely long-term…
Ruby 3.1.2 vs 3.3.5+YJIT in production In the previous article I discussed about my upgrade process from Ruby 3.1 to ruby 3.3, discovered a potential regression in a specific scenario, and ended up with synthetic benchmark results looking pretty great: Basically much higher performance thanks to YJIT, with an even lower memory usage then before, it's looking good + good. After running it in…
updown.io has been running on ruby 3.1 since... git log -p .ruby-version ... August 2022 so for slighly over 2 years now. More specifically ruby 3.1.2 with jemalloc for better performance . Note: I am not using YJIT in production yet, as my benchmark in 3.1.2 for updown.io daemon code showed a mere 5-10% CPU time performance increase, but with more than 30% memory increase. And after a few days of…
A lot of people are wondering about the technical stack used by updown.io and more generaly by one-man tech companies. A while back (2016) I filled up this information on StackShare . I haven't kept it up-to-date and I don't like to have to maintain yet another third party documentation so it's unlikely I'll update it again. Though it changes very slowly so it's still rather accurate for the…
This investigation was surprising to me so I thought it would be interesting to share my findings and I hope you'll like it. Some of my clients occasionally reported that the updown confirmation email (used to confirm a new email address, provided by Devise ) had been classified as spam, we're talking about this one: Doesn't look too spammy so far but sometimes mails servers running SpamAssassin…
I wanted to improve the responsiveness of the Delete account action, which could be slow for bigger/older accounts due to the many associated records to be destroyed (downtimes, metrics) being sparsely distributed in the database. This sounded like a wonderfully perfect use-case for the recent dependent: :destroy_async option added in Rails 6.1. Except I'm not using ActiveRecord but Mongoid , and…
For a while I've been thinking of "starting a tech blog" . Well technically I already started one a while back on Medium , but I didn't like Medium because of the—let's say poor —reader experience so I didn't want to write on it nor to promote it. I saw many blog tech and hosting platform rise (and die) in the following years, everytime telling myself: "maybe I should just use this one?" and…
Note: This article was initially published on Medium in 2019 and later moved to this official updown.io blog. All times will be given in UTC+2 (CEST) to match monitoring tools screenshots. April 3rd 2019 at 2:30 am : updown.io primary database (MongoDB) server starts to answer queries about 200 times slower than usual, causing an almost total outage of the website and the monitoring daemons 🔥…
Note: This article was initially published on Medium in 2017 and later moved to this official updown.io blog. I recently read this great article about compiling ruby with jemalloc for slightly better performance and smaller memory usage and it got me intrigued. I mean I already knew jemalloc, but I though this kind of optimization (swapping allocation library) was reserved for some very specific…