-
Ruby `fetch` unexpected evaluation of params
Ruby
fetch
can have an unexpected side-effect which is that the fallback value gets evaluated even if the key is present. Lets explore that with a code example. -
Anatomy of a good interview question
Good interview questions aren’t just about checking technical boxes; they’re a way to understand how someone thinks, give them a sense of the real work, and make space for meaningful discussion. They should generate clear signal without relying on tricks or trivia. Done right, they leave both sides feeling like the time was well spent.
-
How to leverage indexes for `ILIKE` & `LIKE` queries
You cannot always avoid
LIKE
orILIKE
queries when it comes to solving specific business requirements. However, it does not mean that those queries have to be slow. Lets look at how the keywords affect query usage, and what can be done to optimise the query plans and the impact each option has on the overall performance of the database. -
What is `FOR UPDATE SKIP LOCKED` and how it can impact your query plans
You can use
SELECT ... FOR UPDATE SKIP LOCKED
as an very easy way to parallelize task processing in your application with minimal overhead. But be careful of the impact this can have on your query plans! -
Intermittement errors & CI failures after upgrading to Rails 7.1
Are you seeing your CI hang, or random error messages like:
message type 0x43 arrived from server while idle
in your test log? It could all be related to a missing default setting in your Rails config. -
How to facilitate the review & approval of your changes
Contributing to new repositories that your team does not own can feel daunting, and raising your first merge request can feel like a genuine hurdle to be passed.
-
Now, Next, Later - how to simplify planning
Planning work is usually a very heated topic with no universally correct answer. I’ll try to expand on the concept of
Now
,Next
,Later
planning that I have been using for the last few months and why I think they make planning for any engineering team much more manageable. -
Three types of metrics to consider when developing your next feature
It can be very tempting to instrument all the things and have a lot of data, but that comes with a burden, both financial and also in terms of time spent developing. What would be the prime candidates for observing and generating metrics on?
-
Drawbacks of using Kafka as a task processing queue
Kafka is great for a lot of things, but using it as a task-processing queue is not where it shines, and I’ll tell you a few reasons why.
-
Why problem statements matter
Writing a problem statement before jumping into coding is an undervalued approach, and I will tell you why.
-
When pointers bite back in Go
Overriding pointers inside of local function works as it should… but not the way you might expect!
-
Launching Plex/Radarr/Sonarr on your own VM
Launching a full stack Plex setup including
nginx
reverse proxy, as well as automatic cert generation by LetsEncrypt. -
Kafka streaming in Python using Faust
Understanding the use-cases and how
Faust
works, as well as some of the more nifty features. -
Singletons and instance varibles in Ruby
Understanding how
class << self
works and its interaction with the@instance_var
and the big trouble it can cause. -
Unexpected Integer behaviour in RLang
Understanding why “100000” and 100000 are not equal… and a deep dive into the
factor
logic of RLang.