diff --git a/.gitattributes b/.gitattributes index faf757d..262799b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,4 @@ *.png filter=lfs diff=lfs merge=lfs -text *.ico filter=lfs diff=lfs merge=lfs -text +*.jpg filter=lfs diff=lfs merge=lfs -text +*.jpeg filter=lfs diff=lfs merge=lfs -text diff --git a/config.toml b/config.toml index ea9144a..0f9af3c 100644 --- a/config.toml +++ b/config.toml @@ -21,7 +21,7 @@ relativeUrls = true dateform = "2 Jan 2006" dateformShort = "2 Jan" dateformNum = "02-01-2006" - dateformNumTime = "02-01-2006 15:04 -0700" + dateformNumTime = "02-01-2006" themeColor = "#494f5c" homeSubtitle = "Yet another ordered dispenser of bits" footerCopyright = ' · CC BY-SA 4.0' diff --git a/content/english/posts/about-this-blog.md b/content/english/posts/about-this-blog.md deleted file mode 100644 index 5edbaad..0000000 --- a/content/english/posts/about-this-blog.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: About this blog -description: The very first article of this blog -tags: -- blog -- tech -- hugo ---- - -If you are reading this it means either you are trying to understand who I'm -(are you a recruiter by any chance?) or you are simply bored. In any way, this -is the very first blog post, and it means you have come to the end of the road -(since this is the beginning). I always loved to have a place where I can write -down my thoughts about a new technology, a framework or what I did in order to -achieve a goal in a hobby project. That is not all though: I was searching for a -place where I was also able to express my ideas regarding modern dilemmas like -privacy issues and decentralization. I am not the kind of guy who likes social -networks, so I never had the chance to express them. Until now. - -## How this blog is built - -### The website - -This blog is a very simple [Hugo](https://gohugo.io/) website. If you do not -know what it is, its basically a static website generator. It takes Markdown -documents and converts them in HTML pages. If you applied a specific theme then -it builds the page according to that theme. Hugo has a huge selection of themes -in his [dedicated page](https://themes.gohugo.io/), so basically picking up one -and starting from there is very simple. If you are curious about how I made it, -you can check out the source at my [personal git server -instance](https://git.poldebra.me/polpetta/bitdispenser.dev), where I started -hosting my code when [Microsoft bought -Github](https://news.microsoft.com/announcement/microsoft-acquires-github/). I -have simply picked up the simpler and cleanest blog theme out there, following -Ludwig Mies van der Rohe's idea: - -> less is more - -It will be a success if more than two people actually starts reading what I -write here, at least I want them to read without this blog without having their -eyes bleeding with an extravagant color combination. - -### Hosting - -The real problem of hosting a website nowday is not how to build it (as you can -see) but _where_ you can host it. There are plenty of cloud provides: AWS, -Google Cloud, DigitalOcean, Scaleway, etc... every day there is a new one -popping up. They all offers the possibility to host your website pretty easily, -especially if the website is a static one like this (e.g. using a S3 bucket). -Since I like challenges and I also like to learn new stuff, I though that -hosting the website in this way was boring. At the same time, I wanted to have a -good uptime and to not meddle too much under the hood. My (dream) requirements -were: -* always up -* good response time -* possibility to host as much data as I want -* using a hosting free as in beer and free as in freedom - -Now, reading this I imagine you are thinking I'm going crazy, and maybe I'm, but -that is not the case. In fact, multiple weeks prior to writing this article, -while trying to kill the boredom caused by COVID-19 lockdown, I discovered -[IPFS](https://ipfs.io/). I already heard of it at University, but I never -bothered too much to understand what was about. I though "well, it surely is -some sort of filesystem". I was somewhat right, but not the way I thought. - -IPFS acts like a peer-to-peer network, where nodes hash the content -they want to share to let other nodes grab it. You can grab this content using -your local node or using one of the many available gateways. Nodes can "pin" a -file too, in order to keep it locally and to serve it to other nodes. If a files -gets pinned by different nodes and gains traction it basically becomes -undeletable from the web. - - diff --git a/content/english/posts/hello-world.md b/content/english/posts/hello-world.md new file mode 100644 index 0000000..df18e5e --- /dev/null +++ b/content/english/posts/hello-world.md @@ -0,0 +1,136 @@ +--- +title: Hello world! +description: The very first article of this blog +tags: +- blog +- tech +- hugo +date: 2021-05-18T22:22:00+02:00 +--- + +If you are reading this it means either you are trying to understand who I am +(are you a recruiter by any chance?) or you are simply bored. In any way, this +is the very first blog post, and it means you have come to the end of the road +(since this is the beginning). I always loved to have a place where I can write +down my thoughts about a new technology, a framework or what I did in order to +achieve a goal in a hobby project. That is not all though: I was searching for a +place where I was also able to express my ideas regarding modern dilemmas like +privacy issues and decentralization. I am not the kind of guy who likes social +networks, so I never had the chance to express them. Until now. + +## How this blog is built + +### The website + +This blog is a very simple [Hugo](https://gohugo.io/) website. If you do not +know what it is, its basically a static website generator. It takes Markdown +documents and converts them in HTML pages. If you applied a specific theme then +it builds the page according to that theme. Hugo has a huge selection of themes +in its [dedicated themes page](https://themes.gohugo.io/), so basically picking +up one and starting from there is very simple. If you are curious about how I +made it, you can check out the source at my [personal git server +instance](https://git.poldebra.me/polpetta/bitdispenser.dev), where I started +hosting my code when [Microsoft bought +Github](https://news.microsoft.com/announcement/microsoft-acquires-github/) (you +can find a copy of the repository on Github too, visiting [my +profile](https://github.com/Polpetta)). I have simply picked up the simpler and +cleanest blog theme out there, following Ludwig Mies van der Rohe's idea: + +> less is more + +It will be a success if more than two people actually starts reading what I +write here, at least I want them to read this blog without having their +eyes bleeding with an extravagant color combination. + +Last but not least, the website icon is literally the Team Fortress 2 dispenser +(one of the games I love and one of the first game I started playing online as a +kid when a decent connection at home was finally available), taken from the RED +team and generated via a [favicon generator](https://realfavicongenerator.net/). +The name of the website partially came out from that, and from the fact that +basically every website is a dispenser of bits, and it is only thanks to our +beloved browsers we are able to actually "consume" what is distributed in the +first place. + +{{< figure src="/content/hello-world/engiwithdispenser.png" alt="Engineer with his dispenser" caption="Engineer class with a dispenser. Thanks to [Team Fortress wiki](https://wiki.teamfortress.com) for providing the image I shamelessly downloaded from them" >}} + +I hope Valve will not sue me for taking that assed as my website favicon. I +swear I will change it, a day. Pinky promise. + +### Hosting + +The real problem of hosting a website nowday is not how to build it (as you can +see) but _where_ you can host it. There are plenty of cloud provides: AWS, +Google Cloud, DigitalOcean, Scaleway, etc... every day there is a new one +popping up. They all offers the possibility to host your website pretty easily, +especially if the website is a static one like this (e.g. using a S3 bucket). +Since I like challenges and I also like to learn new stuff, I though that +hosting the website in this way was boring. At the same time, I wanted to have a +good uptime and to not meddle too much under the hood. My (dream) requirements +were: +* always up +* good response time +* possibility to host as much data as I want +* using a hosting free as in beer and (possibly) that could use free as in + freedom technologies + +Now, reading this I imagine you are thinking I am going crazy, and maybe I am, but +that is not the case. In fact, multiple weeks prior to writing this article, +while trying to kill the boredom caused by COVID-19 lockdown, I discovered +[IPFS](https://ipfs.io/). I already heard of it at University, but I never +bothered too much to understand what was about. I though "well, it surely is +some sort of filesystem". I was somewhat right, but not the way I thought. + +IPFS acts like a peer-to-peer network, where nodes hash the content +they want to share to let other nodes grab it. You can grab this content using +your local node or using one of the many available gateways. Nodes can "pin" a +file too, in order to keep it locally and to serve it to other nodes. If a file +gets pinned by different nodes and gains traction it basically becomes +undeletable from the web. + +#### Choosing the right tools + +Surely, as [the IPFS documentation +describes](https://docs.ipfs.io/how-to/websites-on-ipfs/multipage-website/), I +could have done it by myself. But there is a but. Holding all the infrastructure +manually means sacrifice the "always up" and "good response time" thingy for two +simple motives: + +1. the [server where I host my drafts & codebase](https://git.poldebra.me) is + hosted on a very small machine (2GB of RAM and 2vCPU), very easy to kill with + the slightest of loads +2. in order to achieve a good response time, a CDN or some sort of caching is + necessary (even if the application is stored in a distributed file system) + + +{{< figure src="/content/hello-world/fleek.png" caption="Fleek website, that I used to automate my deployment on IPFS and my DNS update" alt="The fleek website screenshot" class="right" >}} + +Finally, in order to achieve full automation with DNS updates, I would have +needed to implement and use NameCheap APIs (currently it is the DNS provider I +use for most of my websites). "What's the difficulty?" one would ask. [Here is +the official documentation](https://www.namecheap.com/support/api/intro/), and +even if the APIs look promising, while studing them my will to live decreased a +little bit, and so I decided that if I wanted to get up and running with less +maintenance as possible, with a good uptime while having the maximum +automatization possible I needed to rely on a dedicated service. Luckily +[fleek.co](https://fleek.co) was what I was searching for. They currently +provide the possibility to buy a domain from their website, giving them all the +hassle of updating the new website on IPFS, distributing it, refreshing a very +possible CDN and finally to update the DNS records accordingly. This, as you can +imagine, provides multiple benefits: + +* I do not have to care about my very little dev machine getting hugged to death + by request in the remote case any of my posts get any attention +* I do not have to focus on automating the process someone else has already done + for me +* I can focus on writing posts after dinner instead of scratching my head trying + to understand why the website does not load/the DNS is not properly updated + +## Future improvements + +For sure, this is only the beginning. Having an automatic workflow of spell +check, deployment and release would be the first milestone. Future features for +this website could be an automatic posting of every new article on a dedicated +Mastodon bot, so that people can possibly discuss about my thoughts on the +fediverse, a decentralized network. + +To conclude, the frequency of this blog will be...whenever I have time to post :grin: Of course I need content before posting something, and this require some time for myself for experimenting with new technologies and learning new stuff, so I do not expect very much posting, but only time will tell! diff --git a/static/content/hello-world/engiwithdispenser.png b/static/content/hello-world/engiwithdispenser.png new file mode 100644 index 0000000..f78e8d4 --- /dev/null +++ b/static/content/hello-world/engiwithdispenser.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f86668c8c920175a913fd5e0c9d71916e3866445561e1d0022bf01f326a063da +size 91140 diff --git a/static/content/hello-world/fleek.png b/static/content/hello-world/fleek.png new file mode 100644 index 0000000..8e52a71 --- /dev/null +++ b/static/content/hello-world/fleek.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7392daf8416f73cbd747154a21501a04498ec6893c2c46876449f4c8365cd69d +size 293702