From 91ae8c89f8354b6d1a4af064063d0abf4ae851c2 Mon Sep 17 00:00:00 2001 From: counterweight Date: Tue, 22 Jul 2025 14:06:35 +0000 Subject: [PATCH 01/21] Add public/keybase.txt --- public/keybase.txt | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 public/keybase.txt diff --git a/public/keybase.txt b/public/keybase.txt new file mode 100644 index 0000000..0d3405f --- /dev/null +++ b/public/keybase.txt @@ -0,0 +1,56 @@ +================================================================== +https://keybase.io/pablomartincalvo +-------------------------------------------------------------------- + +I hereby claim: + + * I am an admin of https://pablohere.contrapeso.xyz + * I am pablomartincalvo (https://keybase.io/pablomartincalvo) on keybase. + * I have a public key ASDgHxztDlU_R4hjxbkO21-rS4Iv1gABa3BPb_Aff7aNAgo + +To do so, I am signing this object: + +{ + "body": { + "key": { + "eldest_kid": "0120d9bde13d9012e681cef2edd668d70426f1f6ef69ce7dfae20b404096eca5b06f0a", + "host": "keybase.io", + "kid": "0120e01f1ced0e553f478863c5b90edb5fab4b822fd600016b704f6ff01f7fb68d020a", + "uid": "8e71277fbc0fb1fea28d60308f495d19", + "username": "pablomartincalvo" + }, + "merkle_root": { + "ctime": 1753193114, + "hash": "30476b9dd587e65241454c447b71ef3f393f88b579350bd89bf5b9e443e6ba4d8ba99216710c622429c4fea48f95001effd4b4d8ec33decf6a7591c98f114460", + "hash_meta": "cdcde70dfa48dad33277cf144e2a9dc0c55916d315685b913efc887b7c51247e", + "seqno": 26961345 + }, + "service": { + "entropy": "+5f0nk/+mBs8GItHh7xtyv3J", + "hostname": "pablohere.contrapeso.xyz", + "protocol": "https:" + }, + "type": "web_service_binding", + "version": 2 + }, + "client": { + "name": "keybase.io go client", + "version": "6.5.1" + }, + "ctime": 1753193129, + "expire_in": 504576000, + "prev": "17f8a85c13ee480621129b8e320fe83d45bfcfea7d5f956bf1adbf5def17d39b", + "seqno": 25, + "tag": "signature" +} + +which yields the signature: + +hKRib2R5hqhkZXRhY2hlZMOpaGFzaF90eXBlCqNrZXnEIwEg4B8c7Q5VP0eIY8W5Dttfq0uCL9YAAWtwT2/wH3+2jQIKp3BheWxvYWTESpcCGcQgF/ioXBPuSAYhEpuOMg/oPUW/z+p9X5Vr8a2/Xe8X05vEIDSxwrsQKywdTQC4/Z9ff1hsg9jf+HPjtzdFmUX6h/8oAgHCo3NpZ8RAwcxkmlMFZ2cJ4T638SWLTUnlWhDrJgDn18SM+CvvYOo60INaUdD/ou5jX62LIN7OOqQfdw5MoYEQTgMt5zGJD6hzaWdfdHlwZSCkaGFzaIKkdHlwZQildmFsdWXEIKg7r57boivDmPxyU3ai8XN+JeIf6Ct2Kz+LjJt7VPvVo3RhZ80CAqd2ZXJzaW9uAQ== + +And finally, I am proving ownership of this host by posting or +appending to this document. + +View my publicly-auditable identity here: https://keybase.io/pablomartincalvo + +================================================================== \ No newline at end of file From c4fab04e88f48f7fe8f487d22ac0e5189ac9b8c2 Mon Sep 17 00:00:00 2001 From: counterweight Date: Mon, 18 Aug 2025 08:36:35 +0200 Subject: [PATCH 02/21] start taxes --- public/writings/taxes.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 public/writings/taxes.md diff --git a/public/writings/taxes.md b/public/writings/taxes.md new file mode 100644 index 0000000..b8fa2c3 --- /dev/null +++ b/public/writings/taxes.md @@ -0,0 +1,10 @@ +I hate taxes deeply. I feel through the rabbit hole of libertarian and anarcocapitalist ideas some years ago, and taxes have been repulsive to me ever since. I go to great lengths to not pay them, and feel deeply hurt everytime they sting my wallet. + +I know life goes by fast, and what once was vivid in your memory fades away bit by bit until it's gone. I'm truly hoping that, some day in the future, the world will have changed to the better and young people won't be paying as much taxes as we're doing today in the West. Since in that bright, utopical future I'm dreaming of I might have forgotten about how bad things were in 2025, I've decided to make a little entry here making an estimate on how many taxes I'm bleeding on a yearly basis right now. So that we can someday look back in time and wonder: "how the fuck did we tolerate that pillaging". + +## Inventory + +Before going into the number, let's make a list of all the taxes I'm currently facing. + +- Income Tax: for the sin of making money, the state takes some. +- Social Security: in Spain, you're forcefully enrolled in a pension system designed as a ponzi scheme (not ponzi-like: it's actually a ponzi scheme), with no way to opt out. From 12dc73abe30b04fd3425069e9fc8f290111a08e3 Mon Sep 17 00:00:00 2001 From: counterweight Date: Mon, 18 Aug 2025 23:20:43 +0200 Subject: [PATCH 03/21] things --- nodesource_setup.sh | 113 +++++++++++ public/index.html | 4 + ...r-the-future-the-tax-bleeding-in-2025.html | 188 ++++++++++++++++++ public/writings/taxes.md | 10 - 4 files changed, 305 insertions(+), 10 deletions(-) create mode 100644 nodesource_setup.sh create mode 100644 public/writings/a-note-for-the-future-the-tax-bleeding-in-2025.html delete mode 100644 public/writings/taxes.md diff --git a/nodesource_setup.sh b/nodesource_setup.sh new file mode 100644 index 0000000..82155c8 --- /dev/null +++ b/nodesource_setup.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +# Logger Function +log() { + local message="$1" + local type="$2" + local timestamp=$(date '+%Y-%m-%d %H:%M:%S') + local color + local endcolor="\033[0m" + + case "$type" in + "info") color="\033[38;5;79m" ;; + "success") color="\033[1;32m" ;; + "error") color="\033[1;31m" ;; + *) color="\033[1;34m" ;; + esac + + echo -e "${color}${timestamp} - ${message}${endcolor}" +} + +# Error handler function +handle_error() { + local exit_code=$1 + local error_message="$2" + log "Error: $error_message (Exit Code: $exit_code)" "error" + exit $exit_code +} + +# Function to check for command availability +command_exists() { + command -v "$1" &> /dev/null +} + +check_os() { + if ! [ -f "/etc/debian_version" ]; then + echo "Error: This script is only supported on Debian-based systems." + exit 1 + fi +} + +# Function to Install the script pre-requisites +install_pre_reqs() { + log "Installing pre-requisites" "info" + + # Run 'apt-get update' + if ! apt-get update -y; then + handle_error "$?" "Failed to run 'apt-get update'" + fi + + # Run 'apt-get install' + if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then + handle_error "$?" "Failed to install packages" + fi + + if ! mkdir -p /usr/share/keyrings; then + handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo" + fi + + rm -f /usr/share/keyrings/nodesource.gpg || true + rm -f /etc/apt/sources.list.d/nodesource.list || true + + # Run 'curl' and 'gpg' to download and import the NodeSource signing key + if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then + handle_error "$?" "Failed to download and import the NodeSource signing key" + fi + + # Explicitly set the permissions to ensure the file is readable by all + if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then + handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg" + fi +} + +# Function to configure the Repo +configure_repo() { + local node_version=$1 + + arch=$(dpkg --print-architecture) + if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then + handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported." + fi + + echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null + + # N|solid Config + echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null + echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null + echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null + + # Nodejs Config + echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null + echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null + echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null + + # Run 'apt-get update' + if ! apt-get update -y; then + handle_error "$?" "Failed to run 'apt-get update'" + else + log "Repository configured successfully." + log "To install Node.js, run: apt-get install nodejs -y" "info" + log "You can use N|solid Runtime as a node.js alternative" "info" + log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" + fi +} + +# Define Node.js version +NODE_VERSION="22.x" + +# Check OS +check_os + +# Main execution +install_pre_reqs || handle_error $? "Failed installing pre-requisites" +configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository" diff --git a/public/index.html b/public/index.html index abfdcd4..1097fe2 100644 --- a/public/index.html +++ b/public/index.html @@ -142,6 +142,10 @@

Writings

Sometimes I like to jot down ideas and drop them here.

    +
  • + A note for the future: the tax bleeding in 2025 +
  • Notes and lessons from my departure from Superhog diff --git a/public/writings/a-note-for-the-future-the-tax-bleeding-in-2025.html b/public/writings/a-note-for-the-future-the-tax-bleeding-in-2025.html new file mode 100644 index 0000000..abefd1d --- /dev/null +++ b/public/writings/a-note-for-the-future-the-tax-bleeding-in-2025.html @@ -0,0 +1,188 @@ + + + + Pablo here + + + + + + +
    +

    Hi, Pablo here

    +

    back to home

    +
    +
    +

    A note for the future: the tax bleeding in 2025

    +

    + I hate taxes deeply. I fell through the rabbit hole of libertarian and + anarcocapitalist ideas some years ago, and taxes have been repulsive + to me ever since. I go to great lengths to not pay them, and feel + deeply hurt everytime they sting my wallet against my will. +

    +

    + I know life goes by fast, and what today is vivid in your memory fades + away bit by bit until it's gone. I'm truly hoping that, some day in + the future, the world will have changed to the better and people won't + be paying as much tax as we're doing today in the West. Since in that + bright, utopical future I'm dreaming of I might have forgotten about + how bad things were on this matter in 2025, I've decided to make a + little entry here making an estimate on how many taxes I'm + theoretically bleeding on a yearly basis right now. So that we can + someday look back in time and wonder: "how the fuck did we tolerate + that pillaging". +

    +

    Inventory

    +

    + Before going hard into the number crunching let's list all the tax + items I'm aware of being subject to: +

    +
      +
    • + Income Tax: for the sin of making money, the state takes a hefty + bite of my salary. +
    • +
    • + Social Security: the state runs a forceful Social Security + programme. If you work, it is illegal to not pay for it. It is + specially unnerving since it is quite literally a ponzi scheme. At + least Madoff lured you into it with pretty words, not violence. +
    • +
    • + VAT Tax: for the sin of buying stuff, the state takes another hefty + bite. +
    • +
    • + Real State Tax: for the sin of owning an apartment, the state + charges me rent. Do I own it actually? +
    • +
    • + Vehicle Tax: for the sin of owning a motorcycle, the state charges + me a yearly fee. +
    • +
    • + Wealth Transfer Tax: when you buy real state, you must pay 10% of + its value in taxes. This is a one off fee if you only buy one house + in your lifetime, but it is such a slap on the face that it would be + dishonest to not consider it. +
    • +
    • + Inheritance tax: you thought you were going to keep daddy's loot all + for yourself? When you inherit, you'll go through the register + again. Like the wealth transfer tax, is not a frequent one, but it's + big so let's consider it. +
    • +
    +

    + There may be some other small, less frequent taxes that I'm not + considering. These are the ones that will hit most people in my + country. +

    +

    The numbers

    +

    + Okay, let's go compute the hideous bill. I'll make a hypothetical + profile that's roughly close to mine, with a few assumptions along the + way. +

    +
      +
    • + Salary: online sources say the typical salary for my job + position in my area is 70k€ yearly. Including the Social Security + paid by the company, the sum rises to ~85K€. I consider this way of + measuring honest, since I think that all the money paid out by the + employer reflects what's the true salary and value of the employee. + I read it as, "the company is willing to pay 85K€ for this. What + ends up in the employees pocket, and what in the State's, they don't + mind". +
    • +
    • Expenses: I'll assume I spend half of my salary.
    • +
    • + Home Purchase: I'll assume that, during my adult life, I + would buy once the average home in my town. From what I could find + online, that's somewhere around 500K€. +
    • +
    • + Vehicles: I own a motorcycle and share the expenses of a + car with my partner, so I'll count 1.5 vehicles. +
    • +
    • + Inheritance tax: I found a figure stating the average + windfall in my country is 250K€. We'll go with that. +
    • +
    +

    With those clear, let's see the actual figures:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Tax€/year
    Income Tax (IRPF)22,401 €
    Social Security (worker + employer) + 25,375 € + (worker 4,445 € + employer 20,930 €) +
    VAT (blended basket)5,250 €
    Real Estate Tax (IBI)1,000 €
    Vehicle Tax (1.5 vehicles)225 €
    Wealth Transfer (10% home, spread 50y)1,000 €
    Inheritance (7% of 250k, spread 50y)350 €
    Total55,602 €
    +

    + So there you go. A peaceful existence as a tech professional living a + normal life leads to bleeding at least 55K€ per year, all while + getting an 85K€ salary. The tax rate sits at a wonderful 64%. How far + away is this from hardcore USSR-grade communism? +

    +

    + And this is generous, since I didn't model (1) what gets stolen + through inflation diluting savings and (2) any capital gains that this + profile might end up paying for whatever investments he is doing with + his savings. +

    +

    + Then you'll see mainstream media puppets discussing why young people + don't have children. As if it was some kind of mistery. They're being + robbed their children's bread left and right, while getting hypnotized + into believing that protecting themselves against this outrageous + robbery is somehow morally despicable. +

    +

    Motherfuckers.

    +
    +

    back to home

    +
    +
    + + diff --git a/public/writings/taxes.md b/public/writings/taxes.md deleted file mode 100644 index b8fa2c3..0000000 --- a/public/writings/taxes.md +++ /dev/null @@ -1,10 +0,0 @@ -I hate taxes deeply. I feel through the rabbit hole of libertarian and anarcocapitalist ideas some years ago, and taxes have been repulsive to me ever since. I go to great lengths to not pay them, and feel deeply hurt everytime they sting my wallet. - -I know life goes by fast, and what once was vivid in your memory fades away bit by bit until it's gone. I'm truly hoping that, some day in the future, the world will have changed to the better and young people won't be paying as much taxes as we're doing today in the West. Since in that bright, utopical future I'm dreaming of I might have forgotten about how bad things were in 2025, I've decided to make a little entry here making an estimate on how many taxes I'm bleeding on a yearly basis right now. So that we can someday look back in time and wonder: "how the fuck did we tolerate that pillaging". - -## Inventory - -Before going into the number, let's make a list of all the taxes I'm currently facing. - -- Income Tax: for the sin of making money, the state takes some. -- Social Security: in Spain, you're forcefully enrolled in a pension system designed as a ponzi scheme (not ponzi-like: it's actually a ponzi scheme), with no way to opt out. From f2968ca002a4b4da24e3e05b64cea4e19b99d2b0 Mon Sep 17 00:00:00 2001 From: counterweight Date: Mon, 18 Aug 2025 23:20:58 +0200 Subject: [PATCH 04/21] remove --- nodesource_setup.sh | 113 -------------------------------------------- 1 file changed, 113 deletions(-) delete mode 100644 nodesource_setup.sh diff --git a/nodesource_setup.sh b/nodesource_setup.sh deleted file mode 100644 index 82155c8..0000000 --- a/nodesource_setup.sh +++ /dev/null @@ -1,113 +0,0 @@ -#!/bin/bash - -# Logger Function -log() { - local message="$1" - local type="$2" - local timestamp=$(date '+%Y-%m-%d %H:%M:%S') - local color - local endcolor="\033[0m" - - case "$type" in - "info") color="\033[38;5;79m" ;; - "success") color="\033[1;32m" ;; - "error") color="\033[1;31m" ;; - *) color="\033[1;34m" ;; - esac - - echo -e "${color}${timestamp} - ${message}${endcolor}" -} - -# Error handler function -handle_error() { - local exit_code=$1 - local error_message="$2" - log "Error: $error_message (Exit Code: $exit_code)" "error" - exit $exit_code -} - -# Function to check for command availability -command_exists() { - command -v "$1" &> /dev/null -} - -check_os() { - if ! [ -f "/etc/debian_version" ]; then - echo "Error: This script is only supported on Debian-based systems." - exit 1 - fi -} - -# Function to Install the script pre-requisites -install_pre_reqs() { - log "Installing pre-requisites" "info" - - # Run 'apt-get update' - if ! apt-get update -y; then - handle_error "$?" "Failed to run 'apt-get update'" - fi - - # Run 'apt-get install' - if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then - handle_error "$?" "Failed to install packages" - fi - - if ! mkdir -p /usr/share/keyrings; then - handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo" - fi - - rm -f /usr/share/keyrings/nodesource.gpg || true - rm -f /etc/apt/sources.list.d/nodesource.list || true - - # Run 'curl' and 'gpg' to download and import the NodeSource signing key - if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then - handle_error "$?" "Failed to download and import the NodeSource signing key" - fi - - # Explicitly set the permissions to ensure the file is readable by all - if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then - handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg" - fi -} - -# Function to configure the Repo -configure_repo() { - local node_version=$1 - - arch=$(dpkg --print-architecture) - if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then - handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported." - fi - - echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null - - # N|solid Config - echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null - echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null - echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null - - # Nodejs Config - echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null - echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null - echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null - - # Run 'apt-get update' - if ! apt-get update -y; then - handle_error "$?" "Failed to run 'apt-get update'" - else - log "Repository configured successfully." - log "To install Node.js, run: apt-get install nodejs -y" "info" - log "You can use N|solid Runtime as a node.js alternative" "info" - log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" - fi -} - -# Define Node.js version -NODE_VERSION="22.x" - -# Check OS -check_os - -# Main execution -install_pre_reqs || handle_error $? "Failed installing pre-requisites" -configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository" From 810708960ed7d24193db5638d1ffaee173025e41 Mon Sep 17 00:00:00 2001 From: counterweight Date: Mon, 18 Aug 2025 23:33:12 +0200 Subject: [PATCH 05/21] add keybase --- public/index.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/index.html b/public/index.html index 1097fe2..3122866 100644 --- a/public/index.html +++ b/public/index.html @@ -75,11 +75,11 @@

  • - On Nostr. My npub is: - npub1a29gdc6p7c05az2ka3qwwpl9kfcqmws3xlwmjefmtkulfhgd7u6shuqatg + On keybase: https://keybase.io/pablomartincalvo.
  • -

    At this stage I'm not open to other contacts.

    + On Nostr. My npub is: + npub1a29gdc6p7c05az2ka3qwwpl9kfcqmws3xlwmjefmtkulfhgd7u6shuqatg

From d954c592c0f79381a9e1fe97025c315a94a349e6 Mon Sep 17 00:00:00 2001 From: counterweight Date: Mon, 18 Aug 2025 23:34:29 +0200 Subject: [PATCH 06/21] bad tag --- public/index.html | 2 -- 1 file changed, 2 deletions(-) diff --git a/public/index.html b/public/index.html index 3122866..c7d4697 100644 --- a/public/index.html +++ b/public/index.html @@ -69,10 +69,8 @@

You can contact me on:

  • -

    On LinkedIn for professional matters. -

  • On keybase: https://keybase.io/pablomartincalvo. From c8c6a35ab886e7fc1c638f9416246406be5e7ef1 Mon Sep 17 00:00:00 2001 From: counterweight Date: Tue, 19 Aug 2025 22:25:11 +0200 Subject: [PATCH 07/21] update keybase proof --- public/keybase.txt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/public/keybase.txt b/public/keybase.txt index 0d3405f..43ffead 100644 --- a/public/keybase.txt +++ b/public/keybase.txt @@ -20,13 +20,13 @@ To do so, I am signing this object: "username": "pablomartincalvo" }, "merkle_root": { - "ctime": 1753193114, - "hash": "30476b9dd587e65241454c447b71ef3f393f88b579350bd89bf5b9e443e6ba4d8ba99216710c622429c4fea48f95001effd4b4d8ec33decf6a7591c98f114460", - "hash_meta": "cdcde70dfa48dad33277cf144e2a9dc0c55916d315685b913efc887b7c51247e", - "seqno": 26961345 + "ctime": 1755635067, + "hash": "4f91af0b9c674e0f1d74a7cfad7abd15a7065cded92b96ac8a6abeb5c8553318599aa1bf7b065a3312e303506256b729b8b60b3a5dd06b68694423f4341a6a14", + "hash_meta": "6472dbf2ed33341fb30b6a0c5c5c7fb39c219dd0ffd03c6e08b68c788e0de60a", + "seqno": 27031070 }, "service": { - "entropy": "+5f0nk/+mBs8GItHh7xtyv3J", + "entropy": "LEFJJ4FMmlJQWPPFEO4xHE5y", "hostname": "pablohere.contrapeso.xyz", "protocol": "https:" }, @@ -37,16 +37,16 @@ To do so, I am signing this object: "name": "keybase.io go client", "version": "6.5.1" }, - "ctime": 1753193129, + "ctime": 1755635082, "expire_in": 504576000, - "prev": "17f8a85c13ee480621129b8e320fe83d45bfcfea7d5f956bf1adbf5def17d39b", - "seqno": 25, + "prev": "37f12270050ab037897ccf6ef9451b1911cb505eca7c3842993b0b8925bc79b8", + "seqno": 31, "tag": "signature" } which yields the signature: -hKRib2R5hqhkZXRhY2hlZMOpaGFzaF90eXBlCqNrZXnEIwEg4B8c7Q5VP0eIY8W5Dttfq0uCL9YAAWtwT2/wH3+2jQIKp3BheWxvYWTESpcCGcQgF/ioXBPuSAYhEpuOMg/oPUW/z+p9X5Vr8a2/Xe8X05vEIDSxwrsQKywdTQC4/Z9ff1hsg9jf+HPjtzdFmUX6h/8oAgHCo3NpZ8RAwcxkmlMFZ2cJ4T638SWLTUnlWhDrJgDn18SM+CvvYOo60INaUdD/ou5jX62LIN7OOqQfdw5MoYEQTgMt5zGJD6hzaWdfdHlwZSCkaGFzaIKkdHlwZQildmFsdWXEIKg7r57boivDmPxyU3ai8XN+JeIf6Ct2Kz+LjJt7VPvVo3RhZ80CAqd2ZXJzaW9uAQ== +hKRib2R5hqhkZXRhY2hlZMOpaGFzaF90eXBlCqNrZXnEIwEg4B8c7Q5VP0eIY8W5Dttfq0uCL9YAAWtwT2/wH3+2jQIKp3BheWxvYWTESpcCH8QgN/EicAUKsDeJfM9u+UUbGRHLUF7KfDhCmTsLiSW8ebjEIAnIWTmufZ017e9WLdI1LhKBPaZ3HzmTrgyASDvY3PwoAgHCo3NpZ8RA9a3xgkSTU6Ht7M7DCsy4ClMmoWFtDEqzX9/dqskeoH2DrJUZYVymBQE1nyB0p1GuXiZA1cP5WY5SDURWZ5bBC6hzaWdfdHlwZSCkaGFzaIKkdHlwZQildmFsdWXEIEJZ4g4HC5qXcqbFf6sJ8XuZyMtoppazFqr1zPu0LH5co3RhZ80CAqd2ZXJzaW9uAQ== And finally, I am proving ownership of this host by posting or appending to this document. From a0e6a44929168db01eec01e6333328a0274802cd Mon Sep 17 00:00:00 2001 From: counterweight Date: Sun, 19 Oct 2025 17:34:41 +0200 Subject: [PATCH 08/21] add ntfy emergency --- public/index.html | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/public/index.html b/public/index.html index c7d4697..7021775 100644 --- a/public/index.html +++ b/public/index.html @@ -110,15 +110,19 @@

    My projects

    Some of the projects I've shared publicly:

    There are also some other projects that I generally keep private but From 9950201dd75a4cab3fc7d54975fa9bce9b1b239e Mon Sep 17 00:00:00 2001 From: counterweight Date: Wed, 24 Dec 2025 10:52:09 +0100 Subject: [PATCH 09/21] add link to bitcoin infra --- public/index.html | 3 +++ public/styles.css | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/public/index.html b/public/index.html index 7021775..e4c5a83 100644 --- a/public/index.html +++ b/public/index.html @@ -123,6 +123,9 @@ My Python package to handle Spanish DNIs better

  • +
  • + My open access Bitcoin infrastructure that you can use freely. It includes access to the peer port of my Bitcoin node, an Electrum server and a mempool.space instance. +

There are also some other projects that I generally keep private but diff --git a/public/styles.css b/public/styles.css index 690b8b1..e7908b3 100644 --- a/public/styles.css +++ b/public/styles.css @@ -7,7 +7,8 @@ body { h1, h2, -h3 { +h3, +h4 { text-align: center; } From 6b34d08cae7217f45649911b99b58ab9bff3118c Mon Sep 17 00:00:00 2001 From: counterweight Date: Wed, 24 Dec 2025 10:55:22 +0100 Subject: [PATCH 10/21] deploy helper --- .gitignore | 14 ++++++++++++++ deploy.config.example | 21 +++++++++++++++++++++ deploy.sh | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 .gitignore create mode 100644 deploy.config.example create mode 100755 deploy.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8f24f11 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +# Deployment configuration (contains sensitive server details) +deploy.config + +# OS files +.DS_Store +Thumbs.db + +# Editor files +.vscode/ +.idea/ +*.swp +*.swo +*~ + diff --git a/deploy.config.example b/deploy.config.example new file mode 100644 index 0000000..1c84f53 --- /dev/null +++ b/deploy.config.example @@ -0,0 +1,21 @@ +# Deployment Configuration +# Copy this file to deploy.config and fill in your server details +# deploy.config is gitignored to keep your credentials safe + +# Remote server hostname or IP address +REMOTE_HOST="example.com" + +# SSH username for the remote server +REMOTE_USER="username" + +# Remote path where the website should be deployed +# This should be the directory served by your webserver (e.g., /var/www/html, /home/username/public_html) +REMOTE_PATH="/var/www/html" + +# Optional: Path to SSH private key (if not using default ~/.ssh/id_rsa) +# Leave empty to use default SSH key +SSH_KEY="" + +# Optional: SSH port (defaults to 22 if not specified) +# SSH_PORT="22" + diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..5cf9692 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Deployment script for pablohere website +# This script syncs the public folder to a remote webserver + +set -e # Exit on error + +# Load deployment configuration +if [ ! -f "deploy.config" ]; then + echo "Error: deploy.config file not found!" + echo "Please copy deploy.config.example to deploy.config and fill in your server details." + exit 1 +fi + +source deploy.config + +# Validate required variables +if [ -z "$REMOTE_HOST" ] || [ -z "$REMOTE_USER" ] || [ -z "$REMOTE_PATH" ]; then + echo "Error: Required variables not set in deploy.config" + echo "Please ensure REMOTE_HOST, REMOTE_USER, and REMOTE_PATH are set." + exit 1 +fi + +# Use rsync to sync files +echo "Deploying public folder to $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH" +rsync -avz --delete \ + --exclude='.git' \ + --exclude='.DS_Store' \ + $SSH_OPTS \ + public/ \ + $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH + +echo "Deployment complete!" + From ea3d5a7c3ecf4d9e2e041f872dc5a823b669483d Mon Sep 17 00:00:00 2001 From: counterweight Date: Wed, 24 Dec 2025 10:57:26 +0100 Subject: [PATCH 11/21] update readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b448f02..32ee0c7 100644 --- a/README.md +++ b/README.md @@ -8,4 +8,6 @@ The `index.html` is ready in the `public` folder. ## How to deploy -Somehow get the `public` folder behind a webserver manually and sort out DNS. +1. Copy `deploy.config.example` to `deploy.config` +2. Fill in your server details in `deploy.config` (host, user, remote path) +3. Run `./deploy.sh` to sync the `public` folder to your remote webserver From ae87f3838c564c39b87305fde5e8cf637d0b5fbd Mon Sep 17 00:00:00 2001 From: counterweight Date: Sun, 4 Jan 2026 01:13:15 +0100 Subject: [PATCH 12/21] zfs writings --- public/index.html | 12 ++ .../a-degraded-pool-with-a-healthy-disk.html | 133 +++++++++++++ .../fixing-a-degraded-zfs-mirror.html | 188 ++++++++++++++++++ .../why-i-put-my-vms-on-a-zfs-mirror.html | 120 +++++++++++ 4 files changed, 453 insertions(+) create mode 100644 public/writings/a-degraded-pool-with-a-healthy-disk.html create mode 100644 public/writings/fixing-a-degraded-zfs-mirror.html create mode 100644 public/writings/why-i-put-my-vms-on-a-zfs-mirror.html diff --git a/public/index.html b/public/index.html index e4c5a83..1c18d0d 100644 --- a/public/index.html +++ b/public/index.html @@ -147,6 +147,18 @@

Writings

Sometimes I like to jot down ideas and drop them here.