initial commit
This commit is contained in:
commit
7a32292dda
91 changed files with 3095 additions and 0 deletions
2
posixlycorrect/content/_index.md
Normal file
2
posixlycorrect/content/_index.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
+++
|
||||
+++
|
35
posixlycorrect/content/about.md
Normal file
35
posixlycorrect/content/about.md
Normal file
|
@ -0,0 +1,35 @@
|
|||
+++
|
||||
title = "about"
|
||||
+++
|
||||
name: Fabián Montero
|
||||
bio: Linux Embedded Engineer
|
||||
projects: [https://sr.ht/~fabianmv/](https://sr.ht/~fabianmv/)
|
||||
email: fabian [at] posixlycorrect [dot] com
|
||||
gpg key:
|
||||
```txt
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEZHlROBYJKwYBBAHaRw8BAQdAhzA1JCghQ6KoHOuf6JPQhEmchHLVXFVye4I2
|
||||
pRUOUMO0KkZhYmlhbiBNb250ZXJvIDxmYWJpYW5AcG9zaXhseWNvcnJlY3QuY29t
|
||||
PoiUBBMWCgA8FiEEeqJ35gSkFzkWu7TpH/rDXheYF08FAmR5UTgCGwMFCQlmAYAE
|
||||
CwkIBwQVCgkIBRYCAwEAAh4FAheAAAoJEB/6w14XmBdPP2EA/i9ugFxpIFF6oOQs
|
||||
clMfr+sNj6Il0OUTJK0dqpp4mGorAP0awa6nfhU8T1Ju7UWr6cfSmnL4bM6M/4Z3
|
||||
D+AF/L5PBokCMwQQAQoAHRYhBOd6gIv5qVXWaO7qZHP6nJy18CSbBQJkeVKDAAoJ
|
||||
EHP6nJy18CSbzTkP/Reio0ObRrRW+QSw62ZXrUG0mFcNeeoM9amldCToFRyGnSDu
|
||||
wtZ9nqwLiTJ01VPBOsEZLsl4VonO3rdadqnMTZ3XqKK9VHBl6UNot3DQ8INDAcko
|
||||
GW1zvEdxNkpMxhtAja0JkcBdG7+zxc2aEGeKfEna2qDXA+xtYw5+pssOWYMip7hm
|
||||
jQ2NzYMYav2KYRBC7eXTkAIIIJi/l9pR1IwHtY3a0gfbkQymgCyt5wVG6LneYFIR
|
||||
+ycNVCObwyP8gFASdId0bWnA23rkilc9ZBOCps/cGfDLM+KQ+sLAWBFBQyQeEjcv
|
||||
tU+pLXncAEvWy/SFmprVSLDQMMooFaEJMZChojGcCkwAPG1twsihqIA3E44Q3/+G
|
||||
K0gZN57jGMnfvuQiuLuttOMdu27KwEu++t3YUt0P6S4kARpx51zZJ7A2Yj2u22aM
|
||||
7EL8qq6KTNdNoS7FgwQkrWbokdDZIl0HV+5TeMQfylPqOPhuFK/1A9qztqknBPVY
|
||||
QUx2t6FZUgH9sT7uD+5gXxyeqmEIFo2i6D8G/4TEPbKtWivJfeOqDEBn4QEY2nvE
|
||||
zgJLLU5XCv9xPz5rizRCa+h+kg+i4mH6fLCBCCAPXsbAAo0gUlGJvX4slPh7uPOa
|
||||
T2r7A/7uezResBzP/L/vostlmjO5c8cOl9Wc6D1kRZq17/AjMUgy6+KR3iVnuDgE
|
||||
ZHlROBIKKwYBBAGXVQEFAQEHQPRbCS2p8xpt3fRxfyRnDOdH9pULY4NtGmZUS0ve
|
||||
ZGkTAwEIB4h+BBgWCgAmFiEEeqJ35gSkFzkWu7TpH/rDXheYF08FAmR5UTgCGwwF
|
||||
CQlmAYAACgkQH/rDXheYF0/65AD+LtDeedCYv9zs+1Ia3DvejVZM256WEH+dRH5h
|
||||
Pm3RzQ8A/2+bXRnfsgGqacj/kKEL3spuos95ngRNRkrQ39nc1koP
|
||||
=PAxr
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
```
|
12
posixlycorrect/content/analog_photography.md
Normal file
12
posixlycorrect/content/analog_photography.md
Normal file
|
@ -0,0 +1,12 @@
|
|||
+++
|
||||
title = "analog_photography"
|
||||
+++
|
||||
|
||||
My main hobby is analog photography. I own a couple of *point and shoots* but I
|
||||
mainly use a Nikon F2 (with the DP-1 meter) and a Minolta XG7.
|
||||
|
||||
Here are some decent photos I have been able to take.
|
||||
|
||||
<a data-flickr-embed="true" data-footer="true" data-context="true" href="https://www.flickr.com/photos/195498995@N08/53200811755/in/dateposted-public/" title="F353"><img src="https://live.staticflickr.com/65535/53200811755_e59b308a45_b.jpg" width="696" height="1024" alt="F353"/></a><script async src="//embedr.flickr.com/assets/client-code.js" charset="utf-8"></script>
|
||||
|
||||
A bunch of photos missing, gotta add more later.
|
25
posixlycorrect/content/art_collection.md
Normal file
25
posixlycorrect/content/art_collection.md
Normal file
|
@ -0,0 +1,25 @@
|
|||
+++
|
||||
title = "art_collection"
|
||||
+++
|
||||
I own a very small art collection. Here are some photos of the pieces in it and
|
||||
some info about them.
|
||||
|
||||
# La tertulia
|
||||
Screen Printing
|
||||
35x45cm
|
||||
2021
|
||||
|
||||
La Tertulia is a screen printing ("serigrafía", in spanish) by Costa Rican
|
||||
artist Rafa Gutierrez.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
This is how I framed it:
|
||||
|
||||

|
||||
|
||||
This piece has a "sister" which I gifted to my father. It's called "Caribe":
|
||||
|
||||

|
6
posixlycorrect/content/blog.md
Normal file
6
posixlycorrect/content/blog.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
+++
|
||||
title = "blog_posts"
|
||||
+++
|
||||
## [2023-06-02: building a site with zola and sourcehut](@/blog/building_a_site_with_zola_and_sourcehut.md)
|
||||
## [2023-09-19: introduction to gpg key usage](@/blog/introduction_to_gpg_key_usage.md)
|
||||
## [2024-05-22: Stellaris virtual rush build](@/blog/stellaris_tall_virtual_build.md)
|
|
@ -0,0 +1,137 @@
|
|||
+++
|
||||
title = "building a site with zola and sourcehut"
|
||||
date = 2023-06-02
|
||||
+++
|
||||
|
||||
# Introduction
|
||||
|
||||
The following is a small tutorial on how to build a static webpage using
|
||||
<a href="https://www.getzola.org/" target="_blank">Zola</a> and
|
||||
<a href="https://builds.sr.ht/" target="_blank">Sourcehut's build service</a>.
|
||||
|
||||
This guide is kindof redundant since Zola's documentatioin is already very
|
||||
clear, but I want to write a first post in order to test this site.
|
||||
|
||||
<br>
|
||||
|
||||
# Prerequisites
|
||||
|
||||
First off, download Zola using your package manager.
|
||||
<a href="https://www.getzola.org/documentation/getting-started/installation/"
|
||||
target="_blank">Installation instructions</a> can be found on their site.
|
||||
|
||||
After that, <a href="https://builds.sr.ht/"
|
||||
target="_blank">create an account</a> on Sourcehut. I paid for the
|
||||
"Amateur Hackers" tier as I'm just getting started with this project.
|
||||
|
||||
<br>
|
||||
|
||||
# Creating a static webpage
|
||||
|
||||
All commands assume you are on the root of your project.
|
||||
|
||||
<br>
|
||||
|
||||
### Zola
|
||||
|
||||
Once you've downloaded Zola, create an empty dir, initialize you site and
|
||||
initialize a git repo:
|
||||
```bash
|
||||
$ mkdir www && cd www
|
||||
$ zola init posixlycorrect.com
|
||||
$ git init
|
||||
```
|
||||
|
||||
Test everything is fine:
|
||||
```bash
|
||||
$ zola serve
|
||||
```
|
||||
|
||||
If it is, download a theme:
|
||||
```bash
|
||||
$ mkdir -p themes
|
||||
$ cd themes
|
||||
$ git clone https://github.com/pawroman/zola-theme-terminimal.git
|
||||
```
|
||||
|
||||
Add content to your site:
|
||||
```bash
|
||||
$ mkdir -p content
|
||||
$ cd content
|
||||
$ nvim _index.md ## add to this whatever your theme needs in order to work
|
||||
## usually this is detailed on the theme's docs
|
||||
|
||||
$ nvim blog.mb ## landing page for posixlycorrect.com/blog
|
||||
$ mkdir blog && cd blog
|
||||
$ nvim building_a_site_with_zola_and_sourcehut.md ## your first post
|
||||
$ cd ..
|
||||
$ nvim about.md ## your about page
|
||||
```
|
||||
|
||||
Check that everything looks good:
|
||||
```bash
|
||||
$ zola serve
|
||||
```
|
||||
|
||||
<br>
|
||||
|
||||
### Sourcehut
|
||||
|
||||
Your site is now ready to be published! In order to do that, commit your changes
|
||||
and add a remote repo from sourcehut:
|
||||
```bash
|
||||
$ git add .
|
||||
$ git commit
|
||||
$ git remote add origin git@git.sr.ht:~fabianmv/posixlycorrect.com
|
||||
```
|
||||
|
||||
Add a build manifest so sourcehut knows how to publish your site:
|
||||
```bash
|
||||
$ nvim .build.yml
|
||||
```
|
||||
|
||||
My manifest looks like this:
|
||||
```yaml
|
||||
image: alpine/edge
|
||||
packages:
|
||||
- hut
|
||||
- zola
|
||||
oauth: pages.sr.ht/PAGES:RW
|
||||
environment:
|
||||
site: posixlycorrect.com
|
||||
sources:
|
||||
- https://git.sr.ht/~fabianmv/posixlycorrect.com
|
||||
tasks:
|
||||
- build: |
|
||||
cd posixlycorrect.com
|
||||
mkdir -p templates
|
||||
zola build
|
||||
- package: |
|
||||
cd posixlycorrect.com
|
||||
tar -C public -cvz . > ../site.tar.gz
|
||||
- upload: |
|
||||
hut pages publish -d $site site.tar.gz
|
||||
```
|
||||
|
||||
Add and commit your changes and push your repo:
|
||||
```bash
|
||||
$ git add .
|
||||
$ git commit
|
||||
$ git push
|
||||
```
|
||||
|
||||
Your website now should be visible! Updating it is a matter of making changes
|
||||
and pushing to your repo.
|
||||
|
||||
Good luck!
|
||||
|
||||
If you have any questions, feel free to email me.
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
Good luck!
|
||||
|
||||
If you have any questions, feel free to email me.
|
318
posixlycorrect/content/blog/introduction_to_gpg_key_usage.md
Normal file
318
posixlycorrect/content/blog/introduction_to_gpg_key_usage.md
Normal file
|
@ -0,0 +1,318 @@
|
|||
+++
|
||||
title = "introduction to gpg key usage"
|
||||
date = 2023-09-19
|
||||
+++
|
||||
|
||||
# Introduction
|
||||
|
||||
The following is an introductory tutorial on how to use GPG keys to send secure
|
||||
and trusted messages across the internet.
|
||||
|
||||
GPG it is widely used to send secure an verified messages all over the internet,
|
||||
including in the Linux Kernel project!. In order for it to work, everyone has to
|
||||
have a key-pair.
|
||||
|
||||
Key pairs consist of two cryptographic keys: a public key and a private key.
|
||||
The public key is used to encrypt data or verify digital signatures, and it can
|
||||
be freely shared with others. Conversely, the private key is kept secret and is
|
||||
used to decrypt data encrypted with the corresponding public key or to create
|
||||
digital signatures. When someone wants to send you an encrypted message, they
|
||||
use your public key, which only you can decrypt using your private key.
|
||||
Similarly, when you digitally sign a file, others can verify its
|
||||
authenticity using your public key. This asymmetric key pair system ensures
|
||||
secure communication and data integrity in various applications, such as email
|
||||
encryption and software distribution.
|
||||
|
||||
More info on <a href="https://www.gnupg.org"
|
||||
target="_blank">the official website</a>.
|
||||
|
||||
In this guide, the following topics will be covered:
|
||||
- Generate your personal key pair
|
||||
- Export your public key with --armor so you can easily share it
|
||||
- Upload your public key to various key servers so you can even more easily
|
||||
share it
|
||||
- Encrypt and decrypt a file
|
||||
- Setup thunderbird to send and receive encrypted emails (cominng soon)
|
||||
- Setup (neo)mutt to send and receive encrypted emails (coming soon)
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Prerequisites
|
||||
|
||||
All you are going to need is the
|
||||
<a href="https://distrowatch.com/dwres.php?resource=package-in-distro&pkg=gnupg"
|
||||
target="_blank">gnupg</a> package. Get it using your distro's package manager.
|
||||
|
||||
Lets get started.
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Generating your personal key pair
|
||||
|
||||
To create a key pair, run the following command:
|
||||
|
||||
```bash
|
||||
$ gpg --full-gen-key
|
||||
```
|
||||
|
||||
You should get something like this:
|
||||
```bash
|
||||
Please select what kind of key you want:
|
||||
(1) RSA and RSA
|
||||
(2) DSA and Elgamal
|
||||
(3) DSA (sign only)
|
||||
(4) RSA (sign only)
|
||||
(9) ECC (sign and encrypt) *default*
|
||||
(10) ECC (sign only)
|
||||
(14) Existing key from card
|
||||
Your selection?
|
||||
```
|
||||
|
||||
Select option 9 (which is the default anyways), then you'll get something like
|
||||
this:
|
||||
```bash
|
||||
Please select which elliptic curve you want:
|
||||
(1) Curve 25519 *default*
|
||||
(4) NIST P-384
|
||||
(6) Brainpool P-256
|
||||
Your selection?
|
||||
```
|
||||
Select the default option again.
|
||||
|
||||
Then, choose an expiration date:
|
||||
```bash
|
||||
Please specify how long the key should be valid.
|
||||
0 = key does not expire
|
||||
<n> = key expires in n days
|
||||
<n>w = key expires in n weeks
|
||||
<n>m = key expires in n months
|
||||
<n>y = key expires in n years
|
||||
Key is valid for?
|
||||
```
|
||||
|
||||
I normally choose a couple of years. It's not a good idea to have a key never
|
||||
expire.
|
||||
|
||||
Now GPG will create an identity for you:
|
||||
```bash
|
||||
GnuPG needs to construct a user ID to identify your key.
|
||||
|
||||
Real name:
|
||||
Email address:
|
||||
Comment:
|
||||
```
|
||||
|
||||
Enter a name to identify yourself (usually first and last name), your email and
|
||||
optionally a comment. Normally the comment is left blank.
|
||||
|
||||
After that, GPG will ask you to add a passphrase to protect your key. Enter a
|
||||
secure passphrase and GPG will have generated your key!
|
||||
|
||||
You should see output similar to this:
|
||||
```bash
|
||||
pub ed25519/0x1FFAC35E1798174F 2023-06-02 [SC] [expires: 2028-05-31]
|
||||
Key fingerprint = 7AA2 77E6 04A4 1739 16BB B4E9 1FFA C35E 1798 174F
|
||||
uid [ultimate] Fabian Montero <fabian@posixlycorrect.com>
|
||||
sub cv25519/0xEA4F0B28F9C039EB 2023-06-02 [E] [expires: 2028-05-31]
|
||||
```
|
||||
|
||||
This is the typical way in which gpg displays keys. Lets understand this output.
|
||||
|
||||
<br>
|
||||
|
||||
### Overview of the anatomy of a GPG key
|
||||
|
||||
This will only be a quick overview, if you want more information on this, check
|
||||
out the following links:
|
||||
- <a href="https://github.com/gpg/gnupg/blob/master/doc/DETAILS"
|
||||
target="_blank">GPG docs</a>
|
||||
- <a href="https://davesteele.github.io/gpg/2014/09/20/anatomy-of-a-gpg-key/"
|
||||
target="_blank">Anatomy of a GPG Key, by David Steele (much more detailed than
|
||||
this section)</a>
|
||||
- <a href="https://unix.stackexchange.com/questions/613839/help-understanding-gpg-list-keys-output"
|
||||
target="_blank">A question on stack exchange that overviews this topic</a>
|
||||
|
||||
Lets take a look at the first line of the output:
|
||||
```bash
|
||||
pub ed25519/0x1FFAC35E1798174F 2023-06-02 [SC] [expires: 2028-05-31]
|
||||
```
|
||||
|
||||
This tells us the ***type of entry*** that we're looking at. And it tells us a couple
|
||||
of things:
|
||||
- `pub`: This is a public key
|
||||
- `ed25519`: This key uses a <a href="https://en.wikipedia.org/wiki/Curve25519"
|
||||
target="_blank">elliptic curve Diffie–Hellman (ECDH) key agreement scheme</a>
|
||||
(I have no clue what that is, but as I understand it, this is most secure key
|
||||
technology developed thus far)
|
||||
- `0x1FFAC35E1798174F`: is the key id of your key, this is derived from the
|
||||
key's fingerprint
|
||||
- `2023-06-02` date in which the key was generated
|
||||
- `[SC]` means that this key has the following two capabilities: ***sign*** and
|
||||
***certify***
|
||||
- `[expires: 2028-05-31]` expiration date of the key
|
||||
|
||||
The next line looks like this:
|
||||
```bash
|
||||
Key fingerprint = 7AA2 77E6 04A4 1739 16BB B4E9 1FFA C35E 1798 174F
|
||||
```
|
||||
This is the fingerprint of your key (more on what this is in a moment).
|
||||
|
||||
The next line looks like this:
|
||||
```bash
|
||||
uid [ultimate] Fabian Montero <fabian@posixlycorrect.com>
|
||||
```
|
||||
This is the uid that corresponds to this key. The `[ultimate]` string means that
|
||||
this key is ultimately trusted. Normally this means that the private key is also
|
||||
available.
|
||||
|
||||
Finally, the last line looks like this:
|
||||
```bash
|
||||
sub cv25519/0xEA4F0B28F9C039EB 2023-06-02 [E] [expires: 2028-05-31]
|
||||
```
|
||||
|
||||
This is a subkey of your key. This subkey is bound to your normal key.
|
||||
|
||||
- `sub`: This is a subkey
|
||||
- `cv25519`: This key uses a <a href="https://en.wikipedia.org/wiki/Curve25519"
|
||||
target="_blank">elliptic curve Diffie–Hellman (ECDH) key agreement scheme</a>
|
||||
- `0xEA4F0B28F9C039EB`: is the key id of your subkey, this is derived from the
|
||||
key's fingerprint
|
||||
- `2023-06-02` date in which the key was generated
|
||||
- `[E]` means that this key has the following two capability: ***encrypt***
|
||||
- `[expires: 2028-05-31]` expiration date of the key
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Exporting your key with --armor
|
||||
One way to export your public key is to export its armor. To do that, run the
|
||||
following command:
|
||||
```bash
|
||||
$ gpg --export --armor 7AA277E604A4173916BBB4E91FFAC35E1798174F
|
||||
```
|
||||
|
||||
Replacing the fingerprint with your key's fingerprint, of course.
|
||||
|
||||
This will output something like this:
|
||||
```bash
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEZHlROBYJKwYBBAHaRw8BAQdAhzA1JCghQ6KoHOuf6JPQhEmchHLVXFVye4I2
|
||||
pRUOUMO0KkZhYmlhbiBNb250ZXJvIDxmYWJpYW5AcG9zaXhseWNvcnJlY3QuY29t
|
||||
PoiUBBMWCgA8FiEEeqJ35gSkFzkWu7TpH/rDXheYF08FAmR5UTgCGwMFCQlmAYAE
|
||||
CwkIBwQVCgkIBRYCAwEAAh4FAheAAAoJEB/6w14XmBdPP2EA/i9ugFxpIFF6oOQs
|
||||
clMfr+sNj6Il0OUTJK0dqpp4mGorAP0awa6nfhU8T1Ju7UWr6cfSmnL4bM6M/4Z3
|
||||
D+AF/L5PBokCMwQQAQoAHRYhBOd6gIv5qVXWaO7qZHP6nJy18CSbBQJkeVKDAAoJ
|
||||
EHP6nJy18CSbzTkP/Reio0ObRrRW+QSw62ZXrUG0mFcNeeoM9amldCToFRyGnSDu
|
||||
wtZ9nqwLiTJ01VPBOsEZLsl4VonO3rdadqnMTZ3XqKK9VHBl6UNot3DQ8INDAcko
|
||||
GW1zvEdxNkpMxhtAja0JkcBdG7+zxc2aEGeKfEna2qDXA+xtYw5+pssOWYMip7hm
|
||||
jQ2NzYMYav2KYRBC7eXTkAIIIJi/l9pR1IwHtY3a0gfbkQymgCyt5wVG6LneYFIR
|
||||
+ycNVCObwyP8gFASdId0bWnA23rkilc9ZBOCps/cGfDLM+KQ+sLAWBFBQyQeEjcv
|
||||
tU+pLXncAEvWy/SFmprVSLDQMMooFaEJMZChojGcCkwAPG1twsihqIA3E44Q3/+G
|
||||
K0gZN57jGMnfvuQiuLuttOMdu27KwEu++t3YUt0P6S4kARpx51zZJ7A2Yj2u22aM
|
||||
7EL8qq6KTNdNoS7FgwQkrWbokdDZIl0HV+5TeMQfylPqOPhuFK/1A9qztqknBPVY
|
||||
QUx2t6FZUgH9sT7uD+5gXxyeqmEIFo2i6D8G/4TEPbKtWivJfeOqDEBn4QEY2nvE
|
||||
zgJLLU5XCv9xPz5rizRCa+h+kg+i4mH6fLCBCCAPXsbAAo0gUlGJvX4slPh7uPOa
|
||||
T2r7A/7uezResBzP/L/vostlmjO5c8cOl9Wc6D1kRZq17/AjMUgy6+KR3iVnuDgE
|
||||
ZHlROBIKKwYBBAGXVQEFAQEHQPRbCS2p8xpt3fRxfyRnDOdH9pULY4NtGmZUS0ve
|
||||
ZGkTAwEIB4h+BBgWCgAmFiEEeqJ35gSkFzkWu7TpH/rDXheYF08FAmR5UTgCGwwF
|
||||
CQlmAYAACgkQH/rDXheYF0/65AD+LtDeedCYv9zs+1Ia3DvejVZM256WEH+dRH5h
|
||||
Pm3RzQ8A/2+bXRnfsgGqacj/kKEL3spuos95ngRNRkrQ39nc1koP
|
||||
=PAxr
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
```
|
||||
|
||||
That string is what is known as the armor of your key. It can be saved into a
|
||||
file: `fabian.gpg`, for example and be imported by others like this:
|
||||
|
||||
```bash
|
||||
$ gpg --import fabian.gpg
|
||||
```
|
||||
|
||||
More info on armor in <a href="https://unix.stackexchange.com/questions/623375/what-is-the-armored-option-for-in-gnupg"
|
||||
target="_blank">this Unix Stack Exchange question</a>.
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Uploading your public key to the internet
|
||||
|
||||
You can also upload your key to various key servers, so other people can search
|
||||
for it and download it. To do this, run the following command:
|
||||
```bash
|
||||
$ gpg --send-keys 7AA277E604A4173916BBB4E91FFAC35E1798174F
|
||||
```
|
||||
|
||||
Again, replacing my fingerprint for yours.
|
||||
|
||||
You can also upload it manually to <a href="https://keys.openpgp.org/"
|
||||
target="_blank">https://keys.openpgp.org/</a>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Encrypting and decrypting a file
|
||||
|
||||
Now that you have your key pair and you have published your public key, you
|
||||
can start encrypting and decrypting stuff. This is extremely easy:
|
||||
|
||||
To encrypt a file called `secrets.txt`, run:
|
||||
```bash
|
||||
$ gpg -e secrets.txt
|
||||
```
|
||||
|
||||
GPG will ask you to enter recipients:
|
||||
```bash
|
||||
You did not specify a user ID. (you may use "-r")
|
||||
|
||||
Current recipients:
|
||||
|
||||
Enter the user ID. End with an empty line:
|
||||
```
|
||||
Enter the email address of the recipient, so that the file is encrypted using
|
||||
their public key. This way only they will be able to decrypt the file using
|
||||
their corresponding private key.
|
||||
|
||||
You can add more than one recipient. It is common to add yourself as a
|
||||
recipient, that way you can also decrypt the file.
|
||||
|
||||
This will produce a file called `secrets.txt.gpg`, which is encrypted. You can
|
||||
now send this file safely to the recipient.
|
||||
|
||||
|
||||
To decrypt an encrypted file, run:
|
||||
```bash
|
||||
$ gpg -d secrets.txt.gpg
|
||||
```
|
||||
|
||||
GPG will print something like this:
|
||||
```bash
|
||||
gpg: encrypted with cv25519 key, ID 0xEA4F0B28F9C039EB, created 2023-06-02
|
||||
"Fabian Montero <fabian@posixlycorrect.com>"
|
||||
gpg: using "7AA277E604A4173916BBB4E91FFAC35E1798174F" as default secret key for signing
|
||||
```
|
||||
And the content of the decrypted file will be printed in standard output.
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Setting up thunderbird to send and receive encrypted emails
|
||||
I'm still working on this part of the guide.
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
# Setting up (neo)mutt to send and receive encrypted emails
|
||||
I'm still working on this part of the guide.
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
Good luck!
|
||||
|
||||
If you have any questions, feel free to email me.
|
194
posixlycorrect/content/blog/stellaris_tall_virtual_build.md
Normal file
194
posixlycorrect/content/blog/stellaris_tall_virtual_build.md
Normal file
|
@ -0,0 +1,194 @@
|
|||
+++
|
||||
title = "Stellaris virtual rush build"
|
||||
date = 2024-05-22
|
||||
+++
|
||||
|
||||
# Introduction
|
||||
This is a written version of [a video](https://youtu.be/jEf0JmFRkK4?si=xeTsbCpk_8HCt_SJ)
|
||||
by [Montu Plays](https://www.youtube.com/@MontuPlays). All credit goes to them.
|
||||
|
||||
It is a tall empire which leverages the new features from The Machine Age DLC.
|
||||
|
||||
As far as I know, the only other necessary DLC for this build is Humanoids and
|
||||
Astral Planes.
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Build
|
||||
- **Species:**
|
||||
- Machine
|
||||
- **Origin:**
|
||||
- Voidforged
|
||||
- **Government:**
|
||||
- Democratic
|
||||
- **Ethics:**
|
||||
- Egalitarian
|
||||
- Militarist
|
||||
- Spiritualist
|
||||
- **Civics:**
|
||||
- Parliamentary System
|
||||
- Sovereign Guardianship
|
||||
- **Traits:**
|
||||
- Machine (you get this by chosing the any machine portrait)
|
||||
- Zero G Optimized (you get this by chosing the Voidforged origin)
|
||||
- Adaptive Frames
|
||||
- Mass-Produced
|
||||
- Bulky
|
||||
- High bandwidth
|
||||
- Art Generator
|
||||
- **Leader Trait:**
|
||||
- Charismatic
|
||||
- **Starting Solar System:**
|
||||
- Void Dwellers (Sol)
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Opening
|
||||
- **Unemploy researchers** in your starting habitat
|
||||
- **Unemploy enforcers** in your starting habitat
|
||||
- Change **Diplomatic Stance** to **Isolationist**
|
||||
- Change **Subjugation War Terms** to **Benevolent Vassalage**
|
||||
- Change **First Contact Protocol** to **Proactive**
|
||||
- Start an automatic trade to **buy of 20 minerals/month**
|
||||
- Build **2 Industrial districts** in your starting habitat
|
||||
- Build **1 Reactor district** in your starting habitat
|
||||
- Send Science Ship to **survey Alpha Centauri**
|
||||
- Turn on the **Veneration of Saints** Edict
|
||||
- Turn on the **Encourage Political Thought** Edict
|
||||
- **Promote** your **Egalitarian Faction**
|
||||
- If you don't have an Egalitarian leader in your council, hire one and place
|
||||
them there
|
||||
- Send your **Military Fleet** to try and make **first contact** ASAP with as
|
||||
many empires as possible
|
||||
- Build a **second Science Ship** to scout around and try and make first contact
|
||||
ASAP with as many empires as possible
|
||||
- Build a **second Construction ship** to build as many **Minor Orbitals** on
|
||||
your capital system
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Traditions & Ascension Perks
|
||||
1. Prosperity
|
||||
1. Standard Construction Templates
|
||||
2. Everything else
|
||||
3. **One Vision Ascension Perk**
|
||||
2. Enmity
|
||||
1. Complete the whole tradition tree
|
||||
2. **Consecrated Worlds Ascension Perk**
|
||||
3. Mercantile
|
||||
1. Adaptive Economic Policies
|
||||
2. Everything else
|
||||
3. **Synthetic Age Ascension Perk**
|
||||
4. Virtuality
|
||||
1. Complete the whole tradition tree
|
||||
2. Whatever Ascension Perk you want
|
||||
5. Supremacy
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Council Agendas
|
||||
1. Whatever you start with
|
||||
1. Expand The Council
|
||||
2. Evolving Society
|
||||
3. Give and Take
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Post-opening
|
||||
- **Build** as many **Temples** as possible on your **starting habitat**
|
||||
- Build a **second habitat** on **Alpha Centauri**
|
||||
- Search for another **system with the most planets** possible in your vicinity
|
||||
in order to place your **third habitat** there
|
||||
- **After starting your third habitat**, turn on the **Inner Focus** Edict
|
||||
- Get **Planetary Unification Technology** ASAP
|
||||
- If you find an **Archeological Site**, complete it and get **Celebration of**
|
||||
**Diversity** or **Proclaim Religious Revelation**
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Mid-game
|
||||
- After year 10, an election will come up. Make sure your **current leader does
|
||||
not get re-elected**
|
||||
- After completing the Emnity Tradition, change **Diplomatic Stance** to
|
||||
**Antagonistic**
|
||||
- Build an **Autocothon Monument** on your **second habitat**
|
||||
- Build **1 Habitation District** on your **second habitat**
|
||||
- Upon making first contact with other empires, **trade alloys** for their
|
||||
**communications**
|
||||
- After trading communications with an empire, **declare them your rival**
|
||||
- **UNLESS** they are your neighbor. In that case, improve relations and try
|
||||
to form a non-aggression pact in order to prevent them from attacking you
|
||||
- After getting the Consecrated Worlds Ascension Perk, **consecrate any
|
||||
habitable planets you find**
|
||||
- If you don't have habitable planets, consecrate non-habitable ones
|
||||
- After meeting another empire, **reform your government** into an **Oligarchy**
|
||||
- **BEFORE SWITCHING** **un-employ** all **politicians** on all your habitats
|
||||
- Get the **Exalted Priesthood Ethic**
|
||||
- **Re-employ** all **politicians** after switching
|
||||
- Use your **extra council slot** you got from the Evolving Society Agenda to
|
||||
place an **Archpriest** in your Council
|
||||
- Your council should have as many Governors as possible
|
||||
- Change **Resettlement** policy to **Allowed**
|
||||
- Make sure your Egalitarian Faction stays over 80% approval after this
|
||||
- **Resettle worker class pops** towards your **new habitats**
|
||||
- If necessary, start an automatic trade to **sell of 10 alloys/month**
|
||||
- Slight loss in consumer goods is ok
|
||||
- After getting Adaptive Economic Policies Tradition, Change **Trade Policy** to
|
||||
**Consumer Benefits**
|
||||
- Build **Zero-G Districts** on **Alpha Centauri**
|
||||
- **Un-employ** all **researchers** on Alpha Centauri
|
||||
- **Build** as many **Temples** as possible on your **second habitat**
|
||||
- Switch it's **specialization** to **Ecclesiastical Station**
|
||||
- **Build** as many **Temples** as possible on your **third habitat**
|
||||
- Switch it's **specialization** to **Ecclesiastical Station**
|
||||
- If necessary, start an automatic trade to **buy more minerals/month** in order
|
||||
to build more districts
|
||||
- Employ a **Governor with the Unifier Trait** on your **capital**
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# Post mid-game
|
||||
- Your **second habitat** should focus on **research**, build as many Zero-G
|
||||
districts as possible, but don't employ any pops on research
|
||||
- Your **third habitat** should focus on **alloys**, build as many industrial
|
||||
districts as possible, but don't employ any pops on them
|
||||
- After getting the Synthetic Age Ascension Perk, your **transformation** will
|
||||
begin
|
||||
- Select the **Real Time Approach**
|
||||
- The idea is to **save up unity** until you adopt Virtuality and then
|
||||
**unlock the whole tree at once**
|
||||
- **Embrace the virtual world** when prompted to chose **A New Form**
|
||||
- After adopting the whole Virtuality Tradition, change **Virtual Economy**
|
||||
**Focus** to **Research**
|
||||
- After ascending, **Restore Jobs** on all your **habitats**
|
||||
- You may need to click it a couple of times
|
||||
- After the month ends, you should be getting a large amount of all resources
|
||||
- Switch your **alloy habitat** to be a **Foundry World**
|
||||
- Switch your **research habitat** to be a **Research Station**
|
||||
- **Switch** all your **Reactor Districts** in your **capital** into
|
||||
**Astro-Mining Districts**
|
||||
- **Replace** all your **Temples** in your **capital** for **Research labs**
|
||||
- Build **Major and Minor Orbitals** **everywhere** you can
|
||||
- As soon as you can, build an **Arc-Furnace** on your capital system
|
||||
- Mercury is a great place to do this
|
||||
|
||||
|
||||
</br>
|
||||
</br>
|
||||
|
||||
# End-game
|
||||
- Build a massive fleet
|
||||
- Vassalize everyone
|
8
posixlycorrect/content/lib.md
Normal file
8
posixlycorrect/content/lib.md
Normal file
|
@ -0,0 +1,8 @@
|
|||
+++
|
||||
title = "lib"
|
||||
+++
|
||||
### [Art collection](@/art_collection.md)
|
||||
### [Safire memo](@/safire_memo.md)
|
||||
### [Places to eat out (outdated)](@/places_to_eat_out.md)
|
||||
### [Two hard things](@/two_hard_things.md)
|
||||
### [Visual thinking](@/visual_thinking.md)
|
25
posixlycorrect/content/meet.md
Normal file
25
posixlycorrect/content/meet.md
Normal file
|
@ -0,0 +1,25 @@
|
|||
+++
|
||||
title = "meet"
|
||||
+++
|
||||
<style>
|
||||
#meeting-button {
|
||||
background: none;
|
||||
border: none;
|
||||
color: rgb(252, 147, 0);
|
||||
text-decoration: bold;
|
||||
cursor: pointer;
|
||||
padding: 5px;
|
||||
font-size: 16px;
|
||||
border: 1px solid rgb(252, 147, 0);
|
||||
border-radius: 0;
|
||||
font-family: Liberation Mono;
|
||||
}
|
||||
</style>
|
||||
|
||||
<button id="meeting-button" onclick="window.open('https://meet.posixlycorrect.com/', '_blank')">
|
||||
Start meeting!
|
||||
</button>
|
||||
|
||||
---
|
||||
|
||||
If you haven't been granted access, <a href="https://wiki.posixlycorrect.com/wiki/Requesting_meet_access" target="_blank">click here to request access</a></li>
|
76
posixlycorrect/content/places_to_eat_out.md
Normal file
76
posixlycorrect/content/places_to_eat_out.md
Normal file
|
@ -0,0 +1,76 @@
|
|||
+++
|
||||
title = "places_to_eat_out"
|
||||
+++
|
||||
<ul id="randomize-list">
|
||||
<li>Olive Garden</li>
|
||||
<li>La Hacienda Mexicana</li>
|
||||
<li>Wings on Fire</li>
|
||||
<li>La 45</li>
|
||||
<li>El Higuerón</li>
|
||||
<li>La Casona de Laly</li>
|
||||
<li>Pizza Hut</li>
|
||||
<li>Spoon</li>
|
||||
<li>Casa Rojas</li>
|
||||
<li>Neko Sushi</li>
|
||||
<li>Fitos</li>
|
||||
<li>Cosí</li>
|
||||
<li>La Caverna de Monto</li>
|
||||
<li>Cantón</li>
|
||||
<li>Ichiraku Sushi</li>
|
||||
<li>Taquería Taquitos</li>
|
||||
<li>95 Grados</li>
|
||||
<li>Ciros</li>
|
||||
<li>Family Pizza</li>
|
||||
</ul>
|
||||
|
||||
<script>
|
||||
// Function to randomize an array using the Fisher-Yates algorithm
|
||||
function shuffleArray(array) {
|
||||
for (let i = array.length - 1; i > 0; i--) {
|
||||
const j = Math.floor(Math.random() * (i + 1));
|
||||
[array[i], array[j]] = [array[j], array[i]];
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
// Get the list element by its ID
|
||||
const listElement = document.getElementById('randomize-list');
|
||||
|
||||
// Function to randomize the list
|
||||
function randomizeList() {
|
||||
// Get the list items from the list element
|
||||
const listItems = Array.from(listElement.getElementsByTagName('li'));
|
||||
|
||||
// Randomize the order of list items
|
||||
const randomizedList = shuffleArray(listItems);
|
||||
|
||||
// Clear the existing list
|
||||
listElement.innerHTML = '';
|
||||
|
||||
// Append the randomized list items back to the list element
|
||||
randomizedList.forEach((item) => {
|
||||
listElement.appendChild(item);
|
||||
});
|
||||
}
|
||||
|
||||
// Create a button element
|
||||
const button = document.createElement('button');
|
||||
button.textContent = 'Randomize!';
|
||||
button.style.background = 'none';
|
||||
button.style.border = 'none';
|
||||
button.style.color = 'rgb(252, 147, 0)';
|
||||
button.style.textDecoration = 'bold';
|
||||
button.style.cursor = 'pointer';
|
||||
button.style.padding = '5';
|
||||
button.style.fontSize = '18px';
|
||||
button.style.border = '1px solid rgb(252, 147, 0)';
|
||||
button.style.borderRadius = '0';
|
||||
button.style.fontFamily = 'Liberation Mono';
|
||||
button.addEventListener('click', randomizeList);
|
||||
|
||||
// Insert the button before the list element
|
||||
listElement.parentNode.insertBefore(button, listElement);
|
||||
|
||||
// Randomize the list initially
|
||||
randomizeList();
|
||||
</script>
|
54
posixlycorrect/content/safire_memo.md
Normal file
54
posixlycorrect/content/safire_memo.md
Normal file
|
@ -0,0 +1,54 @@
|
|||
+++
|
||||
title = "safire_memo"
|
||||
+++
|
||||
|
||||
```txt
|
||||
To : H. R. Haldeman
|
||||
From: Bill Safire July 18, 1969.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
IN EVENT OF MOON DISASTER:
|
||||
|
||||
Fate has ordained that the men who went to the moon to
|
||||
explore in peace will stay on the moon to rest in peace.
|
||||
|
||||
These brave men, Neil Armstrong and Edwin Aldrin, know
|
||||
that there is no hope for their recovery. But they also know that there
|
||||
is hope for mankind in their sacrifice.
|
||||
|
||||
These two men are laying down their lives in mankind's
|
||||
most noble goal: the search for truth and understanding.
|
||||
|
||||
They will be mourned by their families and friends; they
|
||||
will be mourned by their nation; they will be mourned by the people of
|
||||
the world; they will be mourned by a Mother Earth that dared send two
|
||||
of her sons into the unknown.
|
||||
|
||||
In their exploration, they stirred the people of the world to
|
||||
feel as one; in their sacrifice, they bind more tightly the brotherhood
|
||||
of man.
|
||||
|
||||
In ancient days, men looked at stars and saw their heroes in
|
||||
the constellations. In modern times, we do much the same, but our heroes
|
||||
are epic men of flesh and blood.
|
||||
|
||||
Others will follow, and surely find their way home. Man's
|
||||
search will not be denied. But these men were the first, and they
|
||||
will remain the foremost in our hearts.
|
||||
|
||||
For every human being who looks up at the moon in the
|
||||
nights to come will know that there is some corner of another world
|
||||
that is forever mankind.
|
||||
|
||||
PRIOR TO THE PRESIDENT'S STATEMENT:
|
||||
|
||||
The President should telephone each of the widows -to-be.
|
||||
|
||||
AFTER THE PRESIDENT'S STATEMENT, AT THE POINT WHEN NASA
|
||||
ENDS COMMUNICATIONS WITH THE MEN:
|
||||
|
||||
A clergyman should adopt the same procedure as a burial at
|
||||
sea, commending their souls to "the deepest of the deep," concluding
|
||||
with the Lord's Prayer.
|
||||
```
|
10
posixlycorrect/content/two_hard_things.md
Normal file
10
posixlycorrect/content/two_hard_things.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
+++
|
||||
title = "two hard things in Computer Science"
|
||||
+++
|
||||
|
||||
```txt
|
||||
There are only two hard things in Computer Science: cache invalidation and
|
||||
naming things.
|
||||
|
||||
-- Phil Karlton
|
||||
```
|
21
posixlycorrect/content/visual_thinking.md
Normal file
21
posixlycorrect/content/visual_thinking.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
+++
|
||||
title = "visual thinking"
|
||||
+++
|
||||
|
||||
```txt
|
||||
When I was a kid growing up in Far Rockaway, I had a friend named Bernie Walker.
|
||||
|
||||
We both had "labs" at home, and we would do various "experiments".
|
||||
|
||||
One time, we were discussing something - we must have been 11 or 12 at the time -
|
||||
and I said, "But thinking is nothing but talking to yourself inside."
|
||||
|
||||
"Oh yeah?" Bernie said. "Do you know the crazy shape of the crankshaft in a car?”
|
||||
|
||||
"Yeah, what of it?"
|
||||
|
||||
"Good. Now tell me: how did you describe it when you were talking to yourself?"
|
||||
So I learned from Bernie that thoughts can be visual as well as verbal.
|
||||
|
||||
-- Richard Feynman
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue