lorenzocesana.xyz

Source code of my website, built with HUGO
Log | Files | Refs

commit ee715b2df829e4537001346c0fb86c885eed8f7e
Author: Lorenzo <lorenzo@lorenzocesana.xyz>
Date:   Wed, 21 Aug 2024 18:12:25 +0200

First commit, retaking the website online

Diffstat:
Aarchetypes/default.md | 6++++++
Acontent/en/_index.md | 16++++++++++++++++
Acontent/en/about.md | 38++++++++++++++++++++++++++++++++++++++
Acontent/en/libreboot_X220.md | 141+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/en/rss.md | 98+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/en/tech_stuff_I_use.md | 121+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/it/_index.md | 16++++++++++++++++
Acontent/it/about.md | 38++++++++++++++++++++++++++++++++++++++
Acontent/it/libreboot_X220.md | 141+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/it/rss.md | 100+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/it/tech_stuff_I_use.md | 122+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ahugo.toml | 35+++++++++++++++++++++++++++++++++++
Alayouts/_default/baseof.html | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alayouts/_default/baseof.html.old | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alayouts/_default/list.html | 17+++++++++++++++++
Alayouts/_default/rss.xml | 26++++++++++++++++++++++++++
Alayouts/_default/single.html | 3+++
Alayouts/partials/nav.html | 8++++++++
Alayouts/partials/nextprev.html | 10++++++++++
Alayouts/partials/taglist_en.html | 13+++++++++++++
Alayouts/partials/taglist_it.html | 13+++++++++++++
Alayouts/shortcodes/hidvid.html | 10++++++++++
Alayouts/shortcodes/img.html | 22++++++++++++++++++++++
Alayouts/shortcodes/rawhtml.html | 2++
Alayouts/shortcodes/tagcloud.html | 3+++
Alayouts/shortcodes/vid.html | 6++++++
Astatic/Libreboot-X220/libreboot0.webp | 0
Astatic/Libreboot-X220/libreboot1.webp | 0
Astatic/Libreboot-X220/libreboot2.webp | 0
Astatic/Libreboot-X220/libreboot3.webp | 0
Astatic/Libreboot-X220/schema1.webp | 0
Astatic/Libreboot-X220/schema2.webp | 0
Astatic/LorenzoCesana-public.gpg | 0
Astatic/rss-bridge.webp | 0
Astatic/rss.svg | 1+
Astatic/searx.webp | 0
Astatic/style.css | 120+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
37 files changed, 1239 insertions(+), 0 deletions(-)

diff --git a/archetypes/default.md b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/content/en/_index.md b/content/en/_index.md @@ -0,0 +1,16 @@ +--- +title: "Lorenzo Cesana's Website" +--- + +Lorenzo Cesana's personal site, thank you for stopping by! +If you don't know me start from my [about page](/about). + +[Anche in italiano!](https://lorenzocesana.xyz/it) + +Here are also the services hosted by me and open to all for use: +* Privacy-respectful [search engine](https://searx.lorenzocesana.xyz) (SearXNG) +* [RSS-Bridge](https://rss-bridge.lorenzocesana.xyz) +* My [git](https://git.lorenzocesana.xyz/) (stagit) to browse the codebase for this website and other projects + + +## Articles diff --git a/content/en/about.md b/content/en/about.md @@ -0,0 +1,38 @@ +--- +title: "About me" +date: 2024-02-04T18:54:05+01:00 +tags: ['Personal'] +--- + +### I am Lorenzo Cesana, a young Italian guy and I finally have my own site! + +I created this blog for many reasons (in no particular order): + +* To have a personal site where I can keep track of my progress over the years. + +* Even though one of the great passions of my life so far has been technology there's more to it than that! I am also a big fan of literature, music, film, politics, philosophy, pop culture, and so much more! +I will use this personal part of the web of mine to express some of my own opinions and thoughts, hoping to stimulate some constructive discussion. + +* To create (or at least try to) easy-to-follow guides for any person, mainly "digital newbies" or even more [tech-savvy](https://dictionary.cambridge.org/us/dictionary/english/tech-savvy), why not. +*(Of course, if you would like to see a specific topic explained feel free to reach me out!)* + +## General Info + +Everything I offer is hosted by me on my own personal home server, I'm a big fan of [self-hosted](https://en.wikipedia.org/wiki/Self-hosting_(web_services)) and of course it's all free and usable by all, barring future catrastrophes that are hard to predict; also, should you want to use my instance of [Searx](https://searx.lorenzocesana.xyz), know that I don't keep track of any research done by users! This is because I consider personal privacy an indispensable right and also because I don't have industrial quantities of storage space to fill with various logs. + +I will do future articles where I elaborate more on my idea about personal privacy online, how to get it (or get as close as possible to this goal, spoiler: if you want to be anonymous on the internet the 100% right solution is **DO NOT USE THE INTERNET!**) and related topics. + + +## How to navigate the site + +From the [main page](https://lorenzocesana.xyz) you can find a list of posts, some of my services open to the public for use and at the bottom of each page you will find my RSS Feed to stay updated (if you don't know what they are and how they work I have written a [special guide](/rss)), along with my contact information. + +Also at the end of each post there will be a tag with one or more categories (Technology, Personal etc...), clicking on it will take you to a dedicated page with all the posts belonging to that category. + + +## Not very useful info + +To run the this site I use [HUGO](https://gohugo.io/), a very convenient framework for static sites, with the [lugo](https://github.com/LukeSmithxyz/lugo) theme customized to make my life easier and accordingly to my (**horrible**) taste. + + +I have nothing more to add, so I invite you to explore my site and, if you want, give me direct feedback via email or message. diff --git a/content/en/libreboot_X220.md b/content/en/libreboot_X220.md @@ -0,0 +1,141 @@ +--- +title: "Libreboot installation on Thinkpad X220" +date: 2023-09-28T10:22:33+02:00 +tags: ['Technology'] +draft: true +--- + +In this guide I will show you (and guide you through) the process of flashing Libreboot BIOS into your Thinkpad X220! + + +## But first, what is Libreboot and why using it? + +Well, as the name imply, Libreboot is a [Libre](https://en.wikipedia.org/wiki/Free_software) [BIOS Firmware](https://en.wikipedia.org/wiki/BIOS) (to whoever is not familiar with that, we are again talking about the [FOSS](https://en.wikibooks.org/wiki/FOSS_A_General_Introduction/Introduction) principle). +I encourage you to read more about the project as it is very interesting and to educate you on [Coreboot](https://coreboot.org) as well, since it's "the original one" and it allowed Libreboot to exist (I won't go deep into the [recent controversies](https://odysee.com/@BrodieRobertson:5/gnu-sends-cease-desist-to-libreboot:e), I'm aware that installing Libreboot on a Thinkpad X220 is virtually the same of installing Coreboot, take this guide for what it is: just a guide). +So, to keep things short, Libreboot is a software that respects our privacy and allows us to get rid of the infamous [IME](https://en.wikipedia.org/wiki/Intel_Management_Engine), the Intel Management Engine! + + +### Why is IME a problem? + +The Intel Management Engine is a proprietary firmware that is *virtually present in any* "I series" Intel Processor (i3, i5, i7 etc...) and it's designed to allow *[remote access to your machine](https://proprivacy.com/privacy-news/intel-management-engine)* without you knowing or your approval. +This is dangerous on various level: +- A conspiracy theorist could say that [Big Tech](https://en.wikipedia.org/wiki/Big_Tech) is spying on us even at this exact moment (but is this reality [really that far](https://privateisland.tech/dev/spying-by-your-provider)?) +- If (or to better say, *when*) an hacker finds a way to [exploit the IME](https://www.csoonline.com/article/572885/cybercriminals-look-to-exploit-intel-me-vulnerabilities-for-highly-persistent-implants.html) and target you, you would be better to go live in the woods without electricity + +The IME is the literal definition of a [backdoor](https://en.wikipedia.org/wiki/Backdoor_(computing)) and guess what? It is enabled by default and you should not be able to disable it. +Whoever has access to the IME can basically access to all computer information and actions, for an in-depth security review [read here](https://news.ycombinator.com/item?id=15742287). + +P.S. +There is an AMD equivalent of the IME, so don't think you're safe by just switching to an AMD processor! + + +## Ok, I want to get rid of the IME, what do I need? + +First things first, I have to specify that Libreboot (or Coreboot as well) does **NOT** remove *completely* the IME *from the Thinkpad X220*, the reason is fairly technical but you can find the explanation [here](https://libreboot.org/freedom-status.html) and [here](https://libreboot.org/docs/hardware/) you can find the list of supported hardware. +This is the list of the things I used to flash Libreboot: + +- [Raspberry Pi 3B+](https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/) +- [Pomona clip 8 PIN](https://www.ebay.it/itm/185435226670) (the number of pin varies from computer to computer, check online what you need for you *specific* model) +- [Female to female jumper wire cables](https://www.ebay.it/itm/134415494864?var=433879423725) (AT LEAST 6, the shorter the better) +- Thinkpad X220 (duh...) +- If you are not planning to ssh into the raspberry you'll need a monitor and a keyboard to operate on that, since everything is done on the SBC + + +## The setup + + +### Raspberry + +Let's start with the Raspberry; I usually use [DietPi](https://dietpi.com/) for my [SBCs](https://en.wikipedia.org/wiki/Single-board_computer), it's an highly-optimized, light and fast Debian-based distro that works wonderfully in my experience. +The [guide](https://dietpi.com/docs/) is really well done and guide you step by step. + + +### Libreboot + +After the OS installation we can start to download the Libreboot stuff: +1. Download lbmk (Libreboot make) +> `git clone https://0xacab.org/libreboot/lbmk.git` + +2. Go into the directory and install the required dependencies +> `cd lbmk` +> `sudo ./build dependencies debian` + +Note: if running a different OS, change 'debian' in either 'ubuntu2004', 'arch' or 'void', depending on the system you are running + +3. Download the ROM +> `curl -LO https://mirrors.mit.edu/libreboot/stable/20230625/roms/libreboot-20230625_x220_8mb.tar.xz` + +4. Inject the "blobs" into the rom (propietary software **required** to make the computer work) +> `./vendor inject libreboot-20230625_x220_8mb.tar.xz` + +5. Select the correct ROM +> `cp grub_x220_8mb_libgfxinit_txtmode_itqwerty.rom /home/admin/.X220/lbmk/libreboot.rom` + + Renaming for the sike of semplicity and this is the Italian layout + +6. Verify the blobs, since if they are not inserted correctly and you flash the rom **you will brick your computer!** +> `./update trees -b coreboot utils` +> `./cbutils/default/cbfstool -x libreboot.rom` +> `hexdump flashregion_2_intel_me.bin` + +If the output it's all `0xFF` or it isn't a bunch of code, the blobs weren't inserted. +if that's not the case success! The rom to flash is ready. + + +### The flashing + +Now that everything is ready, it's time to flash the rom: + +1. Open the Thinkpad by following [this video](https://support.lenovo.com/us/en/videos/pd022683) and **UNPLUG THE BATTERY** + +2. Prepare the flasher by shutting down the Pi and connecting the clip, using the following diagrams as reference (which are great and taken from the blog of [Tyler Cipriani](https://tylercipriani.com/blog/2016/11/13/coreboot-on-the-thinkpad-x220-with-a-raspberry-pi/)) + +X220 Bios Chip pinout + +![X220 Bios Chip pinout](/Libreboot-X220/schema1.webp) + +Raspberry Pi 3B+ Chip pinout (**WARNING: this schema is for this specific model wich have 40 pins instead of 26, if this is not your case check the proper schema for your board**) + +![Raspberry Pi 3B+ Chip pinout](/Libreboot-X220/schema2.webp) + +This should be the final result: + +![Flasher](/Libreboot-X220/libreboot0.webp) + +3. The chip you have to flash is located on the bottom-left, under the black plastic + +![This is the chip](/Libreboot-X220/libreboot1.webp) + +Connect the flasher to the chip **WHILE EVERYTHING IS POWERED DOWN**, both the Raspberry and the thinkpad, there must be **NO** electricity in both, by doing this you won't fry your X220 and kill it. +Pay attention to the image: the Pomona clip makes it pretty easy to see if it's correctly connected, you have to pay attention to the golden spaces in between the blue "teeths" and be sure that they're alligned with the grey legs of the chip under that + +![Pomona clip connected](/Libreboot-X220/libreboot2.webp) + +At this point you can power on the raspberry and operate on that: + +![Flashing setup completed](/Libreboot-X220/libreboot3.webp) + +4. First things first enable the GPIO in your raspberry +> `raspi-config` + +Go into "Advanced Options" and enable "SPI state", then exit and install flashrom + +> `dietpi-update` +> `sudo apt-get update && sudo apt-get install libftdi1 libftdi-dev libusb-dev libpci-dev subversion` +> `sudo apt-get install build-essential pciutils usbutils libpci-dev libusb-dev libftdi1 libftdi-dev zlib1g-dev` +> `sudo apt-get install flashrom` + +At this point do *at least* (**NOT OPTIONAL**) two reads from the chip and compare their [hash](https://en.wikipedia.org/wiki/Hash_function), **ONLY if the hash is the same continue with the flashing**; if that's not the case shutdown everything, remove and reattach the clip. + +> `sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -r flash01.bin` +> `sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -r flash02.bin` +> `md5sum flash01.bin flash02.bin` <-- These two lines **MUST be the same** + +Now flash the rom prepared before! + +> `sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -w lbmk/libreboot.rom` + +And success! You have successfully flashed the Libreboot BIOS on your computer! +In case anything went wrong and you thinkpad won't boot, just re-flash flash01.bin (the readings you have done before flashing libreboot, you have done it, right?). + +If you need any help or something isn't clear feel free to contact me! diff --git a/content/en/rss.md b/content/en/rss.md @@ -0,0 +1,98 @@ +--- +title: "How I learned to Stop Worrying and Love RSS feeds" +date: 2024-06-13T21:29:19+02:00 +tags: ['Technology', 'Tutorials'] +--- + +{{< img src="/rss.svg" mouse="RSS Logo" width="200px" height="200px" >}} + +In this guide I'll explain what RSS Feeds are, why to use them, and what the advantages are over traditional notification methods. + + +## The modern way + +Nowadays to stay up to date you need to install every proprietary application, visit multiple websites filled with ads daily and have you inbox flooded with emails. +Or at least this is what a lot of people is doing. + +There is a simple and easy way to aggregate and have all your updates in a single place: RSS Feeds. + +Oh yeah, by doing this you also avoid some [security issues](https://forum.f-droid.org/t/potential-dangerous-of-push-notifications/24632) with modern [Push notifications](https://en.wikipedia.org/wiki/Push_technology). + + +## How do RSS work? + +First of all, please [have a look for yourself](https://en.wikipedia.org/wiki/RSS), learning things this way is much more effective. +But to be short RSS provide a webpage with all the content that you want to share and "subscribing" to an RSS Feed means checking it from time to time and, if it is changed, you can view the new content! + +Doing this by hand is a pain and doesn't make a lot of sense so there are specific application that groups multiple feeds, automate the check and update it automatically; below you can find some applications but there are a lot more: + + +### **Linux** + +I personally use [Newsboat](https://newsboat.org/), a terminal reader with Vim-like keybinds; otherwise I also know [RSS-Guard](https://github.com/martinrotter/rssguard), I used it for a short time and it seems nice. + + +### **Windows** + +[RSS-Guard](https://github.com/martinrotter/rssguard) or [QuiteRSS](https://quiterss.org/en/download), I personally like the former better graphically. +~~Thunderbird~~ [Betterbird](https://www.betterbird.eu) is another alternative. Actually more or less any modern [email client](https://en.wikipedia.org/wiki/Email_client) has a built-in RSS Feed reader, but Betterbird is [Open Source](https://en.wikipedia.org/wiki/Open_source) and let's face it, any other email client is horrible and frustrating at the very least. Betterbird is decent enough, but I still recommend considering it only as a **last choice**. + + +### **Android** + +I use [Feeder](https://f-droid.org/packages/com.nononsenseapps.feeder/), I find it simple and intuitive. +I also recommend [Read You](https://github.com/Ashinch/ReadYou), it has very modern graphics and gets the job done. +Both of these apps can be found on [F-Droid](https://f-droid.org/), it's simply an "alternative Play Store" where apps are Open Source. + + +### **Apple in general** + +As not an Apple user, one Open Source application that I found and it doesn't seem too bad is [NetNewsWire](https://netnewswire.com/), which is good for any Apple device. + + +## Configuring your feed + +Now you have to insert all your RSS urls into the reader, the process slightly change for each one, but in general this should be the process: +1. Click the "Add" button +2. Paste in the feed url +3. Configure some options (folder, tags, time interval to check for updates etc...) +4. Enjoy! + +If you have a lot ot urls you can also import a list from an [OPML](https://en.wikipedia.org/wiki/OPML) file and export your current list to use it on another device. + +To have them synchronized between your devices you can use a lot of solutions, I use [rsync](https://rsync.samba.org). +Here's my feeds that you can import right now (there is a lot of random stuff :)): [click here](https://lorenzocesana.xyz/various/my-feed/urls)! + + +## Where to find rss feeds? + +The best sites will have a particular designation for their feed (like the RSS image you find at the end of every page on this site), but for others you'll have to do a little more work. +In most cases you'll be able to search the Internet for something like "**Site** RSS Feed" (perhaps using my [search engine](https://searx.lorenzocesana.xyz)) or by going to the site in question, right-clicking with your mouse, selecting "inspect" and searching the code for ".xml" or ".atom." + +Should you find a feed with a ".atom" extension, fear not, it's pretty much the same thing, most RSS Feeds support them with no difference from ".xml". + + +## Sometimes though, some sites don't provide a feed at all. + +What to do in such cases? I host [RSS-Bridge](https://github.com/RSS-Bridge/rss-bridge), a program that, as per its name, acts as a "bridge" for all those sites that don't provide an RSS feed, generating it itself! + +I specify of course that the project is not made by me, I just implemented it on my server and make it publicly available, [as many other people do](https://rss-bridge.github.io/rss-bridge/General/Public_Hosts.html). +You can find it [here](https://rss-bridge.lorenzocesana.xyz/), it's still quite bare but I'm gonna add things in the future. + +RSS-Bridge comes with a multitude of channels (if you see a few it's because I haven't enabled them yet), with even the ability to custom program them. +I would also add that there are plenty of sites from which to get rss feeds for those platforms that seem not to support them: [Nitter](https://github.com/zedeus/nitter) for twitter, [Invidious](https://invidious.io) for YouTube, and many others (P.S. These sites allow you to see content without having to log in and without advertising!). + +Should you not see a bridge you are interested in or have any doubts about this guide, please do not hesitate to contact me. + +Even if I rarely use RSS-Bridge for myself, I **have** to quote this [rant](https://github.com/RSS-Bridge/rss-bridge?tab=readme-ov-file#rant) from this application's Github: +> *Dear so-called "social" websites.* +> +> Your catchword is "share", but you don't want us to share. You want to keep us within your walled gardens. That's why you've been removing RSS links from webpages, hiding them deep on your website, or removed feeds entirely, replacing it with crippled or demented proprietary API. **FUCK YOU.** +> +> You're not social when you hamper sharing by removing feeds. You're happy to have customers creating content for your ecosystem, but you don't want this content out - a content you do not even own. Google Takeout is just a gimmick. We want our data to flow, we want RSS or Atom feeds. +> +> We want to share with friends, using open protocols: RSS, Atom, XMPP, whatever. Because no one wants to have *your* service with *your* applications using *your* API force-feeding them. Friends must be free to choose whatever software and service they want. +> +> We are rebuilding bridges you have willfully destroyed. +> +> Get your shit together: Put RSS/Atom back in. diff --git a/content/en/tech_stuff_I_use.md b/content/en/tech_stuff_I_use.md @@ -0,0 +1,121 @@ +--- +title: "Tech stuff I use" +date: 2024-07-30T15:15:04+02:00 +tags: ['Personal', 'Technology'] +draft: false +--- + +I generally try to use [FOSS](https://www.gnu.org/philosophy/floss-and-foss.en.html) software, here a non-complete and always-changing list: + + +## OSs + +* [Parabola Linux](https://www.parabola.nu): Desktop +* [Arch Linux](https://archlinux.org): Desktop if I need some non-free software (driver issues and **sometimes** some work-related stuff) +* [Debian Linux](https://www.debian.org): Server (only the FOSS repos) +* [OpenWRT](https://openwrt.org): Router +* [GrapheneOS](https://grapheneos.org): Smartphone +* [Quill OS](https://github.com/Quill-OS) (old InkBox OS): Kobo Nia + + +## Hardwares + +I have rarely been in the same place for many years so I usually prefer laptops, also I don't need a lot of power. +My main device is a Thinkpad X200 with [Libreboot](https://libreboot.org) and it's in great conditions, my secondary laptop (that I use for work) is a Thinkpad X250. +I also have a Dell G15 with a Ryzen 7 5800H and a RTX 3060; I rarely use it, mainly for gaming, running a "simple" AI stuff like [LLaMAC++](https://github.com/ggerganov/llama.cpp) or "mining" [Monero](https://www.getmonero.org). + +I also buy/receive/find old computer (laptops, netbooks, pentium towers etc...), I usually clean and recover them, repair if needed and install Debian on a new SSD; after that I either sell or donate them if needed by someone (schools, churches...). +Whenever possible I'll also install Libreboot on all supported hardware. + +Smartphones are forged by the devil but I have a refurbished Pixel 6a with a custom ROM, I don't use it much, on a tipical week it last for like 4 days. It is starting to lag more than usual (let's thanks Google, famous for the poor quality of his devices) and, in the future, I could try switching to a [PinePhone](https://pine64.org/devices/pinephone) or in general something compatible with [Postmarket OS](https://postmarketos.org). + +A very cool thing that I have is the [Sensor-Watch](https://github.com/joeycastillo/Sensor-Watch) and also the [N-O-D-E](https://n-o-d-e.net) mods are great. + +My homeserver is a [ZimaBoard 432](https://shop.zimaboard.com/products/zimaboard-single-board-server) with 2 Western Digital SSD (2TB and 1TB); I thought it was not worth the price but it's working great and the power consumption is very low (I was using a random old pc before, this boars already re-payed itself with the saved electricity). I mainly choose it for the x86 processor. Of course I instantly deleted CasaOS and installed good ol' Debian. + +As a router I use a Fritz!Box 7520, found it for 30 euros, it support ADSL2 and latest OpenWRT release. + +I also have a strong interest in [Open Hardware](https://opensource.com/resources/what-open-hardware) and I would like to try something like the [MNT Reform](https://shop.mntre.com/products/mnt-reform), but for now I'm ok. + + +## Programs + +### Daily + +* [dwm](https://dwm.suckless.org) and related [Suckless](https://dwm.suckless.org) stuff +* [lynx](https://lynx.invisible-island.net): terminal based web browser with vim-like keybinds, just great +* [librewolf](https://librewolf.net): the best "normal" browser +* [keepassXC](https://keepassxc.org): I used [pass](https://www.passwordstore.org) in the past but I find KeepassXC easier to use across multiple devices. And no, there are **NO** alternatives to offline self-contained password managers. +* [vim](https://www.vim.org): I tried [Emacs](https://www.gnu.org/software/emacs) but I still prefer Vim, not really sure why +* [lf](https://github.com/gokcehan/lf): a great advantage of terminal application is that once you get used to them, they are comfortable and usable on a server +* [remmina](https://remmina.org): having to manage a lot of SSH and sometimes some RDP connections daily I found remmina to be the *least bad* program. +* [newsboat](https://newsboat.org): terminal-based RSS reader + +### Media + +* [mpv](https://mpv.io) + [yt-dlp](https://github.com/yt-dlp/yt-dlp): Just the best player + a very cool downloader which works for a lot of websites (even though [curl](https://curl.se) works most of the time...) +* [ncmpcpp](https://github.com/ncmpcpp/ncmpcpp): very cool and simple to use terminal music player +* [vanilla music](https://vanilla-music.github.io): my god it was a pain to find a simple, offline and not subscription-based (or Spotify/Soundcloud frontend) Android music player that doesn't completely sucks. This works good. +* [baresip](https://github.com/baresip/baresip): right now I work with SIP related stuff and this is great +* [zathura](https://pwmt.org/projects/zathura): simple stupid PDF (and a lot of other formats) reader +* [koreader](https://koreader.rocks): again, simple stupid application for e-reader in general. It just works. + +### Server + +* [rsync](https://rsync.net): easy to setup with [cron](https://en.wikipedia.org/wiki/Cron) and keep every device in sync +* [mergerfs](https://github.com/trapexit/mergerfs): great utility for a simple home server setup like the one I have +* [nginx](https://nginx.org): very simple webserver to understand and configure. +* [postgresql](https://www.postgresql.org): just the funny blue elephant DB +* [wireguard](https://www.wireguard.com): a pretty good VPN. If you are using a non self-hosted one, you are doing it wrong. +* [dovecot](https://dovecot.org): SMTP server, configured with [SpamAssassin](https://spamassassin.apache.org) +* [coturn](https://github.com/coturn/coturn): TURN server +* [Matrix Synapse](https://github.com/matrix-org/synapse): Matrix server, I use this **obscene and unbearable** software just because I was looking for a self-hosted messagging solution and now I'm using it with an handful of users and mainly for the Whatsapp bridge. Administrating it is not **that** bad but the absurd amount of network request that you have to block in order to have a "private" experince is just unacceptable. +Also there isn't even a single **decent** client. +* [SearxNG](https://docs.searxng.org): great private search engine, and self-hosted! +* [RSS-Bridge](https://rss-bridge.github.io/rss-bridge): I haven't been using it a lot lately, but it can be pretty useful +* [Monero node](https://www.getmonero.org): I have the bandwith and the storage to run one (*pruned*), so why not? + + +## Other random stuff that I'm planning to try + +* [Proxmox](https://www.proxmox.com): I generally dislike virtualization since I see it as an over-engineered solution to a self-made problem (most of the time) but hey, maybe I'll change my mind +* [OpenBSD](https://www.openbsd.org): well, gotta try it sooner or later... +* [GNU Guix](https://guix.gnu.org): mostly out of curiosity +* [tor](https://www.torproject.org): running a Tor node and serving this website through it would be nice +* [i2pd](https://i2pd.website): Tor bul cooler (and safer). Same as tor, I'm planning to run a node +* [XMPP](https://xmpp.org): the real best **extensible** chat protocol, still not sure which server to choose +* [httpd](https://man.openbsd.org/OpenBSD-current/man8/httpd.8): seems cool and simple, I also personally don't use a lof of nginx advanced features +* [Asterisk](https://www.asterisk.org): when you work with systems like [3CX](https://www.3cx.com) and [FreePBX](https://www.freepbx.org) at first they seems ugly, unpolished and you have no idea of what it's happening. When you understand them you start to appreciate solutions like those, excpecially in a business environment. I'm planning to have a pure Asterisk installation for personal use, but [Opensips](https://opensips.org) is also really cool. + +When I will try all of this? No idea. + + +## Stuff that I'll try to make myself! + +In tech, like a lot other things in life, complaining sounds good at first, but then you realize that you are doing no harm to anyone but yourself by not following the solution you want. + +So, since I have a love/hate relationship with some programs I'll try to code myself an alternative. Maybe they will suck at first, but that's the only way. + +* a [Postman](https://www.postman.com) alternative: how is it possible that there isn't a single FOSS application that replace Postman **WHITOUT** a subscription/cloud login based service? +I know that there are application where this option is *not mandatory*, but I don't want it at all. +For now I'm using [Firecamp](https://firecamp.io) and I've tried [Insomnia](https://insomnia.rest), at least they are Open Source, but they are still sub-optimal +* a [Dbeaver](https://dbeaver.io) alternative: I mean, it's ok, but I would like something more slick and not written in Java, since I had a lot of problems with jre and jdk libraries + +This is not to demigrate any project, it's just a great exercise to learn and understand technology. Of course you will find all of this software on my [git](https://cgit.lorenzocesana.xyz). + + +## Technology that I don't like +* Proprietary software or non-free software in general. +* [Electron](https://electronjs.org). I hate it with passion. Don't use it. Don't use applications written in Electron. Please, just don't. It's really bad. +* The new shiny stuff that you don't need. I try to buy used or even better, not buying and using what I already have. +* I don't think smartphones are inherently bad, but a lot of time they *make the person who use it bad*. They completely kill social occasions most of the time. +* VPNs companies and all their fake marketing. They are literally a scam. More on this in the future. + +{{< rawhtml >}} +<br> +<br> +<br> +{{< /rawhtml >}} + +As said before, this is an always-expanding page and things may change/update. I will elaborate more on some points in dedicated posts. +Also if you have any suggestions or question please contact me! diff --git a/content/it/_index.md b/content/it/_index.md @@ -0,0 +1,16 @@ +--- +title: "Lorenzo Cesana's Website" +--- + +Sito personale di Lorenzo Cesana, grazie per esserti fermato! +Se non mi conosci parti dalla mia [pagina about](/it/about). + +[Also in english!](https://lorenzocesana.xyz) + +Ecco anche dei servizi hostati da me ed aperti a tutti per l'utilizzo: +* Privacy-respectful [search engine](https://searx.lorenzocesana.xyz) (SearxNG) +* [RSS-Bridge](https://rss-bridge.lorenzocesana.xyz) +* Il mio [git](https://git.lorenzocesana.xyz) (stagit) per navigare la codebase di questo sito e per altri progetti + + +## Articoli diff --git a/content/it/about.md b/content/it/about.md @@ -0,0 +1,38 @@ +--- +title: "About me" +date: 2024-02-04T18:54:05+01:00 +tags: ['Personale'] +--- + +### Sono Lorenzo Cesana, un giovane ragazzo italiano e finalmente ho un sito tutto mio! + +Ho creato questo blog per molte ragioni (in ordine sparso): + +* Avere un sito personale dove poter tenere traccia dei miei progressi nel corso degli anni. + +* Anche se una delle grandi passioni della mia vita finora è stata la tecnologia, c'è molto di più! Sono anche un grande appassionato di letteratura, musica, cinema, politica, filosofia, cultura pop e molto altro ancora! +Userò questa mia parte personale del web per esprimere alcune delle mie opinioni e dei miei pensieri, sperando di stimolare un discorso costruttivo. + +* Creare (o almeno provarci) delle guide facili da seguire per qualsiasi persona, soprattutto per i "neofiti digitali" o anche per i più esperti, perché no. +*(Naturalmente, se vuoi che un argomento specifico venga spiegato, non esitare a contattarmi!)* + +## Informazioni generali + +Tutto ciò che offro è hostato da me sul mio server personale di casa, sono un grande fan del [self-hosted](https://en.wikipedia.org/wiki/Self-hosting_(web_services)) e naturalmente è tutto gratuito e utilizzabile da tutti, salvo catastrofi future difficilmente prevedibili; inoltre, qualora tu voglia utilizzare la mia istanza di [Searx](https://searx.lorenzocesana.xyz), sappi che non tengo traccia delle ricerche effettuate dagli utenti! Questo perché considero la privacy personale un diritto assoluto e anche perché non ho quantità industriali di spazio di archiviazione da riempire con i vari log. + +In futuro pubblicherò articoli in cui approfondirò la mia idea di privacy personale online, come ottenerla (o come avvicinarsi il più possibile a questo obiettivo, spoiler: se si vuole essere anonimi su Internet la soluzione giusta al 100% è **NON USARE INTERNET!**) e argomenti correlati. + + +## Come navigare nel sito + +Dalla [pagina principale](https://lorenzocesana.xyz/it) si trova un elenco di post, alcuni dei servizi hostati da me ed in fondo a ogni pagina troverete i miei Feed RSS per rimanere aggiornati (se non sai cosa sono e come funzionano ho scritto una [guida speciale](/it/rss)), insieme alle mie informazioni di contatto. + +Inoltre, alla fine di ogni post ci sarà un tag con una o più categorie (Tecnologia, Personale, ecc.), cliccandoci si accede a una pagina dedicata con tutti i post appartenenti a quella categoria. + + +## Informazioni non molto utili + +Per gestire questo sito utilizzo [HUGO](https://gohugo.io/), un framework molto comodo per i siti statici, con il tema [lugo](https://github.com/LukeSmithxyz/lugo) personalizzato per semplificarmi la vita e secondo i miei (**orribili**) gusti. + + +Non ho altro da aggiungere, quindi ti invito a esplorare il mio sito e, se vuoi, a darmi un feedback diretto via e-mail o messaggio. diff --git a/content/it/libreboot_X220.md b/content/it/libreboot_X220.md @@ -0,0 +1,141 @@ +--- +title: "Come Installare Libreboot su un Thinkpad X220" +date: 2023-09-28T10:22:33+02:00 +tags: ['Tecnologia'] +draft: true +--- + +In questa guida mostrerò (e descriverò) il processo di flashing del BIOS Libreboot su un Thinkpad X220! + + +## Ma prima, cos'è Libreboot e perché usarlo? + +Come suggerisce il nome, Libreboot è un [Libre](https://en.wikipedia.org/wiki/Free_software) [BIOS Firmware](https://en.wikipedia.org/wiki/BIOS) (qualora non l'avessi capito, sto nuovamente parlando del principio [FOSS](https://en.wikibooks.org/wiki/FOSS_A_General_Introduction/Introduction)). +Ti incoraggio a leggere di più sul progetto, perché è molto interessante, e ad istruirti anche su [Coreboot](https://coreboot.org), dato che è "l'originale" ed ha permesso a Libreboot di esistere (non mi addentrerò nelle [recenti controversie](https://odysee.com/@BrodieRobertson:5/gnu-sends-cease-desist-to-libreboot:e), sono consapevole che installare Libreboot su un Thinkpad X220 è praticamente la stessa cosa che installare Coreboot, prendi questa guida per quello che è: solo una guida). +Quindi, per farla breve, Libreboot è un software che rispetta la nostra privacy e ci permette di sbarazzarci del famigerato [IME](https://en.wikipedia.org/wiki/Intel_Management_Engine), l'Intel Management Engine! + + +### Perché l'IME è un problema? + +L'Intel Management Engine è un firmware proprietario presente in *virtualmente* qualsiasi processore Intel "serie I" (i3, i5, i7 ecc.) ed è progettato per consentire *[l'accesso remoto alla vostra macchina](https://proprivacy.com/privacy-news/intel-management-engine)* senza che voi lo sappiate o lo approviate. +Questo è pericoloso su vari livelli: +- Un cospirazionista potrebbe dire che le [Big Tech](https://en.wikipedia.org/wiki/Big_Tech) ci stanno spiando anche in questo preciso momento (ma è questa realtà [davvero così lontana](https://privateisland.tech/dev/spying-by-your-provider)?) +- Se (o per meglio dire, *quando*) un hacker troverà un modo per [sfruttare l'IME](https://www.csoonline.com/article/572885/cybercriminals-look-to-exploit-intel-me-vulnerabilities-for-highly-persistent-implants.html) e prenderti di mira, faresti meglio ad andare a vivere in un bosco senza elettricità. + +L'IME è la definizione letterale di [backdoor](https://en.wikipedia.org/wiki/Backdoor_(computing)) ed indovina? È abilitato per impostazione predefinita e non dovrebbe essere possibile disabilitarlo. +Chiunque abbia accesso all'IME ha sostanzialmente accesso a tutte le informazioni e le azioni del computer, per un'analisi più approfondita [leggi qui](https://news.ycombinator.com/item?id=15742287). + +P.S. +Esiste un equivalente AMD dell'IME, quindi non pensare di essere al sicuro semplicemente passando a un processore AMD! + + +## Ok, voglio eliminare l'IME, di cosa ho bisogno? + +Prima di tutto, devo specificare che Libreboot (o anche Coreboot) **NON** rimuove *completamente* l'IME *dal Thinkpad X220*, il motivo è abbastanza tecnico ma puoi trovare la spiegazione [qui](https://libreboot.org/freedom-status.html) e [qui](https://libreboot.org/docs/hardware/) trovi invece la lista dell'hardware supportato. +Questo è l'elenco delle cose che ho usato per flashare Libreboot: + +- [Raspberry Pi 3B+](https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/) +- [Clip Pomona 8 PIN](https://www.ebay.it/itm/185435226670) (il numero di pin varia da computer a computer, verificare online ciò che serve per il tuo modello *specifico*) +- [Cavi jumper femmina-femmina](https://www.ebay.it/itm/134415494864?var=433879423725) (ALMENO 6, più corti sono meglio è) +- Thinkpad X220 (duh...) +- Se non hai intenzione di effettuare l'accesso via ssh al raspberry, avrai bisogno di un monitor e di una tastiera per operare su di esso, dal momento che tutto viene fatto sull' SBC. + + +## La configurazione + + +### Raspberry + +Iniziamo con il Raspberry; di solito uso [DietPi](https://dietpi.com/) per i miei [SBC](https://en.wikipedia.org/wiki/Single-board_computer), è una distro basata su Debian molto ottimizzata, leggera e veloce e, per quella che è la mia esperienza, funziona molto bene. +La [guida](https://dietpi.com/docs/) è davvero ben fatta e ti guida passo passo. + + +### Libreboot + +Dopo l'installazione del sistema operativo inizia a scaricare i componenti di Libreboot: +1. Scarica lbmk (Libreboot make) +> `git clone https://0xacab.org/libreboot/lbmk.git` + +2. Vai nella directory e installa le dependecies richieste +> `cd lbmk` +> `sudo ./build dependencies debian` + +Nota: se utilizzi una distro diversa, cambia "debian" con "ubuntu2004", "arch" o "void", a seconda del sistema in uso. + +3. Scarica la ROM +> `curl -LO https://mirrors.mit.edu/libreboot/stable/20230625/roms/libreboot-20230625_x220_8mb.tar.xz` + +4. Inietta i "blob" nella rom (software proprietario **richiesto** per far funzionare il computer) +> `./vendor inject libreboot-20230625_x220_8mb.tar.xz` + +5. Seleziona la rom corretta +> `cp grub_x220_8mb_libgfxinit_txtmode_itqwerty.rom /home/admin/.X220/lbmk/libreboot.rom` + +Rinomino per semplicita' e questa e' la rom italiana. + +6. Verifica i blob, poiché se non sono inseriti correttamente e flashi la rom **rischi di brickare il computer!** +> `./update trees -b coreboot utils` +> `./cbutils/default/cbfstool -x libreboot.rom` +> `hexdump flashregion_2_intel_me.bin` + +Se l'output è tutto `0xFF` o non è un mucchio di codice, i blob non sono stati inseriti. +In caso contario successo! La rom da flashare è pronta. + + +### Il flashing + +Ora che tutto è pronto, è momento di flashare la rom: + +1. Apri il Thinkpad seguendo [questo video](https://support.lenovo.com/us/en/videos/pd022683) e **SCOLLEGA LA BATTERIA**. + +2. Prepara il flasher spegnendo il Pi e collegando la clip, usando i seguenti schemi come riferimento (che sono fantastici e presi dal blog di [Tyler Cipriani](https://tylercipriani.com/blog/2016/11/13/coreboot-on-the-thinkpad-x220-with-a-raspberry-pi/)) + +Pinout del chip Bios X220 + +![piedinatura del chip Bios X220](/Libreboot-X220/schema1.webp) + +Pinout chip Raspberry Pi 3B+ (**ATTENZIONE: questo schema è per questo modello specifico che ha 40 pin invece di 26, se il tuo caso è il secondo controlla lo schema corretto per la tua scheda**) + +![Piedinatura chip Raspberry Pi 3B+](/Libreboot-X220/schema2.webp) + +Questo dovrebbe essere il risultato finale: + +![Flasher](/Libreboot-X220/libreboot0.webp) + +3. Il chip da flashare si trova in basso a sinistra, sotto la plastica nera. + +![Questo è il chip](/Libreboot-X220/libreboot1.webp) + +Collega il flasher al chip **MENTRE TUTTO È SPENTO E SCOLLEGATO**, sia il Raspberry che il thinkpad, **NON** deve esserci elettricità in entrambi, in questo modo non si friggerà l'X220 e non lo si ucciderà. +Prestare attenzione all'immagine: la clip Pomona rende abbastanza facile vedere se è collegata correttamente, è necessario prestare attenzione agli spazi dorati tra i "dentini" blu e assicurarsi che si allineino con i piedini grigi del chip sottostante + +![Clip Pomona collegata](/Libreboot-X220/libreboot2.webp) + +A questo punto puoi accendere il raspberry e operare su di esso: + +![Configurazione del flashing completata](/Libreboot-X220/libreboot3.webp) + +4. Per prima cosa abilita il GPIO nel raspberry +> `raspi-config` + +Vai in "Advanced Options" ed abilita "SPI state", quindi esci ed installa flashrom + +> `dietpi-update` +> `sudo apt-get update && sudo apt-get install libftdi1 libftdi-dev libusb-dev libpci-dev subversion` +> `sudo apt-get install build-essential pciutils usbutils libpci-dev libusb-dev libftdi1 libftdi-dev zlib1g-dev` +> `sudo apt-get install flashrom` + +A questo punto fai *almeno* (**NON OPZIONALE**) due letture dal chip e confronta il loro [hash](https://en.wikipedia.org/wiki/Hash_function), **SOLO se l'hash è lo stesso continuare con il flashing**; qualora non sia così spegni tutto, rimuovi e riattacca la clip. + +> `sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -r flash01.bin` +> `sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -r flash02.bin` +> `md5sum flash01.bin flash02.bin` <-- Queste due righe **DEVONO essere uguali** + +Ora flasha la rom preparata prima! + +> `sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -w lbmk/libreboot.rom` + +Ed hai finito! Hai installato con successo Libreboot sul tuo computer! +Nel caso in cui qualcosa sia andato storto e il thinkpad non si avvii, basta riflashare flash01.bin (la lettura che hai fatto prima di flashare libreboot, l'hai fatta, vero?). + +Se hai bisogno di aiuto o qualcosa non è chiaro, contattami pure! diff --git a/content/it/rss.md b/content/it/rss.md @@ -0,0 +1,100 @@ +--- +title: "Come ho imparato a non preoccuparmi e ad amare i Feed RSS" +date: 2024-06-13T21:29:19+02:00 +tags: ['Tecnologia', 'Tutorials'] +--- + +{{< img src="/rss.svg" mouse="RSS Logo" width="200px" height="200px" >}} + +In questa guida spiegherò cosa sono i Feed RSS, perché usarli e quali sono i vantaggi rispetto ai metodi di notifica tradizionali. + + +## Il modo "moderno" + +Al giorno d'oggi per rimanere aggiornati è necessario installare ogni applicazione proprietaria, visitare più siti web pieni di pubblicità ogni giorno e avere la casella di posta inondata di e-mail. +O almeno questo è ciò che fanno molte persone. + +Esiste un modo semplice e facile per aggregare e avere tutti gli aggiornamenti in un unico luogo: I feed RSS. + +Oh, inoltre, in questo modo si evitano anche alcuni [problemi di sicurezza](https://forum.f-droid.org/t/potential-dangerous-of-push-notifications/24632) con le moderne [notifiche push](https://en.wikipedia.org/wiki/Push_technology). + + +## Come funzionano gli RSS? + +Prima di tutto, [dagli un'occhiata in autonomia](https://en.wikipedia.org/wiki/RSS): imparare le cose in questo modo è molto più efficace. +Per essere brevi, gli RSS forniscono una pagina web con tutti i contenuti che si desidera condividere e "iscriversi" a un feed RSS significa controllarlo di tanto in tanto e, se viene modificato, visualizzare i nuovi contenuti! + +Fare questo a mano è tedioso e non ha molto senso, esistono quindi programmi specifici che raggruppano più feed, automatizzano il controllo e lo aggiornano automaticamente; di seguito ne metto alcuni, ma ce ne sono molte altri: + + +### **Linux** + +Personalmente uso [Newsboat](https://newsboat.org/), un lettore da terminale con keybinds simili a Vim; altrimenti conosco anche [RSS-Guard](https://github.com/martinrotter/rssguard), l'ho usato per poco tempo e mi sembra carino. + + +### **Windows** + +[RSS-Guard](https://github.com/martinrotter/rssguard) o [QuiteRSS](https://quiterss.org/en/download), personalmente preferisco il primo dal punto di vista grafico. +~~Thunderbird~~ [Betterbird](https://www.betterbird.eu) è un'altra alternativa. In realtà più o meno qualsiasi [client di posta elettronica](https://en.wikipedia.org/wiki/Email_client) moderno ha un lettore di feed RSS integrato, ma Betterbird è [Open Source](https://en.wikipedia.org/wiki/Open_source) e, diciamolo, qualsiasi altro client di posta elettronica è orribile e quantomeno frustrante. Betterbird è abbastanza decente, ma consiglio comunque di considerarlo solo come **ultima scelta**. + + +### **Android** + +Io uso [Feeder](https://f-droid.org/packages/com.nononsenseapps.feeder/), lo trovo semplice e intuitivo. +Consiglio anche [Read You](https://github.com/Ashinch/ReadYou), ha una grafica molto moderna e fa il suo dovere. +Entrambe le app si trovano su [F-Droid](https://f-droid.org/), che è semplicemente un "Play Store alternativo" in cui le app sono Open Source. + + +### **Apple in generale** + +Non essendo un utente Apple, un'applicazione Open Source che ho trovato e che non sembra male è [NetNewsWire](https://netnewswire.com/), che va bene per qualsiasi dispositivo Apple. + + +## Configurazione del feed + +Ora devi inserire tutti i vostri url RSS nel lettore; il processo cambia leggermente per ciascuno di essi, ma in generale la procedura dovrebbe essere questa: +1. Fare clic sul pulsante "Aggiungi" +2. Incollare l'url del feed +3. Configurare alcune opzioni (cartella, tag, intervallo di tempo per controllare gli aggiornamenti, ecc.) +4. Finito! + +Se hai molti url, puoi anche importare un elenco da un file [OPML](https://en.wikipedia.org/wiki/OPML) ed esportare l'elenco attuale per utilizzarlo su un altro dispositivo. + +Per sincronizzarli tra i tuoi dispositivi puoi usare molte soluzioni, io uso [rsync](https://rsync.samba.org). +Ecco il mio feed che puoi importare subito (ci sono molte cose random :)): [clicca qui](https://lorenzocesana.xyz/various/my-feed/urls)! + + +## Dove trovare i feed rss? + +I siti migliori avranno una designazione particolare per i loro feed (come l'immagine RSS che trovate alla fine di ogni pagina di questo sito), ma per altri dovrai fare un po' più di lavoro. +Nella maggior parte dei casi è possibile cercare su Internet qualcosa come "**Sito** RSS Feed" (magari utilizzando il mio [motore di ricerca](https://searx.lorenzocesana.xyz)) o andando sul sito in questione, cliccare con il tasto destro del mouse, selezionare "ispeziona" e cercando nel codice ".xml" o ".atom". + +Qualora trovassi un feed con estensione ".atom", non preoccuparti, è praticamente la stessa cosa, la maggior parte dei feed RSS li supporta senza alcuna differenza rispetto a ".xml". + + +## A volte, però, alcuni siti non forniscono alcun feed. + +Cosa fare in questi casi? Io espongo un'instanza di [RSS-Bridge](https://github.com/RSS-Bridge/rss-bridge), un programma che, come da nome, fa da "ponte" per tutti quei siti che non forniscono un feed RSS, generandolo lui stesso! + +Preciso ovviamente che il progetto non è realizzato da me, l'ho solo implementato sul mio server e reso pubblicamente disponibile, [come fanno molte altre persone](https://rss-bridge.github.io/rss-bridge/General/Public_Hosts.html). +Potete trovarlo [qui](https://rss-bridge.lorenzocesana.xyz/), è ancora piuttosto scarno ma aggiungerò cose in futuro. + +RSS-Bridge è dotato di una moltitudine di canali (se ne vedete pochi è perché non li ho ancora abilitati), con la possibilità di programmarli in modo personalizzato. +Vorrei anche aggiungere che ci sono molti siti da cui ottenere i feed rss per quelle piattaforme che sembrano non supportarli: [Nitter](https://github.com/zedeus/nitter) per Twitter, [Invidious](https://invidious.io) per YouTube e molti altri (P.S. Questi siti ti permettono di vedere i contenuti senza dovervi loggare e senza pubblicità!). + +Se non vedi un plugin che ti interessa o hai dubbi su questa guida, non esitare a contattarmi. + +Anche se uso raramente RSS-Bridge per me stesso, **devo** citare questo [rant](https://github.com/RSS-Bridge/rss-bridge?tab=readme-ov-file#rant) dal Github di questa applicazione: + +> *Dear so-called "social" websites.* +> +> Your catchword is "share", but you don't want us to share. You want to keep us within your walled gardens. That's why you've been removing RSS links from webpages, hiding them deep on your website, or removed feeds entirely, replacing it with crippled or demented proprietary API. **FUCK YOU.** +> +> You're not social when you hamper sharing by removing feeds. You're happy to have customers creating content for your ecosystem, but you don't want this content out - a content you do not even own. Google Takeout is just a gimmick. +We want our data to flow, we want RSS or Atom feeds. +> +> We want to share with friends, using open protocols: RSS, Atom, XMPP, whatever. Because no one wants to have *your* service with *your* applications using *your* API force-feeding them. Friends must be free to choose whatever software and service they want. +> +> We are rebuilding bridges you have willfully destroyed. +> +> Get your shit together: Put RSS/Atom back in. diff --git a/content/it/tech_stuff_I_use.md b/content/it/tech_stuff_I_use.md @@ -0,0 +1,122 @@ +--- +title: "Tecnologie che uso" +date: 2024-07-30T15:15:04+02:00 +tags: ['Personal', 'Tecnologia'] +draft: false +--- + +In genere cerco di utilizzare software [FOSS](https://www.gnu.org/philosophy/floss-and-foss.en.html), ecco un elenco non completo e in continua evoluzione: + + +## OSs + +* [Parabola Linux](https://www.parabola.nu): Desktop +* [Arch Linux](https://archlinux.org): Desktop qualora mi serva qualche componente non free (drivers e **talvolta** qualche cosa inerente al lavoro) +* [Debian Linux](https://www.debian.org): Server (solo le repo FOSS) +* [OpenWRT](https://openwrt.org): Router +* [GrapheneOS](https://grapheneos.org): Smartphone +* [Quill OS](https://github.com/Quill-OS) (vecchio InkBox OS): Kobo Nia + + +## Hardware + +Raramente sono stato nello stesso posto per molti anni, quindi di solito preferisco i portatili, inoltre non ho bisogno di molta energia. +Il mio dispositivo principale è un Thinkpad X200 con [Libreboot](https://libreboot.org) ed è in ottime condizioni, il mio portatile secondario (che uso per lavoro) è un Thinkpad X250. +Ho anche un Dell G15 con un Ryzen 7 5800H e una RTX 3060; lo uso raramente, principalmente per giocare, per eseguire "semplici" AI come [LLaMAC++](https://github.com/ggerganov/llama.cpp) o per "minare" [Monero](https://www.getmonero.org). + +Compro/ricevo/trovo anche vecchi computer (portatili, netbook, pentium tower, ecc.), di solito li pulisco, li riparo se necessario e installo Debian su un nuovo SSD; dopodiché li vendo o li dono se servono a qualcuno (scuole, chiese, ecc...). +Quando possibile, installo anche Libreboot su tutto l'hardware supportato. + +Gli smartphone sono forgiati dal diavolo, ma ho un Pixel 6a ricondizionato con una ROM personalizzata, non lo uso molto, in una settimana tipica dura circa 4 giorni. Sta cominciando ad avere qualche lag di troppo (ringraziamo Google, famosa per la scarsa qualita' dei suoi dispositivi) e potrei valutare in futuro il [PinePhone](https://pine64.org/devices/pinephone) o comunque qualcosa compatibile con [Postmarket OS](https://postmarketos.org). + +Una cosa molto "cool" è il [Sensor-Watch](https://github.com/joeycastillo/Sensor-Watch) e anche le mod [N-O-D-E](https://n-o-d-e.net) sono molto interessanti. + +Il mio homeserver è una [ZimaBoard 432](https://shop.zimaboard.com/products/zimaboard-single-board-server) con 2 Western Digital SSD (2TB e 1TB); pensavo che non valesse il prezzo ma e' ottimo ed il consumo di energia è molto basso (prima usavo un vecchio pc a caso, questa board si è già ripagata da sola con l'elettricità risparmiata). L'ho scelto principalmente per il processore x86. Naturalmente ho cancellato immediatamente CasaOS e ho installato il caro vecchio Debian. + +Come router uso un Fritz!Box 7520, trovato a 30 euro, supporta ADSL2 e l'ultima versione di OpenWRT. + +Ho anche un forte interesse nel movimento [Open Hardware](https://opensource.com/resources/what-open-hardware) e mi piacerebbe provare qualcosa come il [MNT Reform](https://shop.mntre.com/products/mnt-reform), ma per ora va bene cosi'. + + +## Programmi + +### Quotidiano + +* [dwm](https://dwm.suckless.org) e le relativi software [Suckless](https://dwm.suckless.org) +* [lynx](https://lynx.invisible-island.net): browser web basato su terminale con keybinds simili a vim, semplicemente fantastico +* [librewolf](https://librewolf.net): il miglior browser "normale". +* [keepassXC](https://keepassxc.org): in passato ho usato [pass](https://www.passwordstore.org), ma trovo KeepassXC più facile da usare su più dispositivi. E no, non ci sono alternative ai gestori di password offline. +* [vim](https://www.vim.org): ho provato [Emacs](https://www.gnu.org/software/emacs) ma continuo a preferire Vim, non so bene perché. +* [lf](https://github.com/gokcehan/lf): un grande vantaggio delle applicazioni di terminale è che, una volta che ci si abitua, sono comode e utilizzabili su un server. +* [remmina](https://remmina.org): dovendo gestire quotidianamente molte connessioni SSH e talvolta RDP, ho trovato remmina il *meno peggio*. +* [newsboat](https://newsboat.org): lettore RSS basato su terminale. + +### Media + +* [mpv](https://mpv.io) + [yt-dlp](https://github.com/yt-dlp/yt-dlp): Solo il miglior player + un downloader molto bello che funziona per molti siti web (anche se [curl](https://curl.se) funziona la maggior parte delle volte...) +* [ncmpcpp](https://github.com/ncmpcpp/ncmpcpp): lettore musicale da terminale bello e semplice da usare +* [vanilla music](https://vanilla-music.github.io): mio Dio, è stata una sofferenza trovare un lettore musicale Android semplice, offline e non basato su abbonamento (o sul frontend di Spotify/Soundcloud) che non facesse completamente schifo. Questo funziona bene. +* [baresip](https://github.com/baresip/baresip): in questo momento lavoro con cose legate al protocollo SIP e questo è ottimo. +* [zathura](https://pwmt.org/projects/zathura): semplice lettore di PDF (e di molti altri formati). +* [koreader](https://koreader.rocks): di nuovo, una semplice applicazione per e-reader in generale. Funziona molto bene. + +### Server + +* [rsync](https://rsync.net): facile da configurare con [cron](https://en.wikipedia.org/wiki/Cron) e mantenere ogni dispositivo sincronizzato +* [mergerfs](https://github.com/trapexit/mergerfs): di grande utilità per una semplice configurazione di un server domestico come quello che ho io +* [nginx](https://nginx.org): web server molto semplice da capire e configurare. +* [postgresql](https://www.postgresql.org): DB con il funny blue elephant +* [wireguard](https://www.wireguard.com): una VPN piuttosto buona. Se stai usando una VPN non self-hosted, stai sbagliando. +* [dovecot](https://dovecot.org): Server SMTP, configurato con [SpamAssassin](https://spamassassin.apache.org). +* [coturn](https://github.com/coturn/coturn): server TURN +* [Matrix Synapse](https://github.com/matrix-org/synapse): Matrix server, uso questo **osceno e insopportabile** software solo perché stavo cercando una soluzione di messaggistica self-hosted, al momento lo sto usando con una manciata di utenti e principalmente per il collegamento con Whatsapp. L'amministrazione non è poi così male, ma l'assurda quantità di richieste di rete che si devono bloccare per avere un'esperienza "privata" è semplicemente inaccettabile. +Inoltre non c'è nemmeno un singolo client **decente**. +* [SearxNG](https://docs.searxng.org): ottimo motore di ricerca privato e self-hosted! +* [RSS-Bridge](https://rss-bridge.github.io/rss-bridge): Non l'ho usato molto ultimamente, ma può essere molto utile. +* [Monero node](https://www.getmonero.org): ho la banda e lo storage per gestirne uno (*pruned*), quindi perché no? + + +## Altre cose a caso che ho intenzione di provare + +* [Proxmox](https://www.proxmox.com): In generale non mi piace la virtualizzazione perché la vedo come una soluzione troppo ingegnerizzata a un problema autoprodotto (la maggior parte delle volte), ma forse cambierò idea. +* [OpenBSD](https://www.openbsd.org): beh, prima o poi dovrò provarlo... +* [GNU Guix](https://guix.gnu.org): più che altro per curiosità +* [tor](https://www.torproject.org): ho in piano di gestire un nodo Tor e servire questo sito web attraverso di esso +* [i2pd](https://i2pd.website): Tor ma meglio (e più sicuro). Come per tor, ho intenzione di gestire un nodo +* [XMPP](https://xmpp.org): il vero miglior protocollo di chat **estendibile**, ancora non so quale server scegliere +* [httpd](https://man.openbsd.org/OpenBSD-current/man8/httpd.8): sembra semplice e minimale, oltretutto non uso molte delle funzioni avanzate di nginx. +* [Asterisk](https://www.asterisk.org): quando si lavora con sistemi come [3CX](https://www.3cx.com) e [FreePBX](https://www.freepbx.org) all'inizio sembrano brutti, non rifiniti e non si ha idea di cosa stia succedendo. Quando li si comprende, si iniziano ad apprezzare soluzioni come queste, soprattutto in un ambiente aziendale. Ho intenzione di avere un'installazione Asterisk pura per uso personale, ma anche [Opensips](https://opensips.org) è davvero interessante. + +Quando proverò tutto questo? Non ne ho idea. + + +## Cose che cercherò di fare da solo! + +Nella tecnologia, come in molte altre cose della vita, le lamentele sembrano positive all'inizio, ma poi ti rendi conto che non stai facendo del male a nessuno se non a te stesso non seguendo la soluzione che desideri. + +Quindi, dato che ho un rapporto di amore/odio con alcuni programmi, cercherò di creare da solo un'alternativa. Forse all'inizio faranno schifo, ma è l'unico modo. + +* un'alternativa a [Postman](https://www.postman.com): come è possibile che non ci sia una singola applicazione FOSS che sostituisca Postman **SENZA** un servizio basato su abbonamento/accesso al cloud? +So che ci sono applicazioni in cui questa opzione non è *obbligatoria*, ma io non la voglio affatto. +Per ora sto usando [Firecamp](https://firecamp.io) e ho provato [Insomnia](https://insomnia.rest), almeno sono Open Source, ma sono ancora sub-ottimali +* un'alternativa [Dbeaver](https://dbeaver.io): Voglio dire, va bene, ma vorrei qualcosa di più elegante e non scritto in Java, dato che ho avuto molte rotture con le librerie jre e jdk. + +Questo non è per demonizzare alcun progetto, è solo un ottimo esercizio per imparare e capire la tecnologia. Naturalmente pubblichero' tutto questo software sul mio [git](https://cgit.lorenzocesana.xyz). + + +## Tecnologia che non riesco a sopportare +* Software proprietario o software non libero in generale. +* [Electron](https://electronjs.org). Lo odio con passione. Non usarlo. Non usare applicazioni scritte in Electron. Per favore, non farlo. È davvero pessimo. +* Le nuove e luccicanti cose che non ti servono. Cerco di comprare usato o meglio ancora di non comprare e di usare quello che ho già. +* Non credo che gli smartphone siano intrinsecamente cattivi, ma molto spesso *rendono cattiva la persona che li usa*. Uccidono completamente le occasioni sociali in molte situazioni. +* Le società di VPN e tutto il loro falso marketing. Sono letteralmente una truffa. Maggiori informazioni su questo argomento in futuro. + +{{< rawhtml >}} +<br> +<br> +<br> +{{< /rawhtml >}} + + +Come già detto, questa è una pagina in continua espansione e le cose possono cambiare/aggiornarsi. Approfondirò alcuni punti in post dedicati. +Inoltre, se hai suggerimenti o domande, contattatami! diff --git a/hugo.toml b/hugo.toml @@ -0,0 +1,35 @@ +baseURL = "https://lorenzocesana.xyz/" +title = "Lorenzo Cesana's Website" + +[Params] + email = "lorenzo@lorenzocesana.xyz" + +defaultContentLanguage = 'en' +defaultContentLanguageInSubdir = true + +relatedtext = "Related" +favicon = "/favicon.ico" + +datesinlist = true +authorsinlist = true + +nextprev = true +taglist = true +showrss = true + +[languages] + [languages.en] + contentDir = 'content/en' + disabled = false + languageCode = 'en-US' + languageDirection = 'ltr' + languageName = "English" + weight = 1 + + [languages.it] + contentDir = 'content/it' + disabled = false + languageCode = 'it-IT' + languageDirection = 'ltr' + languageName = "Italian" + weight = 2 diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html @@ -0,0 +1,56 @@ +<!DOCTYPE html> +<html lang="{{ .Site.Language }}"> + <head> + <title>{{ if not .IsHome }}{{ .Title | title }} | {{ end }}{{ .Site.Title }}</title> + <link rel="canonical" href="{{ .Site.BaseURL }}"> + <link rel='alternate' type='application/rss+xml' title="{{ .Site.Title }} RSS" href='/index.xml'> + <link rel='stylesheet' type='text/css' href='/style.css'> + {{ with .Site.Params.favicon }}<link rel="icon" href="{{ . }}"> + {{ end -}} + <meta name="description" content="{{ with .Params.description }}{{ . }}{{ else }}{{ .Summary }}{{ end }}"> + {{ if isset .Params "tags" }}<meta name="keywords" content="{{ with .Params.tags }}{{ delimit . ", " }}{{ end }}"> + {{ end -}} + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="robots" content="index, follow"> + <meta charset="utf-8"> +</head> +<body> +{{ if .Site.Menus.main }}{{ partial "nav.html" . }}{{ end -}} +<main> +<header><h1 id="tag_{{ .Title }}">{{ block "title" . }}{{ end }}</h1></header> +<article> +{{ block "main" . }} +{{ .Content }} +{{ end }} +{{ if .Param "nextprev" }}{{ partial "nextprev.html" . -}}{{ end -}} + +{{ if eq .Site.Language.Lang "en" }} + {{ if .Param "taglist" }}{{ partial "taglist_en.html" . }}{{ end -}} +{{ end }} +{{ if eq .Site.Language.Lang "it" }} + {{ if .Param "taglist" }}{{ partial "taglist_it.html" . }}{{ end -}} +{{ end }} +</article> +</main> +<br> +<br> +<br> +{{ block "footer" . }} +<footer> + <p>My contacts:</p> + <a href = "mailto: lorenzo@lorenzocesana.xyz" class=inline>Email</a><a href = "/LorenzoCesana-public.gpg" class=inline>GPG Key</a><a href = "https://matrix.to/#/@lc:matrix.lorenzocesana.xyz" class=inline>Matrix</a> + <br> + <br> + {{ if eq .Site.Language.Lang "en" }} + <a href="{{ .Site.BaseURL }}">{{ .Site.BaseURL }}</a> + {{- if .Param "showrss" }}<br><br><a href="/index.xml"><img src="/rss.svg" style="max-height:1.5em" alt="RSS Feed" title="Subscribe via RSS for updates."></a>{{ end }} + {{ end }} + + {{ if eq .Site.Language.Lang "it" }} + <a href="https://lorenzocesana.xyz/it">https://lorenzocesana.xyz/it</a> + {{- if .Param "showrss" }}<br><br><a href="/it/index.xml"><img src="/rss.svg" style="max-height:1.5em" alt="RSS Feed" title="Subscribe via RSS for updates."></a>{{ end }} + {{ end }} +</footer> +{{ end }} +</body> +</html> diff --git a/layouts/_default/baseof.html.old b/layouts/_default/baseof.html.old @@ -0,0 +1,57 @@ +<!DOCTYPE html> +<html lang="{{ .Site.Language }}"> + <head> + <title>{{ if not .IsHome }}{{ .Title | title }} | {{ end }}{{ .Site.Title }}</title> + <link rel="canonical" href="{{ .Site.BaseURL }}"> + <link rel='alternate' type='application/rss+xml' title="{{ .Site.Title }} RSS" href='/index.xml'> + <link rel='stylesheet' type='text/css' href='/style.css'> + {{ with .Site.Params.favicon }}<link rel="icon" href="{{ . }}"> + {{ end -}} + <meta name="description" content="{{ with .Params.description }}{{ . }}{{ else }}{{ .Summary }}{{ end }}"> + {{ if isset .Params "tags" }}<meta name="keywords" content="{{ with .Params.tags }}{{ delimit . ", " }}{{ end }}"> + {{ end -}} + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="robots" content="index, follow"> + <meta charset="utf-8"> +</head> +<body> +{{ if .Site.Menus.main }}{{ partial "nav.html" . }}{{ end -}} +<main> +<header><h1 id="tag_{{ .Title }}">{{ block "title" . }}{{ end }}</h1></header> +<article> +{{ block "main" . }} +{{ .Content }} +{{ end }} +{{ if .Param "nextprev" }}{{ partial "nextprev.html" . -}}{{ end -}} + +{{ if eq .Site.Language.Lang "en" }} + {{ if .Param "taglist" }}{{ partial "taglist_en.html" . }}{{ end -}} +{{ end }} + +{{ if eq .Site.Language.Lang "it" }} + {{ if .Param "taglist" }}{{ partial "taglist_it.html" . }}{{ end -}} +{{ end }} +</article> +</main> +<br> +<br> +<br> +{{ block "footer" . }} +<footer> + <p>My contacts:</p> + <a href = "mailto: lorenzo@lorenzocesana.xyz" class=inline>Email</a><a href = "/LorenzoCesana-public.gpg" class=inline>GPG Key</a><a href = "https://matrix.to/#/@lc:matrix.lorenzocesana.xyz" class=inline>Matrix</a> + <br> + <br> + {{ if eq .Site.Language.Lang "en" }} + <a href="{{ .Site.BaseURL }}">{{ .Site.BaseURL }}</a> + {{- if .Param "showrss" }}<br><br><a href="/index.xml"><img src="/rss.svg" style="max-height:1.5em" alt="RSS Feed" title="Subscribe via RSS for updates."></a>{{ end }} + {{ end }} + + {{ if eq .Site.Language.Lang "it" }} + <a href="https://lorenzocesana.xyz/it">https://lorenzocesana.xyz/it</a> + {{- if .Param "showrss" }}<br><br><a href="/it/index.xml"><img src="/rss.svg" style="max-height:1.5em" alt="RSS Feed" title="Subscribe via RSS for updates."></a>{{ end }} + {{ end }} +</footer> +{{ end }} +</body> +</html> diff --git a/layouts/_default/list.html b/layouts/_default/list.html @@ -0,0 +1,17 @@ +{{ define "title" -}} +{{ .Title | title }} +{{- end }} +{{ define "main" -}} +{{ .Content }} +{{ $url := trim .Page.RelPermalink "/" }} +<ul> +{{- range.Pages }} +{{ if not (and $.IsHome (eq .Name "About me")) }} +<li> + {{- if .Param "datesinlist" }}<time datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}">{{ .Date.Format "2006 Jan 02" }}</time> &ndash; {{ end -}} + <a href="{{ .RelPermalink }}">{{ .Title }}</a> +</li> +{{ end }} +{{- end }} +</ul> +{{- end }} diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml @@ -0,0 +1,26 @@ +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>{{ .Site.Title }}</title> + <link>{{ .Permalink }}</link> + <description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description> + <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }} + <language>{{.}}</language>{{end}}{{ with .Site.Author.email }} + <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }} + <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }} + <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }} + <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }} + {{ with .OutputFormats.Get "RSS" }} + {{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }} + {{ end }} + {{ range .Site.RegularPages }} + <item> + <title>{{ .Title }}</title> + <link>{{ .Permalink }}</link> + <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate> + {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}} + <guid>{{ .Permalink }}</guid> + <description>{{- .Content | html -}}</description> + </item> + {{ end }} + </channel> +</rss> diff --git a/layouts/_default/single.html b/layouts/_default/single.html @@ -0,0 +1,3 @@ +{{ define "title" -}} +{{ .Title }} +{{- end }} diff --git a/layouts/partials/nav.html b/layouts/partials/nav.html @@ -0,0 +1,8 @@ +<nav> + <ul> + {{- $sec := .Page.Section }}{{ $file := .File.TranslationBaseName -}} + {{ range.Site.Menus.main.ByWeight}}{{ $base := path.Base .URL }} + <li><a {{ if or ( eq $sec $base ) ( eq $file $base ) ( and (eq $sec "") ( eq $file "_index") (eq $base "/") ) }}class="menuactive" {{ end }}href="{{ .URL }}"><span class=pre>{{ .Pre }}</span><span class=menuname>{{ .Name }}</span></a></li> + {{- end }} + </ul> +</nav> diff --git a/layouts/partials/nextprev.html b/layouts/partials/nextprev.html @@ -0,0 +1,10 @@ +{{ if or .Next .Prev -}} +<div id="nextprev"> +{{- with .Prev }} +<a href="{{ .RelPermalink}}"><div id="prevart">Previous:<br>{{.Title}}</div></a> +{{ end -}} +{{- with .Next -}} +<a href="{{ .RelPermalink}}"><div id="nextart">Next:<br>{{.Title}}</div></a> +{{ end -}} +</div> +{{ end -}} diff --git a/layouts/partials/taglist_en.html b/layouts/partials/taglist_en.html @@ -0,0 +1,13 @@ + {{- if isset .Params "tags" -}} + {{- $tagsLen := len .Params.tags -}} + {{- if gt $tagsLen 0 -}} + <div style="clear:both" class=taglist> + {{- with .Site.Params.relatedtext }}{{ . }}<br>{{ end -}} + {{- range $k, $v := .Params.tags -}} + {{- $url := printf "tags/%s" (. | urlize | lower) -}} + <a id="tag_{{ . | lower }}" href="{{ $url | absURL }}">{{ . | title }}</a> + {{- if lt $k (sub $tagsLen 1) }} &middot; {{ end -}} + {{- end -}} + </div> + {{- end -}} + {{- end }} diff --git a/layouts/partials/taglist_it.html b/layouts/partials/taglist_it.html @@ -0,0 +1,13 @@ + {{- if isset .Params "tags" -}} + {{- $tagsLen := len .Params.tags -}} + {{- if gt $tagsLen 0 -}} + <div style="clear:both" class=taglist> + {{- with .Site.Params.relatedtext }}{{ . }}<br>{{ end -}} + {{- range $k, $v := .Params.tags -}} + {{- $url := printf "tags/%s" (. | urlize | lower) -}} + <a id="tag_{{ . | lower }}" href="https://lorenzocesana.xyz/it/tags">{{ . | title }}</a> + {{- if lt $k (sub $tagsLen 1) }} &middot; {{ end -}} + {{- end -}} + </div> + {{- end -}} + {{- end }} diff --git a/layouts/shortcodes/hidvid.html b/layouts/shortcodes/hidvid.html @@ -0,0 +1,10 @@ +<details> + <summary>Click to reveal video.</summary> +<iframe src="{{ index .Params 0 }}" + loading="lazy" + sandbox="allow-same-origin allow-scripts allow-popups" + allowfullscreen frameborder="0" + class="embvid" + title="Embedded Video"> +</iframe> +</details> diff --git a/layouts/shortcodes/img.html b/layouts/shortcodes/img.html @@ -0,0 +1,22 @@ +<!-- + class: class of the figure + link: url the image directs to + alt: alternative text + caption: caption + mouse: what the image says when moused over ("title" in HTML) +--> +<figure {{ with .Get "class" }}class="{{.}}"{{ end -}}> + {{- with .Get "link"}}<a href="{{.}}">{{ end -}} + <img src="{{ .Get "src" }}" + {{- with .Get "mouse" }} title="{{.}}"{{ end -}} + {{- with .Get "alt" }} alt="{{.}}"{{ end -}} + {{- with .Get "width" }} width="{{.}}"{{ end -}} + {{- with .Get "height" }} height="{{.}}"{{ end -}} + > + {{- if .Get "link"}}</a>{{ end -}} + {{- with .Get "caption" -}} + <figcaption> + {{- . -}} + </figcaption> + {{- end -}} +</figure> diff --git a/layouts/shortcodes/rawhtml.html b/layouts/shortcodes/rawhtml.html @@ -0,0 +1,2 @@ +<!-- rawhtml --> +{{.Inner}} diff --git a/layouts/shortcodes/tagcloud.html b/layouts/shortcodes/tagcloud.html @@ -0,0 +1,3 @@ +{{ if isset .Site.Taxonomies "tags" }}{{ if not (eq (len .Site.Taxonomies.tags) 0) }} <ul id="tagcloud"> + {{ range $name, $items := .Site.Taxonomies.tags }}{{ $url := printf "%s/%s" "tags" ($name | urlize | lower)}}<li><a href="{{ $url | absURL }}" id="tag_{{ $name }}">{{ $name | title }}</a></li> + {{ end }}</ul>{{ end }}{{ end }} diff --git a/layouts/shortcodes/vid.html b/layouts/shortcodes/vid.html @@ -0,0 +1,6 @@ +<iframe src="{{ index .Params 0 }}" + loading="lazy" + sandbox="allow-same-origin allow-scripts allow-popups" + allowfullscreen frameborder="0" + title="Embedded Video"> +</iframe> diff --git a/static/Libreboot-X220/libreboot0.webp b/static/Libreboot-X220/libreboot0.webp Binary files differ. diff --git a/static/Libreboot-X220/libreboot1.webp b/static/Libreboot-X220/libreboot1.webp Binary files differ. diff --git a/static/Libreboot-X220/libreboot2.webp b/static/Libreboot-X220/libreboot2.webp Binary files differ. diff --git a/static/Libreboot-X220/libreboot3.webp b/static/Libreboot-X220/libreboot3.webp Binary files differ. diff --git a/static/Libreboot-X220/schema1.webp b/static/Libreboot-X220/schema1.webp Binary files differ. diff --git a/static/Libreboot-X220/schema2.webp b/static/Libreboot-X220/schema2.webp Binary files differ. diff --git a/static/LorenzoCesana-public.gpg b/static/LorenzoCesana-public.gpg Binary files differ. diff --git a/static/rss-bridge.webp b/static/rss-bridge.webp Binary files differ. diff --git a/static/rss.svg b/static/rss.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 455.731 455.731" style="enable-background:new 0 0 455.731 455.731;" xml:space="preserve"><g><rect x="0" y="0" style="fill:#F78422;" width="455.731" height="455.731"/><g><path style="fill:#FFFFFF;" d="M296.208,159.16C234.445,97.397,152.266,63.382,64.81,63.382v64.348 c70.268,0,136.288,27.321,185.898,76.931c49.609,49.61,76.931,115.63,76.931,185.898h64.348 C391.986,303.103,357.971,220.923,296.208,159.16z"/><path style="fill:#FFFFFF;" d="M64.143,172.273v64.348c84.881,0,153.938,69.056,153.938,153.939h64.348 C282.429,270.196,184.507,172.273,64.143,172.273z"/><circle style="fill:#FFFFFF;" cx="109.833" cy="346.26" r="46.088"/></g></g></svg> diff --git a/static/searx.webp b/static/searx.webp Binary files differ. diff --git a/static/style.css b/static/style.css @@ -0,0 +1,120 @@ +body { + font-family: monospace ; + background: #232b2b ; + color: #f0f0f0 ; + text-align: left ; + justify-content: center ; + font-size: 13pt ; + text-align: justify ; +} + +main { + max-width: 900px ; + margin: auto ; +} + +img { + max-width: 100% ; + display: block; + margin-left: auto; + margin-right: auto; +} + +h1 { + font-family: sans-serif; + text-align: center ; + color: darkgoldenrod ; + font-size : 45pt ; +} + +h2 { + font-family: sans-serif; + text-align: left ; + margin: auto ; + border-top: dashed #ddd 2px ; + font-size: 24pt ; + margin: 1em auto ; + color: limegreen ; + padding-top: 10px ; +} + +h3 { + text-align: center ; + margin: auto ; + margin: 1em auto ; + color: white ; + padding-top: 25px ; +} + +li { + text-align: left ; +} + +a:link { + #color: #008000; + color: cyan ; +} + +a:visited { + color: #ff471a; +} + +a:hover { + color: #ffcccc; +} + +a:active { + color: #008080; +} + +code { + color: green ; + font-family: monospace ; + margin: auto ; + padding: 3px ; +} + +blockquote { + font-size: 11pt ; + width: 800px ; + margin: 1.5em 10px ; + border: ridge black ; + border-width: 2px ; + padding: 0.5em 10px ; +} + +footer { + text-align: center ; + clear: both ; +} + +.left { + float: left ; +} + +.inline { + display: inline-block ; + padding-right: 25px ; +} + +/* For TAGLIST.HTML */ +.taglist { + text-align: center ; + clear: both ; +} + +/* For NEXTPREV.HTML */ +#nextprev { + /* The container for both the previous and next articles. */ +} +#prevart { + float: left ; + text-align: left ; +} +#nextart { + float: right ; + text-align: right ; +} +#nextart,#prevart { + max-width: 33% ; +}