• 8 min read
    Misguided Mark misrepresents Micro-services: A story about paradigms
    Tom was brewing tea in preparation for a 5 o'clock meeting he knew little about. The agenda was so vague it might as well have been left out - it read “Mark introduces a new system for controlling 3rd party IoT water sprinklers”. That was standard practice for CorpCorp - the company Tom worked...
  • 6 min read
    How I stumbled upon Strada while forwarding an email
    I wanted to forward an email one evening, so I opened up the Hey app on my phone, found the email, tapped on the “More” button, and just before I hit “Forward” I noticed a “Share or print…” button at the bottom of the screen. I hit “Share” and to my surprise was greeted by a share sheet. It...
  • 4 min read
    The Judo way
    As a kid I practiced Judo which is a martial art as well as a philosophy. And my Judo teacher gave us a philosophical story which I came to understand only recently and which helped me achieve more than I though was possible. So I wanted to share it. The story was about a small tree in a strong...
  • 4 min read
    New coat of paint
    Recently I got the urge to write again so I gave this blog a new coat of paint, and decided to give a brief history, the reason I stopped writing and an explanation as to why I moved away from Medium. I started this blog back in 2016 as a way to share and discuss ideas and solutions to problem's...
  • 6 min read
    GraphQL file upload with Shrine
    At the moment of writing there is no officially supported way to do file upload through GraphQL. Here is a roundup of all available methods to do file upload through it, their pros and cons. This post grew out of a request on the Shrine issue tracker — you can find the original issue here. It's...
  • 5 min read
    Function composition >> Ruby
    Last week Proc#<< and Proc#>> got merged into Ruby 2.6. This opens the door for function composition. Here’s my opinion as to why this is a great leap forward for Ruby and what needs to improve. Composition vs. inheritance Ruby is an object-oriented language (among others), meaning it has the...
  • 7 min read
    Best image uploader for Rails — Revisited
    Three years ago I wrote about how to choose the right uploader gem for your project. Since the time the original article has been published, all mentioned libraries got updated, one got deprecated, and two new libraries have appeared. I feel it's time to revisit this topic. Why do we use...
  • 11 min read
    Licensing software
    Recently I've started working on a small Ruby library. While I was sketching the architecture of it to I was listening to some lectures from Richard M. Stallman which got me thinking about how I should license my library. Note: I'm by no means a legal expert. Everything written here is what I've...
  • 7 min read
    Do you really need WebSockets?
    Over the years I've had this conversation a couple of times. This post will explain why we use WebSockets, how they can be used, what alternatives exist and when to use them. Every time I worked on a project where we had to implement any kind of a "real-time" component, usually a chat or an...
  • 13 min read
    RabbitMQ is more than a Sidekiq replacement
    I've had gripes with Sidekiq because of which I switched to RabbitMQ. Here are my thoughts and experiences after a year of using it in production. I got inspired to write this post by the overwhelming response I received for my talk at the local Ruby user group. Why do we need Sidekiq or...
  • 8 min read
    Supercharging services architectures with RabbitMQ
    When I first started using RabbitMQ I didn't understand its usefulness beyond a job queue, but it's helped me to grow and manage services architectures without headaches. Services Architecture In web development, a services architecture describes a single application that consists of multiple,...
  • 6 min read
    Tips to improve your tests
    Peoples' test suites often get out of hand. Having thousands of tests that run for hours on some CI should be a thing of the past. There doesn't exist code that's too hard to test or code that can't fail. You shouldn't waste your time waiting for your test suite, or chasing some bug you are...
Load more