I’m wondering if there’s any interesting software to build git based wikis (or at least with a flat file storage) that support Markdown and ACL for private and public posts and is extensible enough to allow me to customize it the way I want. I have a bunch of notes I’d like to make public just because they might be helpful for someone else. I thought about integrating it into this website but I’d love to have a way to have private posts, as well as easily linking between pages. The most interesting option I found was DokuWiki which was tons of plugins. However, it’s PHP and I’m not sure about how maintained it is nowadays. It looks like wiki software is dying… besides the big beasts.

After wondering whether or not I should keep the check-ins and watches on my website, I decided not to. I know… I change my mind quite a lot. But here are some reasons why:

  • I don’t believe I need one post for each checkin and for each watch since I don’t actually add content to it besides the fact that I’ve been there or watched something.
  • Check-ins? Privacy! Which is important. I like to collect data about myself, but not to make everything public.
  • I had more than 6000 pages on this website (?).

However, I plan on recreating a watches page similar to my bookshelf where I “showcase” the movies and the series I’ve watched. I’m creating a bunch of scripts to collect my Trakt history. I plan on doing something similar for the check-ins, but as a map.

Along the same lines, I’m planning on removing the read logs but keeping the bookshelf. I’m just not removing them now because the bookshelf is working and I prefer to deal with that afterwards.

Just wondering if it’s worth it to keep my watches log and checkins on my website. I know I had some work setting that up. But, is it worth it? Is it worth for you, readers?

I like having that data accessible and I still can by just using the APIs and backing up the data myself. It can be useful and it can have many uses. But is it worthy to have on this website?

For maintenance purposes, it’s a bit harder but not impossible. For you, readers. I’d love your opinion on this. I’ve b en thinking about removing swarm checkins because of privacy issues.

About the watches: maybe it’d be nice to have a page listing the series and movies I’ve watched but not as logs.

So I just made a few changes to my website and I hope it didn’t break anything like feeds and such. Here’s a small changelog of the changes:

  • Stopped using Hugo categories for post types (replies, notes, articles, etc) and started using sections, i.e., I know put a note under the /note path. So this also changed the URLs, hopefully for better and now it’s easier to restrict access or remove something if I want.
  • I added about ~2000 redirect rules. Does anyone know if Caddy allows me to import the redirect rules from another file? My Caddyfile is getting huge.
  • Started using partialCached in some places which improved the build time a tiny bit.
  • Moved the Articles page from /blog to /articles which I already wanted to do for a while.
  • Added a contact page.
  • Updated the more page with more links!

And… that’s it I think. I’d also love to use this website as a “knowledge base” so I’ll probably create a section for that later. I always want to organize the knowledge I get somehow but I just have tons of files from university and other stuff laying around without any organization. I really loved this braindump from Jethro.

Most likely you didn’t notice, but yesterday I created a new page on this website called pins. On that page, you can find links for some pinned resources on the IPFS network that I like to keep pinned for archiving purposes. There are so many old gems on the Internet!

Why are houses in Portugal so cold in general? Ugh… it seems we don’t know how to build houses. Everywhere we go in Europe, we can see warm houses. Ours are cold in the winter and some can even be cold enough in summer to be uncomfortable.

I just set up a media endpoint based on BunnyCDN, inspired by @jlelse’s post. So far, it’s working really well.

For now, I’m not actually using it to post many of the images of the website, even though I could. However, I’m using it to store the webmentions author’s photos. They were being served directly by but I think it’s better to serve them myself.

The media endpoint works well: it receives an object and stores it on BunnyCDN. However, I want to add some customization options such as resizings and compressions for images through query parameters, as well as some default ones so I don’t need to always specify them.

Just solved the deadlock! I’m currently using the p-limit package to limit the number of concurrent actions made to the website source. Basically, inside a function wrapped by that limitation, I was waiting for another function that would require the limit to be complete! Of course, that would create a never-ending deadlock. Fixed now!

On a second thought: I don’t actually like the structure of the internal code I use to process all of this. Maybe I should rearrange some things to make them… better.

Today I realized that I probably should start managing my time more effectively. Oddly enough, I’ve received many praises in the past for being extra productive and managing my time very well. However, I think I can focus for long times sometimes and makes me look productive. I decided that, for the times to come, I will try to plan my weeks on the weekend and try to accept calls and add slots to my calendar for the time I will be working at Protocol Labs so I can have a clear view of the hours I am doing. Is it going to work? I don’t know. I’ve tried to track time in many ways and it never works as well as I’d like to.

Just fixed the flickering issue by inlining the required JavaScript, which is a really small snippet. If you’re curious about the code I’m using to toggle between the dark and light themes, following the user’s choice and falling back to the OS settings, here it is:

const mql = window.matchMedia('(prefers-color-scheme: dark)');

function toggleT (to) {
  localStorage.setItem('t', to);

function theme (query) {
  const userOption = localStorage.getItem('t'); = userOption === null
    ? (query.matches ? 'dark' : '')
    : (userOption === 'd' ? 'dark' : '');


Just made a few updates to my website:

  • Added a more page, inspired by @jlelse’s.
  • Updated my now page to actually include what I’m doing right now.
  • Updated the highlight theme to swapoff. It’s a really pretty syntax highlight theme provided by Chroma, the library Hugo is using. The best thing is: using the invert() CSS filter it keeps looking good. This way, I have good syntax highlight on both the light and dark themes.
  • Added the category of the post right besides the publish date.
  • Now I’m only showing notes, articles and replies on the homepage.
  • I have a all page dedicated to show every post category.

I just noticed the website on the dark mode flickers sometimes (from the light to the dark theme). I know this is caused by the fact that I’m using JavaScript to pick the theme depending on the OS choice + the manual overriding done by the user using the option on the bottom of the page.

One option to remove this problem would be to just follow the user’s OS choice (either dark or light) and there wouldn’t be a manual override. Unfortunately, this wouldn’t let the users pick a different theme if they prefer to read websites on a different light - no pun intended.

I just added a little form in the webmentions section on the posts so you can send your webmention manually if it didn’t hit my website. Or, you can also use the button ‘Write a comment’ to create a comment (that can be anonymous) through the comment parade service.

For the curious ones out there, the code is simple. Please remember that I’m using Go templates with Hugo:

<form action="" method="post">
  <input name="source" placeholder="Have you written a response? Paste its URL here!" type="url" required>
  <input name="target" value="{{ .Permalink }}" type="hidden">
  <input value="Send Webmention" type="submit">

<form method="get" action="" target="_blank">
  <input type="hidden" name="dontask" value="1">
  <input type="hidden" name="me" value="">
  <input type="hidden" name="reply" value="{{ .Permalink }}">
  <input type="submit" value="Write a comment">

🇵🇹 Uma citação da qual sempre gostei imenso, de um livro que não esperava ler. Fica aqui, for the record:

“Para conseguir essa habilidade, ou seja, encontrar a distância certa e o local certo, sem a ferramenta primordial da linguagem, é preciso uma vigilância constante, uma acuidade desmultiplicada. É preciso ser inventivo e astuto. É preciso medir o que se diz, o que se pensa ter dito, o que se imagina ter percebido, é preciso medir a maneira como as palavras se inscrevem em si, as palavras estrangeiras que muitas vezes soam sem nenhum sentido, mas que se insinuam apesar de tudo por baixo da pele, é preciso ficar acordado e consciente, aceitar aprender sem compreender, agir sem saber, é preciso deixar infundir sem angústia, não ter medo de estruturar o cérebro de outro modo, ser permeável mas não poroso, é preciso fazer-se esquecer sem se esquecer de si mesmo, passar rente às paredes sem se perder, estar aqui e ali ao mesmo tempo, é preciso saber interpretar mais do que entender, é preciso dar a impressão de concordar sem ser superado. Preciso de ter antenas, ser dupla em permanência, à espreita do menor sinal, do menor indício.” - Um Ano Estrangeiro, Brigitte Giraud