Jekyll2025-12-25T16:23:42+00:00https://riggraz.dev/feed.xmlriggrazthoughts on programming, digital wellbeing, aiDialogue Between a Developer and a Kid2025-12-25T00:00:00+00:002025-12-25T00:00:00+00:00https://riggraz.dev/dialogue-developerA lone developer was walking uphill, his feet unstable on the fine-grained black sand of the terrain. Sweat droplets were falling from his face to the ground, forming tiny rivers that went unnoticed.

The sky was as dark as the annoying sand, except for a few distant, colorful planets. The space was filled with a peculiar tension, as if every inanimate object or particle was waiting for something to happen. Falling stars appeared as fast as they disappeared. Undoubtedly, it was a special night.

Developer: I hate this sand. It’s all in my shoes.

A few minutes later, as the slope of the hill got gentler, the developer saw a small figure curved on the ground frenetically moving their hands. As the developer got closer, he recognized it was a kid playing with the sand.

Developer: Hey there, what’re you up to?

Kid: Hi, I’m developing my first video game! You see, I can draw characters with the sand and give them life through blocks of code! It’s a game about a ball that must escape a ghost for as long as possible. Do you want to try it?

The sand reorganized itself, the shapes of a ghost and a ball appeared, and the former started chasing the latter.

Kid: Haha! You didn’t beat my highscore of 0!

Developer: It was really fun, well done! You know, I write code as well, I’m a software developer.

Kid: Wow, that’s so cool! My dream is to become a programmer too! I want to know all the programming languages in the world!

Developer: Haha, sounds nice… how’s it going so far?

Kid: Very well! I’ve learnt a little bit of Visual Basic, now I’m studying Scratch to build video games. Then I want to learn C++, PHP, Java, HTML, …

Developer: Hey, it’s good that you’re so eager to learn. However I recommend that you focus on a single language and master it: then it will be much easier for you to pick up a new programming language!

Kid: Oh, interesting!! And which is the best language to learn?

Developer: C is always a good starting point. But there is no correct answer: you can also stick to Visual Basic or Scratch until you feel very confident.

Kid: And how many programming languages do you know??

Developer: Well, I don’t count them… probably around 10, but only a few of them very well. Anyway, you shouldn’t focus on learning as many languages as possible.

Kid: Only 10?? At your age I will know a lot more for sure!

Developer: You see, it’s not only about languages: you need to learn libraries and frameworks in order to become a good developer.

Kid: What are libraries and frameworks?

Developer: Basically they’re code written by someone else that you use to build software faster.

Kid: What?! That sounds really boring! I don’t want to use the code written by someone else, I want to be the one writing the code!

Developer: Actually…

The conversation went on. Maybe it was the kid’s stubbornness, maybe it was the sand in the shoes. Maybe it was both, maybe it was none: but the developer grew angrier and angrier.

Kid: So, yeah, I want to build a new game just like Super Mario—

Developer: Wait, what’s the point? You’re just copying games that already exist! You should strive to create something new and unique, something that others will truly enjoy!

Kid: Maybe I can try and if I get bored I will switch to some other game!

The developer laughed.

Developer: That’s a great way to waste your time! You’re one of those people who start projects and abandon them! You see, I also used to be that way, but I’ve changed. Now I finish every project I start, and I refine it in order to make it public and useful to other people!

Kid: That sounds—

Developer: DON’T INTERRUPT ME! Also I don’t write everything from scratch like you do! I use libraries! I use LLMs to write code! I focus on the idea and offload the heavy programming work as much as possible! That’s what it means to be a programmer, a real programmer!

Kid: …

Developer: Come on, say what you wanted to say!

Kid: …

Developer: SAY IT! WERE YOU GOING TO INSULT ME?! I DARE YOU…

As the developer was yelling, the kid became serious. He seemed absent-minded. After a while, the kid started crying. For reasons that go beyond comprehension, tears grew larger with each drop, and formed puddles on the sand that quickly became rivers running downhill in all directions.

Terrified, the developer hopelessly tried to run away, but his body was already caught by fast rivers of tears. As he started sinking in the sand, the developer took a last look at the kid: he was now ominously big.

Just before disappearing under the sand, the developer was crying too.

]]>
ChatGPT as a Digital Wellbeing Tool2025-02-20T00:00:00+00:002025-02-20T00:00:00+00:00https://riggraz.dev/chatgpt-digital-wellbeingAs an Italian citizen, I feel obliged to follow our most important music festival: Sanremo Music Festival. However, a typical Sanremo night broadcasts on TV from 8:30PM to 2:00AM. That’s more than 5 hours. Moreover, music performances are continuously interrupted by some boring speeches and sometimes speeches are interrupted by boring music performances.

So, like an average Italian citizen, I don’t watch Sanremo from start to finish, but still I want to know leaderboards and, more generally, what happened that I missed. A great number of websites publish posts talking about Sanremo Music Festival. As you may imagine, they capitalize on the high traffic Sanremo news attracts so they usually bury the interesting information under tons of ads, pop-ups and links to other useless articles.

This year, however, I tried a new approach: each morning I asked ChatGPT — with the web search feature enabled — for the leaderboard of the previous Sanremo night. The result was fantastic. In a few seconds I knew the leaderboard. No more opening Instagram only to be bombarded with irrelevant content, and no more dodging pop-ups and ads while reading a news article on a website designed solely to maximize ad clicks. ChatGPT takes care of surfing the web for you, and then returns the response to your query in a well-formatted, ad-free way.

In general, ChatGPT with web search can mitigate the problem of the modern web: annoying cookie consents, pages overoptimized for SEO where relevant information is only a fraction of the overall content, pop-ups, advertisements, unnecessarily slow to load websites, and so on. Finally, we can focus on the content instead of employing 99% of our brain resources wrestling against all that mess.

So, I advocate that ChatGPT with web search (or any LLM equipped with web search functionality) can be a new way to interact with the web, a sort of new UI for the web. And it’s a UI that respects users’ sense of agency and time more than most websites do. In this sense, ChatGPT can be seen as a digital wellbeing tool.


  1. Of course, there are downsides to using LLMs for web searching. I sometimes feel guilty when leveraging this approach, because it definitely requires a lot more electricity than a simple web search, hence contributing to worsening global warming. Moreover, if everyone were to adopt this approach, websites relying on revenue from ads wouldn’t exist anymore.

  2. It’d be cool to be able to use this same approach for social media websites, extracting only the useful information we want without our attention being stolen by the multiple attention-capturing dark patterns these websites implement. Unfortunately for us, all social media platforms (Instagram, Facebook, TikTok, X) forbid web scraping and also do not provide APIs to access user content. Of course, they want us to use their apps :)

  3. In general, I believe there is value in seeing LLMs as UI for complex content. We’ve already seen this in various applications, e.g., extracting information from a PDF, using natural language to query a Pandas dataframe, etc.


Hey, after three years or so, I finally posted a new blog post. That’s cool. I hope I’ll be more constant now and also I hope I’ll be able to share with you a post I’ve had in mind for about five years now. I’m quite lazy with writing unfortunately.

As always, I’d love to hear what you think about this post. Feel free to drop me an email and we can start talking there!

See you!

]]>
ChatGPT Is Pretty Honest About Itself2022-12-08T00:00:00+00:002022-12-08T00:00:00+00:00https://riggraz.dev/chatgpt-honestAs a cutting-edge natural language processing (NLP) technology, ChatGPT has the potential to revolutionize the way we communicate and interact with computers. However, like all new technologies, ChatGPT also comes with its own set of limitations and ethical concerns that must be considered.

One of the major limitations of ChatGPT is its inability to understand context. Unlike humans, who can easily pick up on subtle cues and nuances in conversation, ChatGPT relies solely on the words that are inputted into it. This can lead to confusion and misunderstandings, particularly in more complex or ambiguous situations.

Another limitation is the fact that ChatGPT is not capable of generating original ideas or thoughts. Instead, it simply processes and repeats the information that it has been trained on, making it unable to offer unique insights or perspectives on a given topic.

In terms of ethics, ChatGPT raises concerns about the potential for misuse and abuse. For example, ChatGPT could be used to create fake news or disinformation campaigns, spreading false or misleading information to a large audience. Additionally, there are concerns about the potential for ChatGPT to perpetuate harmful stereotypes or biases, as it is only as good as the data that it is trained on.

Overall, while ChatGPT offers many exciting possibilities, it is important to recognize and address its limitations and ethical concerns. By understanding the limitations of the technology and working to mitigate potential negative impacts, we can maximize the potential benefits of ChatGPT and ensure its responsible use.

Written by ChatGPT

]]>
A Trivial, Dangerous, False Assumption on Links2021-06-13T00:00:00+00:002021-06-13T00:00:00+00:00https://riggraz.dev/url-trickI can recognize a scam email or SMS when I see one. Anyway, I realized that there is a simple URL trick (sometimes used by scammers) that always catches me off guard. It is based upon a particular encoding of URLs that is clearly explained in this short Wikipedia page:

https://en.wikipedia.org/wiki/Percent-encoding

Take your time to read it, I’ll wait here.


Have you followed the link? Did you notice? Well, in case you didn’t, the link doesn’t bring you to Wikipedia, but to another page of my blog.

Of course, the trick simply consists in a discrepancy between the actual link text and its “href” attribute. It may as well be the oldest URL trick in the world.

Still, when my mind sees a link with a generic text (e.g. “click here”) it usually alerts me to check where that link points to. On the other hand, when it sees a link with a URL as text, my mind automatically believes that that URL is also the page the link points to.

I think this trick has always been deceptive, but I also believe it had become more dangerous in recent years due to WhatsApp and a bunch of other apps that share the same characteristic: in these apps, the text of a link is always also the URL it points to. So, everyday, we strengthen the assumption that link text equals link URL, which is true in some cases, but false in general.

To wrap up, just be conscious of the platform you’re on and be aware of your false assumptions: otherwise even the simplest tricks may work on you.


Hi reader! I just want to remember that if you want to let me know your opinion and discuss this article you can simply email me. Interesting discussions may be posted in this section!

This post has been publicly discussed on lobste.rs.

P.S. Stay tuned, more posts coming in the next months…


Police ASCII art made by Joan G. Stark.

]]>
The Shame-Based Approach to Learning Git2020-10-31T00:00:00+00:002020-10-31T00:00:00+00:00https://riggraz.dev/shame-based-gitA few months ago I was working on a university project and, since I was about to integrate my work into the main branch, which is a tricky phase, I was assisted in the process by Marco, a member of my team. I shared my screen with my fellow and showed him the Git history of the branch I had been working on.

We hadn’t established clear conventions for commits, but he was pretty shocked by how I structured them: for example, I had some commits containing changes that were unrelated to each other - which is definitely not a best practice - or some others that just reverted previous commits - which needlessly made the history dirtier.

So Marco suggested that I split some commits, squash others, reorder the history, and so on. The thing was… I had no clue on how to perform most of these tasks. Since I was sharing my screen and I was expected to carry them out immediately, I did the only reasonable thing: I shamefully admitted my Git incompetence.

Marco reacted in a very kind way: he patiently babysitted me for about 4 hours, teaching me the Git commands and concepts I didn’t know.

At the end of his free lesson, I thanked him a lot and apologized for wasting his time. He said that he had been through a similar situation: about one year before, when working on a group project, he had accidentally lost a few days of work while performing some version control tasks, because of his poor Git skills. Like me, he felt really ashamed towards his team, and that feeling had driven him to study Git properly.

It seems a recurrent pattern, and actually it makes some sense. A long as we are used to developing by ourselves, we find just a few version control features useful, so these are the only features we use. When we start working in a team, we believe we have sufficient ability in version control, since we haven’t faced any problems with it in the past. However, the new environment requires more skills than we have, and this lack of ability inevitably shows up at a certain point. If it shows up when we are alone, we start realizing it, but we may end up not fixing it. On the other hand, if our inadequacy is exposed to others, we feel ashamed, hence we get the pressing urge to fix what causes our shame.

And that’s what drives us to learn Git. Or, at least, what drove Marco and me.


Hey, you have come to the end of this short post!

What do you think about it? Have you followed a shame-based learning method for Git? I’d love to hear from you: if you feel like it, just reach me out through email. As always, interesting discussions will be posted in this section.

Thanks for reading, see you!

]]>
The Stack Overflow Antipattern2020-09-18T00:00:00+00:002020-09-18T00:00:00+00:00https://riggraz.dev/stack-overflow-antipatternSometimes programming can be frustrating. In the last few years I’ve noticed a recurrent pattern that drives me mad. I like to call it Stack Overflow Antipattern.

In this informal blog post rigorous medical paper I’ll explain the symptoms, possible causes and treatment for this horrible antipattern disease.


My definition of the Stack Overflow Antipattern is the following:

Spending more time looking for a solution rather than thinking about it.

For me, it goes like this:

  1. I encounter a problem I can’t immediately solve
  2. I google the problem
  3. I find a seemingly-satisfying solution (usually on Stack Overflow)
  4. I copy-paste the solution and test it out
  5. If it works, I move on; otherwise, I go back to step 2.

During the whole process I’m completely focused on looking for a solution, I’m rushing towards the solution. As time goes on, if I can’t find what I’m looking for, my frustration grows and I find myself skimming faster and faster through the results: I’m not thinking, I’m just looking for the damn solution.


Comic#001: The Stack Overflow Antipattern


I think there are several causes that can lead to the Stack Overflow Antipattern.

The root cause is a lack of thinking. Obviously, not understanding the problem and the possible solutions results in a trial-and-error approach, which is exactly what the antipattern is about. But, at least personally, why don’t I take the time to think?

Firstly, I know that the answer to my problem is probably somewhere on the web. We’re all used to being spoon-fed by Stack Overflow. We’re all used to having immediate access to tons of valuable information over the internet, so why not search there before overworking one’s grey matter?

Another reason is that a programmer has to face lots of problems, sometimes not necessarily directly related to software development. Even though the problem at hand and its solution(s) should, ideally, be properly understood, there may be several reasons why one chooses not to do so, i.e. being in a hurry, pure and simple ineptitude, exhaustion, laziness etc.

Whatever the reason, we therefore decide, more or less consciously, not to think.


So, ultimately, the Stack Overflow Antipattern is all about a lack of reasoning. What then is the best (and free!) treatment for a compulsive refusal to think? Well, more thinking.

In particular, I believe there are three broadly-defined phases in which one should pause and ponder:

  1. Before the search. The problem should be crystal clear in order to write the right query that will help find the solution. Bad search queries (or, even worse, queries about the wrong problem) rarely lead to satisfying answers.
  2. During the search. The solution found should be at least clear enough to be sure it can solve the problem at hand (possibly without causing other problems!).
  3. After the solution proved to work. This is the time to pause again and synthesize problem and solution together. Everything should be clear enough to remember it afterwards (or at least remember how to find the solution again), in order to solve the problem faster if it occurs again. This will save time in the long run.

The list above is by no means a strict rule, but a general guideline I came up with while writing the article. The heart of the matter is that one should think a lot before and after searching the web.


Before closing up, I must emphasize two points.

First, I’m not saying that Stack Overflow or similar resources shouldn’t be used. The point is that they shouldn’t be used mindlessly.

Second, it’s inevitable that sometimes, for a number of reasons, the Stack Overflow Antipattern will occur. Depending on the scenario, it could also be the best choice. For example, if a project is running late and timely delivery is essential, there could be no time to stop to think why a certain solution works. And that’s okay. The important thing is to find a balance that takes into consideration both external factors (e.g. deadlines) and internal ones (e.g. one’s desire to learn), and to consciously fall into the antipattern.

In the end, I think that the point of this article is pretty trivial. Everybody knows that thinking is an essential part of solving a problem, even if the answer is already available somewhere.

However, I also believe that many programmers are victims of the Stack Overflow Antipattern. At least I am, from time to time, but more than I’d like to.


Hey, thanks for reading all the way down here!

I’d be more than happy to hear your personal experience with the Stack Overflow Antipattern. You can reach me out through email or any other means you like. Interesting discussions will be posted in this section!

Here you can find some comments about the post:

Trivia: I had the idea of this post nearly one year ago and is the number one reason that made me open this blog. It should’ve been the first article, but, just as I started writing it, I got the inspiration for the code and memory post. Since the latter was simpler and shorter, I decided to write it first.

I also want to mention that the comic strip was a last-minute idea. And, given my drawing skills, it was probably a bad idea.


After reading this blog post, Synchro found the inspiration to write an article about another antipattern that he usually sees on Stack Overflow and alike. Since he is the maintainer of PHPMailer, he has to answer a lot of questions on SO or GitHub, so he knows what he’s talking about. The article is called The Stack Overflow Antipattern, part 2.

]]>
GitHub Arctic Vault, Code and Memory2020-07-23T00:00:00+00:002020-07-23T00:00:00+00:00https://riggraz.dev/code-and-memoryA couple of days ago I was surfing GitHub when I stumbled across something that caught my interest. A little notification box was telling me that I earned a badge for being an “Arctic Code Vault Contributor”.

I had no idea what it was, so I googled it and found out about the GitHub Archive Program. Basically, it is GitHub’s plan to preserve open source software for a long long time. The Arctic Code Vault is just a part of the Archive Program, specifically aimed at storing data for 1000 years from now in a decommissioned coal mine near the North Pole.

GitHub first put the most important open source software there, then, on 2 February 2020, added to the storage every active1 GitHub repository.

Some of my repositories are there.

I get a strange feeling when I think that something mine is stored 250 meters deep in the permafrost and is supposed to stay there for at least 1000 years. That my name will be there for at least 1000 years.

To date, this will be by far the most long-lasting memory of me. I hardly believe anything else about me will survive that long. A bunch of (bad?) lines of code will be the only things left to define me.


I want to draw a parallel with a historical tradition. Emperors used to build commemorative statues to show their power and to be remembered after their death. I am not a historian, however I suppose that a lot of these statues have either gone lost or destroyed or damaged. Probably some emperors are unknown today because everything about them got lost.

On the other hand, our code will survive for at least 10 centuries, probably much more. Powerful emperors’ memories have been more ephemeral.

However, they were far more suggestive, evocative, strong. Compare the evocative power of a mighty celebrative statue that portrays the ideal representation of somebody with a dry, emotionless collection of bits.

We might feel like the most enduring memory of us will be pretty boring and inaccurate at describing who we were. We might have hoped for leaving behind something else, something more meaningful. But is it really so?


You can think of the Arctic Code Vault as a giant, secure, resistant museum, and something yours is stored inside it. It is thrilling to think that in the distant future somebody may enter this museum and take a look at some of your work.

Your name will be remembered alongside artifacts you produced.

Sure, code may not be the best medium to portray one’s memory, however I think it can say at least something about the author’s personality. For instance, a clean piece of code reveals a certain attitude in its author, whereas a messy piece of code another one. The simple fact that you are a programmer tells something about you.

Moreover, as opposed to a celebrative statue, your code is far more authentic: you probably wrote it for some inner reason, not as a way to be remembered. In particular, the fact that you built that exact thing says a lot about you, it defines you2.

Maybe it is not an inadequate way to be remembered, after all.


Hey there!

I’d love to hear your point of view on the topic: just email me if you want to reach me out. If an interesting discussion arises I’ll post it here in the discussion paragraph, so everyone can read it.

This post has already been discussed on:

If you want to point out errors you can email me or open an issue on GitHub.

This is the first post of the blog (the introduction post doesn’t count, and anyway I start counting at 0 :P) and I’m pretty happy about it! I hope you liked it too.

Thanks for reading!


  1. for a definition of “active” see this page. I also recommend reading the first few paragraphs of that document if you want to get some futuristic/post-apocalyptic vibes. 

  2. “It’s not who you are underneath, it’s what you do that defines you” – I could not miss the opportunity to quote this pearl from Batman Origins, but my article and I may lose credibility so I had put it here in the footnotes so less people see it. 

]]>
What This Blog Is2020-07-21T00:00:00+00:002020-07-21T00:00:00+00:00https://riggraz.dev/introHey, it’s riggraz.

I finally started my personal blog. I’d like to take a few words to talk about the path that brought me here and what I am going to write on this blog. I divided this text in chapters because it is way more epic.

Index

Insecurity

I have notes more than one year old that contain ideas about blog posts: they are probably bad ideas, however they prove my desire for writing.

The main reasons that made me procrastinate on starting a blog were the following:

  1. I was not sure I had something interesting to say
  2. I was not good at writing

The thing is, both these facts are still valid today. Let’s add the third reason:

  1. I was worried about what my readers would think of me

Yes, that was the main point. I was insecure. Let me explain.

Part of my insecurity was due to perfectionism: in fact, for a relatively short period of my life, I was becoming more and more perfectionist. If I had to do something, I had to do it in the best way possible: for blogging that could mean studying English first, then taking a course on essay writing, then maybe start the blog. All this upfront boilerplate just takes too much time and effort, and is always pretty boring.

Hopefully I understood – mainly thanks to hip hop music and its impulsive, direct, non-sophisticated lyrics – that I had to find a compromise between perfection and imperfection. That something really good can derive from a bit of imperfection.

The fear of others’ opinion was partially caused by perfectionism but also by other personal factors I don’t want to bring up here. I just want to say that around 1 year ago I started, together with a team, gambe.ro, an italian social bookmarking community for programmers. I already had the desire to write a blog, but I also remember that I’d not be comfortable publishing my articles there. Even though there were just a couple of hundreds users, I was afraid of their opinion. I was afraid that they could make fun of me.

Now that I shifted my mindset a bit I feel pretty confident in exposing myself on that site and on the web in general, even though I don’t know what I’ll publish will have good reception.

Inspiration

Aside from a personal interest in writing that has been growing inside me for the last few years, I took a lot of inspiration from other blogs during these years. I want to cite them here, in (a kind of) order of importance:

Aspiration

With this blog I’d like to change the world.

Jokes aside, with this blog I’d like to crystallize my world. I want to put here everything I do or think about computers, programming and alike, to create a place that defines myself in the realm of IT. When I’ll be old, I want this place to summarize what I did.

I want to write down my thoughts and ideas, but I also want to talk about the projects I develop.

Thoughts will usually take the form of blog posts. Some will be short and naive, others will be long and elaborate. I also have ideas about certain forms of written content I have never seen applied in this field.

On the other hand, to have a history of my past, present and future projects I decided to create what I like to call “closet”. Esentially, it is just a page with a list of all the projects I did (even very small and stupid ones!) that have some importance to me. Every project will have a date and a small description, whereas for some projects I will also create ad-hoc pages to elaborate more on them. What I’d like to convey in the first place is not how a project works technically, but the story behind it, the feelings I got when working on it and so on.

It may seem like this will be a very personal blog, aimed more at me than towards an audience. However, in my vision, this is far from the truth. It is true that the closet is more of a personal thing, but I also believe that some people can get inspired by the accounts of what I did in the past. Moreover, blog posts will contain thoughts and meditations about programming and the IT world in general that I think can be enjoyed by a large number of people.

In fact, I’d like to provide quality content that can be appreciated by a wide audience. On the other hand, speaking of numbers, I don’t have a lot of ambition. I probably won’t have a lot of readers. However I’d be really happy if just a small number of readers become attached to the blog.

Security

What I can say for sure is that the blog is now online. I can also say that I’ll try to do my best in a non-perfectionist way. I know publications will be incostant. Even at the peak of my perfectionism I was incostant. In nearly everything I do I am incostant. There’s just one thing I have been doing (pretty much) constantly for the past ten years and I still do today. That is programming, that is creating things.

Stay tuned.

]]>