Ricardo Tavares

Creates things with computers to understand what problems they can solve. Passionate for an open web that anyone can contribute to. Works in domains where content is king and assumptions are validated quickly.

Mastodon  |  Twitter  |  GitHub


View From the Web
March 4, 2024

Product-minded Software Development

Building a product for external customers requires a broader perspective than creating solutions for internal teams. It involves thinking about its delivery, understanding why decisions are made, how people use this product, what impact can it have, and how that can be measured. Software developers working on user-facing products can b...
Read more
August 26, 2023

Generative AI and the pricing of value in hours of work

If you take it at face value, hourly-based billing makes no sense for anyone. If you can do it well and do it fast, why are you being discouraged from delivering it quickly? You should be paid more for solving it better and faster. But if hours are just an abstraction, we can assume they're an affordance for clients to negotiate down t...
Read more
August 25, 2023

Why code push for the web?

The power to change how an app works in real-time is an underestimated feature of the web. Often it’s assumed that all code, even in web development, should only expose its expected functionality and be completely bundled as a finished product. Once it’s published, you can’t touch it, you can only make unexpected changes by publishing ...
Read more
July 21, 2023

Client says stuff doesn't work, is it tech support?

Things go wrong with tech all the time, in fact, "tech is a word that describes something that doesn't work yet" as defined by the great sci-fi author Douglas Adams. We can imagine that there was a time when shoelaces were tech, for example. But now, they just work for us and therefore they're just shoelaces. Not so with just about any...
Read more
May 14, 2023

Why I'm (still) learning Rust

Disclaimer: People in the Rust Foundation would like you to know that, although the title of this article contains the word Rust, its author is not a part of the Rust Foundation (trademark policy draft available here). I understand how this might sound confusing, but don't let it discourage you from learning more about this language. A...
Read more
May 10, 2023

XSS in JSON POST requests (demo included)

Cross-site-scripting (XSS) is often identified in web development as an issue with user-submitted content that allows for unexpected HTML/CSS/JS to run in the context of other users. Most web developers know that, for example, a field for the name of a user may allow for a script tag to be saved along with it and, if so, that Javascrip...
Read more
March 26, 2023

What I've learned from one year of daily meditation

The kind of meditation I've been making a habit of is pretty useless, but the modern-day secret of useless things is how they are everything but a waste of your time. So I made space for this article in my tech blog, a small break looking at a facet of human consciousness in this 2023 period of AI gold rush. I only have some limited ex...
Read more
January 1, 2023

The Missing Links

Even if people don't go out as much these days, physical addresses are still very much recognizable to us. Although they're not perfect information, give me a city, a street name, and a number and I may be able to find that location you wanted to share with me. This is an important part of public spaces, anyone can share a reference to...
Read more
January 1, 2023

Community home-made automations for Discord

Niche communities have an upside to being niche: you can (and maybe should) explore options that don't need to scale very much. My own experience with organizing people around a small hobby has revolved around tabletop role-playing games (TTRPGs) in my country and city. If you never heard of TTRPGs, all you need to know is that they're...
Read more
January 1, 2023

The Long Tail making a comeback on TikTok

When e-commerce began to flourish, the concept of the Long Tail was used to describe how digital businesses can focus on a wide variety of products or services with almost no customers. The basic idea is that you can leverage the scale of the internet to make money by selling to many tiny groups of consumers. Since they are under-serve...
Read more
January 1, 2023

Don't let your events go to waste

We may not talk much about how people sit on the fence when it comes to environmental issues, but we're probably aware that we're letting ourselves fall short. Especially when it involves people who do have the means to make better decisions in how we affect our environment. We still organize our work and our holidays around consuming ...
Read more
January 1, 2023

Advent of Deno, Typescript and Code

Advent of Code is a seasonal series of daily programming puzzles that can be solved in any language you choose to use. People can enjoy taking part in this yearly event in many ways: as a speed contest, interview prep, company training, university coursework, practice problems, or to challenge each other. In 2021 I decided to give it a...
Read more
January 1, 2023

Crafting events in people's screens

No matter when you came to be online, you've had the opportunity to encounter what I like to call digital craftsmanship. Building cool online experiences is not a lost art. You may have recently heard of Wordle, a simple web game made by a developer as a gift for a loved one. It has been a huge success and is therefore an easy example ...
Read more
January 1, 2023

Scaling socket.io across multiple nodes

Real-time web interactions are an interesting challenge that stays relevant as developers gravitate between single-page applications, server-rendered pages and everything in between. Websockets are a possible solution for interacting live with your users, specially if server sent events are not enough and polling at some sustainable in...
Read more
January 1, 2023

The mixed bags of online events

I imagine that a lot of people have experienced much more online events in the past year. Now, alongside the wide variety that events offer by their very diverse nature, there are also a lot of different tech solutions that people reach for when putting their event together. I've seen online events that are very e-mail driven while oth...
Read more
January 1, 2023

Passwords cross all boundaries, how can we manage them?

Passwords are a great solution and a huge problem. People use them every day, not only as a way to claim ownership of services and products, but also to share that access with other people they trust. Passwords are great because they stand outside everything. You're not forced to have service A in order to access service B. Passwords a...
Read more
January 1, 2023

Are we to walk down digital streets with our names tattooed on our foreheads?

When we arrive late to a meeting where people expect us to say something, most of us listen for a while before trying to contribute. Eventually, the meeting progressed far beyond what we can fully understand. And yet there's a need to come together, so what can we say? Some people may be the first to speak out by disregarding what they...
Read more
December 31, 2022

I tried very hard not to like my first MacBook

Due to personal circumstances that forced me to pull the trigger on my decision to eventually get a good ultrabook, I recently got the M1 Macbook Air. I'm quite happy with it, but not so happy with having purchased it. It was a combination of being pressed for time and having few viable options for my country of Portugal. Readers of th...
Read more
December 31, 2022

Hybrid events and my first FOSDEM

Events going online has become one of the definitive trends of the decade. Not that people want to stay home, but once we've been forced to, the advantages become evident. Any event can reach out beyond its usual physical time and space to bring more people together. Even if nothing can beat the hallway track of a fully-present context...
Read more
November 12, 2022

iOS devs working as unpaid salesmen for Apple

One of the ways through which Apple has posted new records in their services revenue is by having you buy a developer account and then forcing you to make other people buy developer accounts. How does that work? Well, let's turn this around and say that you're not a developer in any shape or form. Your job is, I don't know, geologist o...
Read more
November 12, 2022

PHP Upgrade Story: Four Lessons Learned

Back at the day job, we have your usual PHP code base that runs a lot of the business and we needed an upgrade from 5 to 7. Business involves a variety of small to large services plus different one-time projects that may require maintenance. So, upgrading had to be a gradual process of isolating a domain that could be upgraded, making/...
Read more
November 12, 2022

My Love Story with Podcasts

Playable on-demand broadcasts (podcasts) are a simple case of people using open technologies to come together over a new medium that should be accessible to everyone. They are my favorite example not only of how useful RSS feeds can be but also of the evolution towards audio files that are small, sound good and can be easy to catalog. ...
Read more
October 29, 2022

Our online lives lack context, they should also lack friction

It's an understatement to say that humans are complicated creatures. How we function depends on more than facts and feelings. We also respond to what is left unsaid and we act according to how we imagine that we'll be perceived by others. Even without other people, we still don't exist in a vacuum, inevitably we are influenced by time ...
Read more
October 25, 2022

Do hybrid app frameworks focus on the right problems?

If we could start counting mobile apps in the stores, we would probably see that many of them are, first and foremost, a branding exercise that the open web cannot satisfy. Institutions want you to have their icon on your pocket and to push notifications into your lock screen. And given how the adoption of the internet has been based o...
Read more
October 25, 2022

Is the reduce method in JavaScript hard to review?

One of the best things about JavaScript nowadays is that you can just type "MDN" next to whatever you want to know in your search box and you will get very nice documentation from the Mozilla Developer Network. However, if you go through Array.prototype.reduce(), your initial impression may be "I guess I understand how it works, but wh...
Read more
October 23, 2022

Why I use Vim and suck at it

About half a dozen years ago, I was between jobs and had a whole month of August to invest in whatever I wanted to do. So I decided that some of that time should go into learning some coding tool, some skill that could pay off in the long term. I chose Vim for several reasons, the main one being ergonomics. For me, this is the question...
Read more
October 23, 2022

How Slack kind of taught me how to make my first bot

Despite having its flaws, real-time chat has become an essential part of my day job. In particular, the mix of features Slack offers was there for us when we needed them. However, it's software is aimed at corporations, specially in terms of pricing. Small companies frequently need to involve outside contacts and getting priced per use...
Read more
October 23, 2022

PHP Upgrade Story: No Data Left Behind

Adjacent problems that weigh you down as you tackle some tech challenges are often as important as that specific tech. I have a PHP upgrade story from version 5 to 7 that illustrates this, showing just another way legacy code can cause issues for years. But it's not really about PHP code, as the codebase was mostly compatible to make t...
Read more
October 23, 2022

whoami

“Technology is a word that describes something that doesn't work yet.” Douglas Adams Computers became a passion for me since I got a ZX Spectrum as a kid, which doesn't mean I'm very good with them, but exploring their huge potential is a thing I've enjoyed doing for some decades now. The same thing goes for the internet. For me, netwo...
Read more