One of my favorite activities is hiking. I'm fortunate to live close to a mountain where I can go for a hike any time I want - often early in the morning,...| stanko.io
Last week I found a backup of the very last PHP app I ever wrote. The backup was from 2009, but the app itself was written in 2007 - 18 years ago! Back then...| stanko.io
Hackathons are great. When a friend of mine asked me if I wanted to go with him to Copenhacks I had no idea that we would spend 24 hours reverse engineering Facebook's Messenger, let alone win first place. The journey to CopenhagenWe usually go to a lot of hackathons and coding competitions, but...| Stanko Krtalic Rusendic
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...| Stanko Krtalic Rusendic
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 ArchitectureIn web development, a services architecture describes a single application that consists of multiple,...| Stanko Krtalic Rusendic
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...| stanko.io
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...| Stanko Krtalic Rusendic
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...| Stanko Krtalic Rusendic
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...| Stanko Krtalic Rusendic
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 uploader...| Stanko Krtalic Rusendic
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. inheritanceRuby is an object-oriented language (among others), meaning it has the...| Stanko Krtalic Rusendic
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...| Stanko Krtalic Rusendic
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...| Stanko Krtalic Rusendic
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...| Stanko Krtalic Rusendic
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...| Stanko Krtalic Rusendic
From my experience Scrum is the prevalent project management framework in software development. Most of the teams I was part of used it to develop, deliver and maintain their projects. Despite its prevalence I always felt like Scrum was bogs me down - that it was more harmful than useful. I knew...| Stanko Krtalic Rusendic
“I’ve spent a lot of my life worried that people will think I don’t know enough. Sometimes, that worry has made me use big words when I didn’t need to. –Randall Munroe in the foreword to the Thing Explainer” I used to be a stickler for organizing code by what it was. Models, decorators, form...| Stanko Krtalic Rusendic
At my first job I used to take a break every time I got stuck on a problem until one day my boss caught me looking out of the window. He didn’t say anything the first time he saw me, but when he saw me in the same position some 15 min later he yelled “At least sit by your desk and have your...| Stanko Krtalic Rusendic
ActiveModel is one of my most used tools in Rails applications. I use it in service objects, form objects and objects that represent external entities. Why? Because it provides a nice interface for validating inputs and results, it can have callbacks for pre and post-processing data, and it...| Stanko Krtalic Rusendic
I recently took part in a discussion that brought to light the most unusual argument against having a monolith that I have ever heard - that a monolith is a single point of failure. I want to make clear that I consider monoliths and microservices neither good nor bad, or universally better or...| Stanko Krtalic Rusendic
At work, as part of a project I’m working on, I wanted to add a new reference to a table. ”Simple enough” - I thought. Spoiler alert, it wasn’t. Adding a reference from one table to another is straight forward in Rails. You create a migration using rails generate and then write in it something...| Stanko Krtalic Rusendic
I noticed that a view I was working on was rendering much slower than I would expect it to. The view showed a list of events, together with the person that generated the event and the device that the event belongs to. It took nearly half a second to render 25 events, while other similar pages...| Stanko Krtalic Rusendic
Last Wednesday my girlfriend and I woke up at 4 AM and headed to the Zagreb Airport to catch a flight to Helsinki. I haven’t been in Helsinki since Junction 2016, but with EuRuKo 2022 (the European Ruby Konference - this is not a typo) being there this was the prefect opportunity to visit...| Stanko Krtalic Rusendic
One weekend in 2017 I was using my Macbook Pro when all of a sudden the screen turned black and it started spewing white smoke like it had just elected the new Pope. Luckily, it didn’t catch fire. Later that day I opened up the laptop to see what happened. To my surprise it wasn’t the battery,...| Stanko Krtalic Rusendic
Seeking perfection is a fool’s errand. Perfection is a fading spark that can only be achieved for oneself - never when working with others - and as soon as it’s gone the search for the new perfect begins. By constantly searching for perfection you end up living in the fantastic future - in the...| Stanko Krtalic Rusendic
Tech dept doesn’t occur by accident. You go into it intentionally - it is a loan like any other, but instead of loaning money you loan time. When you want to “save time” by implementing a hack (something that goes against the grain of the software’s architecture) you are making an intentional...| Stanko Krtalic Rusendic
For me, instant messaging is overwhelming. Keeping up with Slack or Discord messages often feels like drinking from a fire hose of information. And some features of these apps bring out the worst in people. I wish these apps were more like email, because email got a lot of things right. My...| Stanko Krtalic Rusendic
I use writing as a tool to organize my thoughts, but lately I have started to question if that’s the right order to do things. Writing is thinking. Text is just someone’s thoughts on paper. It’s obvious that thinking has to come first, but that’s not always the case. When I sit down to write...| Stanko Krtalic Rusendic
This week I finished Elden Ring, and the moment I put the controller down I felt a void as if a good friend moved to another country and I wouldn’t see them for a long time. This was the best game I have played in years. But why? On the surface it seems just like any other open-world ARPG, yet...| Stanko Krtalic Rusendic
With a lot of tech companies laying people off in the last month I got to see how insane the firing practices in the US are and how greed rules supreme in the tech industry. But this is only a harbinger of what’s to come. Through friends and from what I’ve seen first hand, the standard procedure...| Stanko Krtalic Rusendic
Many projects I work on have some kind of view component that is repeated multiple times in the same view, or is present in multiple different views. These view components can be anything that has a specific styling, JavaScript specific attributes (like Stimulus controllers), rendering logic, and...| Stanko Krtalic Rusendic
I started this iteration of my blog because I grew dissatisfied with Medium. Like anyone migrating from any one platform to another I requested an export of my blog posts from them and got back a ZIP file containing HTML files. The first thing that stood out was a lack of any media files -...| Stanko Krtalic Rusendic
“If thought corrupts language, language can also corrupt thought - George Orwell” One thing that annoyed me anywhere I worked was that people limit themselves to a narrow subset of English. A subset that's full of buzzwords and phrases that sound impressive but lack meaning. It's a subset...| Stanko Krtalic Rusendic
Last month my landlord called me and told me that I had to move out because he was going to sell the apartment I live in. In a way, this came as a blessing. I wanted to move out of that place by the end of the year either way. But at the time I had no clue what hellscape finding an apartment in...| Stanko Krtalic Rusendic
After two years, this week I finally caved and changed my current employment title on LinkedIn from Software Engineer to Software Architect. This isn’t a position where I'm am supposed to do much programming - the thing I love most, and the thing I'm good at - but rather make high-level...| Stanko Krtalic Rusendic
It was Wednesday morning and I got up even earlier than I usually do because I had to be on a plain to Amsterdam in a few hours. I haven't been to Amsterdam since 2019 when I briefly meandered through it's streets on my way to EuRuKo in Rotterdam. This time I was going there for Rails World which...| Stanko Krtalic Rusendic
This month I worked on tracking when a device connected and disconnected to a WebSocket backed with ActionCable. At first, this seemed like a simple problem to solve, but it turned out to be much more complicated. I started with a simple solution, which was to mark a Device as being online in...| Stanko Krtalic Rusendic
I knew what Action Cable was about and roughly how it worked since it was released. But lately I've developed a much deeper understanding of it because I had to extend it and explain its internals to others. The following is how I explained Action Cable to myself. I took a top-down approach,...| Stanko Krtalic Rusendic
I rent a bare metal server from Scaleway where I host all my apps. For me, that's much more economical than running multiple small VPS boxes. 50€ a month buys me 2TB of disk space, 64GB of RAM and an 4 core / 8 thread CPU on which I can host two or three dozen apps. Compare that to AWS or...| Stanko Krtalic Rusendic
Last week, I had a discussion with a coworker about how Rails indexes columns used in polymorphic associations. He thought that the order of columns in the index should be flipped - instead of indexing by type and ID, it should index by ID and type - as that way the most restrictive column is...| Stanko Krtalic Rusendic
The recent Hotwire pop-up drama has shown me that some have forgotten that software is made by people - people with different backgrounds, different values, different skills, and different flaws. The diversity in opinions and aproaches is what makes modern day software development great. That’s...| Stanko Krtalic Rusendic
A few weeks ago I was woken up with the following message "Hey, devices are randomly disconnecting from WebSockets can you come online and help?". Usually, when a widespread problem like this occurs out of the blue, my first goal is to make the app mostly operational again and my second goal is...| Stanko Krtalic Rusendic
My first job was at a digital agency. In addition to app development we also hosted the apps that we'd develop for our clients. This allowed us to avoid fiddly managed hosts, and since we ran everything on a beefy bare-metal server we didn't have to manage dozens of machines at different...| Stanko Krtalic Rusendic
This week I went for a coffee with a friend. As we talked the topic of hobbies came up. I mentioned that I was having a lot of fun working on a toy project over the past week, and then I showed it to him. Him: So you are dabbling in React? Me: No, this is just Rails. Him: Which libraries did you...| Stanko Krtalic Rusendic
Last week we had an AI hackathon at work during which we added an MCP server to our Rails app. This was much easier than I expected, the result was both...| stanko.io
When Campfire - the first Once product - came out, a few of us at Ruby Zagreb pitched in to buy a copy. Prometheus had brought fire from Mount Olympus, and...| stanko.io