Finish first article
parent
8bde138b53
commit
8e0c006ecd
|
@ -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
|
||||
|
|
|
@ -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 = ' · <a href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="noopener">CC BY-SA 4.0</a>'
|
||||
|
|
|
@ -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.
|
||||
|
||||
<!-- TODO add multi page hosting section with IPFS -->
|
|
@ -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!
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue