You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.

Since I started playing with functional programming, not only I’ve dot-chained the hell out of object-oriented code, but I often catch myself thinking: how would I do this in Haskell?

Here’s a couple of examples that come to mind where I contaminated Ruby with functional intuitions.

Nested Loops and Filtering

During the Global Day Of Code Retreat, together with Joanna, we were writing a method to find the eight neighbors of a cell. …


You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.

Recently, I started experimenting with random values in automated tests. It improves the readability of my code and the likelihood of failures in the presence of bugs or wrong mental models.

A Story From Last Week

I was tasked with a new feature in the middle of the worst code you can imagine. I identified a seam where I could introduce the logic, and I was glad to see the surroundings were covered with tests.

However, as soon as I opened the…


You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.

Legacy and greenfield projects are two different beasts. Both require coding, but different rules apply. Failing to make the mental switch is an excellent recipe for getting stuck.

Some developers are perfectionists. But all of us have a minimum level of decency. We would never push bad code according to our definition of quality and skills.

Having an eye for good code is great in greenfield situations where the lack of constraints allows crafting software with finesse.


You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.

This post compares vanilla JavaScript with RxJs. My intent is not to demonstrate whether one or the other is the best approach. As always, it depends.

But I want to highlight the importance of tackling a problem from different angles. In this case, it’s imperative against declarative, or “push” vs. “pull.”

Also, different mental models provide insights that can be exploited in the solution, regardless of the paradigm chosen. …


You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.

Manual testing is an essential piece in the software development puzzle. Still, it’s often not given the respect it deserves. Sometimes, teams work without any quality assurance and don’t test at all. Sometimes, it’s the author of the feature who half-asses manual testing. Sometimes, it’s the client that clicks around the interface without any guidance.

Sure, it would be best to have an expert tester on the team. Still, not having one should not mean disregarding manual…


You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.

Shit happens.

From time to time, I craft software that is not satisfying. Maybe it’s messy, verbose, or namings are off. Maybe it’s over-tested or under-tested. Maybe it’s not correct, or maybe it’s over-engineered. Maybe it just sucks, but I don’t know why.

This happens when there’s a gap between what I developed and what perfect could look like. It’s also known as technical debt. …


You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.

A couple of weeks ago, I talked about going From Temporary Knowledge to Permanent Knowledge. Last week, I shared 10 Knowledge Transfers that Make me Thrive with Legacy Code. Today, I want to ride the momentum and focus on how permanent knowledge got me up to speed with RxJs.

RxJs is a complex library. It’s confusing because it requires solving problems differently. …


You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.

It’s a sunny day, like many others. You just got to the trash room to throw away the rubbish. Something strange jumps to your eyes as soon as you open one of the bins. It’s a metal box. Lifting it up, you notice it ticks the seconds, and it displays a countdown on a red LED screen. Currently, it’s marking 01:14 and going down. A jolt of adrenaline starts circulating in your blood: it’s a bomb.

You…


You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.

My professional career started under the wings of two exceptional people: Ania and Marcin. They taught me something that stayed with me ever since.

I picture three elements of doing something: the WHY, the HOW, and the WHAT. We start with a goal, we rely on strategies and tactics, and execute.

During my internship, my mentors kept insisting on the WHY. I’m glad they entrusted me with figuring out the HOW and the WHAT. …


You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.

Last week I prepared a script to reproduce performance issues. The goal was to populate the database with realistic data to test speed and UX on development and staging. As a result, we realized some screens in the application not only are slow, but they also break when displaying a big dataset.

We started working on the page that lists all the orders submitted by customers. The script inserts in the database an incremental number of them…

Riccardo Odone

🏳️‍🌈 Pronoun.is/he 💣 Maverick & Leader @Lunar_Logic ✉️ PinkLetter Odone.io/#newsletter 🎓 Student & Teacher of Timeless Software Skills

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store