August 10, 2024
Podcasts have become rather special
Imagine a world in which you download a podcast episode and it’s just an audio file that you can save anywhere and play at any time. You can collect your favorite episodes and listen to them even without internet, long after any Spotify or Apple are gone. In this world, some ads may be read by the podcast host, ads that are not trackin...
Read more
Read more
May 31, 2024
How bad is code that kind of works?
We all say that something is better than nothing, but code that does something has a special way of being worse than code that does nothing. Once something is happening, it can be shipped to production. This can initiate a feedback cycle that will stack changes on top of shaky foundations. These changes not only become increasingly har...
Read more
Read more
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Read more
See more posts »