GNU Chess Updated +Created
Both chess engine and a CLI chess UI. As an engine it is likely irrelevant compared to Stockfish as of 2020. TODO: does the UI support Universal Chess Interface?
Cool project history though. Started before the GNU Project itself, and became one of the first packages.
GNU Compiler Collection Updated +Created
GNU Debugger Updated +Created
Just add GDB Dashboard, and you're good to go.
GNU go Updated +Created
GNU make Updated +Created
GNU parallel Updated +Created
The author Ole Tange answers every question about it on Stack Exchange. What a legend!
This program makes you respect GNU make a bit more. Good old make with -j can not only parallelize, but also take in account a dependency graph.
Some examples under:
man parallel_exampes
To get the input argument explicitly job number use the magic string {}, e.g.:
printf 'a\nb\nc\n' | parallel echo '{}'
sample output:
a
b
c
To get the job number use {#} as in:
printf 'a\nb\nc\n' | parallel echo '{} {#}'
sample output:
a 1
b 2
c 3
c 3
{%} contains which thread the job running in, e.g. if we limit it to 2 threads with -j2:
printf 'a\nb\nc\nd\n' | parallel -j2 echo '{} {#} {%}'
sample output:
a 1 1
b 2 1
c 3 2
d 4 1
The percent must be a reference to "split the inputs module the number of workers", and modulo uses the % symbol in many programming languages such as C.
To pass multiple CLI argments per command you can use -X e.g.:
printf 'a\nb\nc\nd\n' | parallel -j2 -X echo '{} {#} {%}'
sample output:
a b 1 1
c d 2 2
GNU Privacy Guard Updated +Created
Generate public private key, test encrypt and test decrypt:
# Create your pubkey.
gpg --gen-key
gpg --armor --output pubkey.gpg --export <myemail>

# Encrypt using someone's pubkey.
gpg --import pubkey2.gpg
echo 'hello world' > hello.txt
gpg --output hello.txt.gpg --encrypt --recipient <other-email> hello.txt

# Double check it is not plaintext in the encrypted message.
grep hello hello.txt.gpg

# Decrypt.
gpg --output hello.decrypt.txt --decrypt --recipient <myemail> hello.txt.gpg
diff -u hello.decrypt.txt hello.txt
GNU screen Updated +Created
Most important things to know:
  • kill window: Ctrl + A K
GNU Taler Updated +Created
Centralized system that still attempts some level of privacy.
In it, a central bank issue tokens that are stored offline in your cell phone, a bit like cash bank notes.
When you take those tokens, a corresponding amount gets removed from your bank account, a bit like cash bank notes.
When a transaction is made, tokens are put into a spent token list via central API, and cannot be double spent thereafter. The corresponding ammount is then added to the bank account of the receiver. This also means that offline transactions are not possible.
When emitting, the bank signs the token with their private key. When spending, the bank checks that signature.
How do we prevent the bank from logging which token goes to which user besides trusting that they are running the software we whink they are running? Notably, couldn't timing be used to identify that?