aboutsummaryrefslogtreecommitdiff
path: root/research
diff options
context:
space:
mode:
Diffstat (limited to 'research')
-rw-r--r--research/android.md24
-rw-r--r--research/archive.md105
-rw-r--r--research/bike.md14
-rw-r--r--research/computing.md8
-rw-r--r--research/computing/git.md (renamed from research/git.md)36
-rw-r--r--research/computing/libreboot.md (renamed from research/libreboot.md)35
-rw-r--r--research/computing/services.md497
-rw-r--r--research/computing/suckless.md58
-rw-r--r--research/computing/suckless/messaging.md103
-rw-r--r--research/computing/suckless/sites.md102
-rw-r--r--research/computing/suckless/virtual.md101
-rw-r--r--research/computing/suckless/virtual/screenshot.pngbin0 -> 74886 bytes
-rw-r--r--research/computing/thinkpad.md (renamed from research/thinkpad.md)39
-rw-r--r--research/computing/token.md78
-rw-r--r--research/data.md34
-rw-r--r--research/devops.md16
-rw-r--r--research/economics.md8
-rw-r--r--research/economics/valor-social.md339
-rw-r--r--research/economics/valor-social/valor-social.dvibin0 -> 26880 bytes
-rw-r--r--research/economics/valor-social/valor-social.pdfbin0 -> 94851 bytes
-rw-r--r--research/economics/valor-social/valor-social.tex158
-rw-r--r--research/epistemologia.md36
-rw-r--r--research/hardened.md44
-rw-r--r--research/library.md73
-rw-r--r--research/openwrt.md64
-rw-r--r--research/panc.md45
-rw-r--r--research/python.md225
-rw-r--r--research/radio.md10
-rw-r--r--research/raspberrypi.md161
-rw-r--r--research/readers.md123
-rw-r--r--research/security.md33
-rw-r--r--research/smartphone.md198
-rw-r--r--research/token.md52
-rw-r--r--research/torrent.md15
34 files changed, 1503 insertions, 1331 deletions
diff --git a/research/android.md b/research/android.md
deleted file mode 100644
index 4257f7a..0000000
--- a/research/android.md
+++ /dev/null
@@ -1,24 +0,0 @@
-[[!meta title="Android"]]
-
-Some bits on android development.
-
-## Basic
-
-Download tools and put inside `~/Android/tools`.
-
- sudo apt install android-sdk # grab all dependencies
- cd ~/Android/tools
- bin/android
-
-## Issues
-
-* http://stackoverflow.com/questions/41173477/android-cant-find-sdkmanager-jar
-
-## References
-
-* [Anbox - Android in a Box](https://anbox.io/).
-* [Build Android apps with Debian: apt install android-sdk](https://bits.debian.org/2017/03/build-android-apps-with-debian.html).
-* Android emulator inside a virtual machine:
- * https://packages.debian.org/stretch/android-sdk
- * http://xmodulo.com/how-to-run-android-emulator-on-ubuntu-or-debian.html
- * https://developer.android.com/studio/install.html
diff --git a/research/archive.md b/research/archive.md
deleted file mode 100644
index 874b724..0000000
--- a/research/archive.md
+++ /dev/null
@@ -1,105 +0,0 @@
-[[!meta title="Archived Research"]]
-
-* Currently archived research.
-* Lista de projetos que já desenvolvi, que atualmente não estão no meu
- horizonte de atividades.
-* Podem ser desarquivados no futuro ou servir de inspiração.
-* Alguns podem ser inclusive passados para frente na linha do [Orfanato de Projetos](https://templates.fluxo.info/orfanato).
-
-## Lista
-
-### Social
-
-* Comunidade "Podíamos!":
- * Um banco de ideias coletivas.
- * Toda a vez que alguém te disser "podíamos fazer tal coisa", sugira para que
- a pessoa sistematize a ideia na comunidade (ou hashtag) "podíamos".
-* Festas:
- * [Silent disco](https://en.wikipedia.org/wiki/Silent_disco).
- * hacknick (hacknique).
- * colar nalgum parque com máquinas, livros e brinquedos e fazer um piquenique.
- * alguns parques tem mesas boas para trampar confortavelmente.
- * otima opção para dias ensolarados e sair das cavernas de concreto.
-* Depósitos urbanos comunitários: ecopontos com possibilidade de retirada de materiais.
-
-### Hardware
-
-* Algema e corrente Kensington.
-
-### Misc software
-
-* Wayland with tiling compositor:
- * [Way Cooler](http://way-cooler.org/).
- * [Sway](http://swaywm.org/).
-* [uMatrix](https://github.com/gorhill/uMatrix).
-* [antigen](https://github.com/zsh-users/antigen), [vundle](https://github.com/VundleVim/Vundle.vim), etc.
-* [Kaitai Struct: declarative binary format parsing language](http://kaitai.io/).
-* [Haiku Project](https://www.haiku-os.org/).
-* [asciinema - Record and share your terminal sessions, the right way](https://asciinema.org/) ([client](https://packages.debian.org/jessie/asciinema) and server).
-* [HTTP Prompt - An interactive command-line HTTP client](http://http-prompt.com/).
-* [mmv](https://packages.debian.org/jessie/mmv) ([manpage](https://ss64.com/bash/mmv.html)).
-* [Unikernel](https://en.wikipedia.org/wiki/Unikernel).
-* Distributed computing clients (distributed-net, boinc, folding@home with [origami](https://packages.debian.org/stable/origami), etc).
-
-### Distros
-
-* [GoboLinux - the alternative Linux distribution](http://gobolinux.org/).
-* [OpenBSD vmm](https://marc.info/?l=openbsd-tech&m=149191695821636&w=2).
-* [Minix3](http://www.minix3.org/).
-* [Sabotage - the hardcore let's be oldschool UNIX experience](http://sabotage.tech/).
-* [netboot.xyz](https://netboot.xyz/).
-* [iPXE - open source boot firmware](http://ipxe.org/).
-* [LEDE](https://lede-project.org/start).
-
-### Multimedia
-
-* mopidy/mpdris:
- * plugins like https://packages.debian.org/stretch/mopidy-podcast
- * https://packages.debian.org/jessie/mopidy
- * https://github.com/acrisci/playerctl
- * https://packages.debian.org/jessie/mpdris2
- * https://packages.debian.org/stretch/mpris-remote
-
-### DevOPS
-
-* onion smtp:
- * https://www.void.gr/kargig/blog/2014/05/10/smtp-over-hidden-services-with-postfix/
- * https://tech.immerda.ch/2016/12/ehlo-onion/
- * https://github.com/riseupnet/onionmx
-* tor: ooniprobe, lepidopter, onionpi (tor, hostapd and iptables).
-* php7-fpm:
- * https://serversforhackers.com/video/apache-and-php-fpm
- * http://www.binarytides.com/setup-apache-php-fpm-mod-proxy-fcgi-ubuntu/
-
- <FilesMatch \.php$>
- SetHandler "proxy:unix:/run/php/php7.1-fpm.sock|fcgi://localhost:9000";
- </FilesMatch>
-
-### Services
-
-* [Saravea](https://web.archive.org/web/*/saravea.net).
-* [Calendário de Movimentos Sociais](https://web.archive.org/web/*/calendario.cc).
-* [Resource Sharing Protocol / Metadata](https://rsp.fluxo.info).
-* [Bootless](https://bootless.fluxo.info).
-* [Clube da Muamba](https://templates.fluxo.info/muamba/).
-* Do [Escritório Sem Login](https://escritorio.fluxo.info):
- * [Lembrador de Eventos](https://lembrador.fluxo.info), cujo [código](https://git.fluxo.info/?p=drupal/reminder.git;a=summary) precisa ser retomado para que o serviço entre no ar.
- * [Encurtador Saravento](https://encurtador.fluxo.info).
- * [Agendador Saravento](https://agendador.fluxo.info).
-
-### Development
-
-* [Firma](https://firma.fluxo.info).
-* [Simplepkg](https://simplepkg.fluxo.info) e [Slack](https://slack.fluxo.info).
-* [Bootex](https://bootex.fluxo.info).
-* [Gnudenberg](https://gnuden.fluxo.info).
-* [Observatory by Mozilla](https://observatory.mozilla.org/) and [CAA checking becomes mandatory for SSL/TLS certificates](https://ma.ttias.be/caa-checking-becomes-mandatory-ssltls-certificates/).
-* [Mapzen](https://mapzen.com).
-* Ebook 'playlist':
- * with copy capabilities.
- * pdf and djvu conversion to epub.
-* Calendar compiler:
- * public, suckless, responsive, RSS.
- * remind, ical.
- * multiple sources and categories.
- * [ical2html](https://packages.debian.org/stable/ical2html).
diff --git a/research/bike.md b/research/bike.md
deleted file mode 100644
index e1fa26c..0000000
--- a/research/bike.md
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!meta title="Bicicletas"]]
-
-## Estante energética
-
-Uma pesquisa sobre estantes de bicicletas (rolos de treino) geradoras de eletricidade!
-
-### Material necessário
-
-* Diversas [referências](https://links.fluxo.info/tags/bicicleta+eletricidade).
-* Rolo de treino.
-* Bateria automotiva.
-* Inversor.
-* Circuito carregador.
-* Motor elétrico.
diff --git a/research/computing.md b/research/computing.md
new file mode 100644
index 0000000..a8469c8
--- /dev/null
+++ b/research/computing.md
@@ -0,0 +1,8 @@
+[[!meta title="Computing"]]
+[[!tag computing]]
+
+Research on computing.
+
+## Subpages
+
+[[!inline pages="page(research/computing*)" archive="yes"]]
diff --git a/research/git.md b/research/computing/git.md
index 9526ee0..f59f38c 100644
--- a/research/git.md
+++ b/research/computing/git.md
@@ -98,38 +98,4 @@ groups for each project so you're not bound to the `git` group.
- [How to clone and share a Git repository over SSH](http://linuxaria.com/pills/how-to-clone-and-share-a-git-repository-over-ssh?lang=en)
- [Git - Getting Git on a Server](https://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server).
- [Git - Setting Up the Server](https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server).
-
-Push to deploy
---------------
-
-* https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
-* https://github.com/blog/1994-git-2-4-atomic-pushes-push-to-deploy-and-more
-* http://krisjordan.com/essays/setting-up-push-to-deploy-with-git
-* https://petecoop.co.uk/blog/git-2-3-push-deploy
-* http://superuser.com/questions/230694/how-can-i-push-a-git-repository-to-a-folder-over-ssh
-* https://devcenter.heroku.com/articles/git
-* https://github.com/blog/1957-git-2-3-has-been-released (push-to-deploy)
-* https://github.com/git/git/blob/v2.3.0/Documentation/config.txt#L2155
-* http://stackoverflow.com/questions/1764380/push-to-a-non-bare-git-repository
-* http://bitflop.com/tutorials/git-bare-vs-non-bare-repositories.html
-
-Further development
--------------------
-
-* See [utils-git](https://git.fluxo.info/utils-git/about/) repository for useful scripts and plugins.
-* [gitly self-hosted](https://gitly.io).
-* [Git Large File Storage - Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.](https://git-lfs.github.com/) / [#792075 - ITP: git-lfs -- Git Large File Support. An open source Git extension for versioning large files - Debian Bug report logs](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=792075).
-* signed commits:
- * check using gpgv?
- * [Validating other keys on your public keyring](https://www.gnupg.org/gph/en/manual/x334.html)
- * https://git-annex.branchable.com/tips/using_signed_git_commits/
- * http://stackoverflow.com/questions/17371955/verifying-signed-git-commits
- * https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work
- * https://mikegerwitz.com/papers/git-horror-story.html
-* Push-to-deploy plugin:
- * http://superuser.com/questions/230694/how-can-i-push-a-git-repository-to-a-folder-over-ssh
- * https://devcenter.heroku.com/articles/git
- * https://github.com/blog/1957-git-2-3-has-been-released (push-to-deploy)
- * https://github.com/git/git/blob/v2.3.0/Documentation/config.txt#L2155
- * http://stackoverflow.com/questions/1764380/push-to-a-non-bare-git-repository
- * http://bitflop.com/tutorials/git-bare-vs-non-bare-repositories.html
+- The [utils-git](https://git.fluxo.info/utils-git/about/) repository for useful scripts and plugins.
diff --git a/research/libreboot.md b/research/computing/libreboot.md
index 73d8c39..fa0ec98 100644
--- a/research/libreboot.md
+++ b/research/computing/libreboot.md
@@ -6,17 +6,17 @@ Also check the [additional references](https://links.fluxo.info/tags/libreboot).
From [Libreboot – Installation instructions](https://libreboot.org/docs/install/index.html):
- NOTE: if running flashrom -p internal for software based flashing, and you get
- an error related to /dev/mem access, you should reboot with iomem=relaxed
- kernel parameter before running flashrom, or use a kernel that has
- CONFIG_STRICT_DEVMEM not enabled.
+> NOTE: if running flashrom -p internal for software based flashing, and you get
+> an error related to /dev/mem access, you should reboot with iomem=relaxed
+> kernel parameter before running flashrom, or use a kernel that has
+> CONFIG_STRICT_DEVMEM not enabled.
Or you might get errors like this:
user@x60s:~/code/libreboot/libreboot_r20160907_util/flashrom/i686$ sudo ./flashrom_lenovobios_sst -p internal -r factory.bin
flashrom v0.9.9-unknown on Linux 4.9.0-2-686-pae (i686)
flashrom is free software, get the source code at https://flashrom.org
-
+
Calibrating delay loop... OK.
Found chipset "Intel ICH7M".
Enabling flash write... Error accessing ICH RCRB, 0x4000 bytes at 0xfed1c000
@@ -24,7 +24,7 @@ Or you might get errors like this:
FAILED!
FATAL ERROR!
Error: Programmer initialization failed.
- user@x60s:~/code/libreboot/libreboot_r20160907_util/flashrom/i686$ sudo ./flashrom_lenovobios_macronix -p internal -r factory.bin
+ user@x60s:~/code/libreboot/libreboot_r20160907_util/flashrom/i686$ sudo ./flashrom_lenovobios_macronix -p internal -r factory.bin
## Pre-compiled binaries
@@ -60,17 +60,18 @@ This is how I've done. The actual procedure might change without notice :P
* Backup the original firmware [like said](https://www.coreboot.org/Board:lenovo/x60/Installation#Back_up_the_original_proprietary_firmware).
* Then flash the new ROM as [said here](https://libreboot.org/docs/install/#flashrom_lenovobios).
-Note this [funny note](https://en.wikibooks.org/wiki/Libreboot/Install/ThinkPad_X60_and_T60) on customized and solitary proprietary software:
+Note this [funny note](https://en.wikibooks.org/wiki/Libreboot/Install/ThinkPad_X60_and_T60)
+on customized and solitary proprietary software:
- While backing up the proprietary BIOS image might be construed as "endorsing"
- proprietary software: This BIOS image is unique to every motherboard. It will
- be impossible to restore the original BIOS once it is lost. Back it up now or
- you will lose it forever. Do not take this decision lightly.
+> While backing up the proprietary BIOS image might be construed as "endorsing"
+> proprietary software: This BIOS image is unique to every motherboard. It will
+> be impossible to restore the original BIOS once it is lost. Back it up now or
+> you will lose it forever. Do not take this decision lightly.
### BIOS Backup
user@x60s:~/code/libreboot/libreboot_r20160907_util/flashrom/i686$ sudo ./flashrom_lenovobios_sst -p internal -r factory.bin
- user@x60s:~/code/libreboot/libreboot_r20160907_util/flashrom/i686$ sudo ./flashrom_lenovobios_macronix -p internal -r factory.bin
+ user@x60s:~/code/libreboot/libreboot_r20160907_util/flashrom/i686$ sudo ./flashrom_lenovobios_macronix -p internal -r factory.bin
### Flashing
@@ -82,7 +83,7 @@ Note this [funny note](https://en.wikibooks.org/wiki/Libreboot/Install/ThinkPad_
Updated BUC.TS=1 - 64kb address ranges at 0xFFFE0000 and 0xFFFF0000 are swapped
flashrom v0.9.9-unknown on Linux 4.9.0-2-686-pae (i686)
flashrom is free software, get the source code at https://flashrom.org
-
+
Calibrating delay loop... OK.
Found chipset "Intel ICH7M".
Enabling flash write... WARNING: SPI Configuration Lockdown activated.
@@ -112,14 +113,14 @@ Note this [funny note](https://en.wikibooks.org/wiki/Libreboot/Install/ThinkPad_
DO NOT REBOOT OR POWEROFF!
flashrom v0.9.9-unknown on Linux 4.9.0-2-686-pae (i686)
flashrom is free software, get the source code at https://flashrom.org
-
+
Calibrating delay loop... OK.
Found chipset "Intel ICH7M".
Enabling flash write... WARNING: SPI Configuration Lockdown activated.
OK.
No EEPROM/flash device found.
Note: flashrom can never write if the flash chip isn't found automatically.
- user@x60s:~/code/libreboot/libreboot_r20160907_util$
+ user@x60s:~/code/libreboot/libreboot_r20160907_util$
Then reboot the machine, passing "iomem=relaxed" into the kernel command line. Then run the
second flash:
@@ -128,7 +129,7 @@ second flash:
Mode selected: i945lenovo_secondflash
flashrom v0.9.9-unknown on Linux 4.9.0-2-686-pae (i686)
flashrom is free software, get the source code at https://flashrom.org
-
+
Calibrating delay loop... OK.
coreboot table found at 0x7be9f000.
Found chipset "Intel ICH7M".
@@ -141,7 +142,7 @@ second flash:
Using LPC bridge 8086:27b9 at 0000:1f.00
Current BUC.TS=1 - 64kb address ranges at 0xFFFE0000 and 0xFFFF0000 are swapped
Updated BUC.TS=0 - 128kb address range 0xFFFE0000-0xFFFFFFFF is untranslated
- user@x60s:~/code/libreboot/libreboot_r20160907_util$
+ user@x60s:~/code/libreboot/libreboot_r20160907_util$
## Issues
diff --git a/research/computing/services.md b/research/computing/services.md
new file mode 100644
index 0000000..15b5c8d
--- /dev/null
+++ b/research/computing/services.md
@@ -0,0 +1,497 @@
+[[!meta title="Free and Open Source Services"]]
+
+An awesome list of FOSS "services".
+
+This is a cureted FOSS listing for service hosting. Staying on this list doesn't mean
+that a given software is recommended or audited in the spirit of the [Franklin
+Street Statement on Freedom and Network
+Services](http://wiki.p2pfoundation.net/Franklin_Street_Statement_on_Freedom_and_Network_Services).
+
+What to look for when chosing:
+
+1. Portability: how easy is to export and import data into a service?
+2. Maintenance: how easy is to install, upgrade, migrate and restore the service?
+3. Security: how secure the service look like? How upstream handles security? What's the service security track record?
+4. Stability: does the system is stable or is full of bugs?
+5. Maturity: does the architecture and data model of the service changes very often? Are there a community and many developers?
+
+Sometimes is better not run a service than to do it poorly.
+
+Messaging
+---------
+
+Misc:
+
+* [Actor - Open-Source messaging with mobile apps](https://actor.im/).
+* [Minds · GitHub](https://github.com/Minds).
+* [WhisperSystems/TextSecure-Browser](https://github.com/WhisperSystems/TextSecure-Browser).
+* [Chat simples](https://drupal.org/project/chatroom).
+* [Let's Chat](https://sdelements.github.io/lets-chat/).
+* [Crypptocat](https://crypto.cat/): not recommended due to a problematic architecture, review in the future.
+* [Mumble](http://mumble.sourceforge.net).
+* Asterisk/SIP: puppet-asterisk: [1](https://github.com/camptocamp/puppet-asterisk) e [2](https://github.com/AhmedElGamil/puppet-asterisk).
+* [RTC quick start](http://www.rtcquickstart.org).
+* [Secushare](http://secushare.org).
+* [Retroshare](http://retroshare.sourceforge.net).
+* [simpleWebRTC](http://simplewebrtc.com).
+* [Kaiwa](http://getkaiwa.com/).
+* [Tox](https://tox.im/).
+* [CaliOpen](https://caliopen.org/).
+* [ricochet-im - Anonymous peer-to-peer instant messaging](https://github.com/ricochet-im/ricochet).
+* [BigBlue Button](http://www.bigbluebutton.org).
+* [Rocket.Chat](https://rocket.chat/#!).
+* [Mattermost](https://about.mattermost.com/).
+* [Riot. Break through](https://riot.im/).
+* [Signal Server](https://github.com/whispersystems/signal-server).
+* [Wire Server](https://github.com/wireapp/wire-server).
+* [Katzenpost](https://katzenpost.mixnetworks.org/).
+* [Zulip](https://zulipchat.com/).
+
+Jabber:
+
+* [ejabberd](http://packages.debian.org/stable/ejabberd) ([puppet-ejabberd](https://git.fluxo.info/?p=puppet-ejabberd.git)).
+* [prosody](http://packages.debian.org/stable/prosody).
+* [puppet-openfire](https://github.com/ghoneycutt/puppet-openfire).
+* [jappix](https://jappix.com/).
+* [jsxc - Real-time xmpp chat application with video calls, file transfer and encrypted communication](https://github.com/jsxc/jsxc/).
+
+IRC gateway:
+
+* [The Lounge](https://thelounge.chat).
+* [qwebirc](http://www.qwebirc.org) ([puppet-qwebirc](https://git.fluxo.info/?p=puppet-qwebirc.git)).
+* [iris](http://www.atheme.net/iris.html).
+* [cgiirc](http://cgiirc.org).
+
+Bots (IRC, Jabber e StatusNET/Twitter):
+
+* Gateways with proprietary services:
+ * Twitter
+ * [twitterircbot](https://code.google.com/p/twitterircbot/).
+ * [python-twitter-bot](https://code.google.com/p/python-twitter-bot/).
+ * [Twitter IRC Bot](http://wiki.projectnerdhaus.com/Twitter_IRC_Bot).
+ * [TTYtter](http://www.floodgap.com/software/ttytter).
+ * [Rainbowstream](http://www.rainbowstream.org/).
+ * WhatsApp:
+ * [yowsup](https://github.com/tgalal/yowsup).
+* [IRC](http://packages.debian.org/search?keywords=irc+bot&searchon=all&suite=stable&section=all)
+ * [supybot](http://packages.debian.org/squeeze/supybot) ([handbook](http://supybook.fealdia.org/), [plugin doc index](http://ubottu.com/stdin/supydocs/plugins.html), [plugins interessantes](http://www.kreativekorp.com/software/supybot/), [default plugins](http://whatnwhat.blogspot.com.br/2011/06/list-of-default-supybot-plugins-along.html)). Ver também [documentação dos plugins](http://supybot.fr.cr/doc/use/plugins/index.html), [documentação do Limnoria](http://supybot.fr.cr/doc/index.html) e [artigo no IRC Wiki](http://www.irc-wiki.org/Supybot).
+ * [MeetBot](http://wiki.debian.org/MeetBot) ([manual](http://meetbot.debian.net/Manual.html#administrators), [instalação](https://altinukshini.wordpress.com/2011/09/10/how-to-setup-meetbot/)).
+ * [supybot-git](http://mueller.panopticdev.com/2011/08/supybot-git-ircbot-plugin-for-git.html) ([código](https://github.com/mmueller/supybot-git)), dependências: [python-mock](http://packages.debian.org/stable/python-mock) e [python-git](http://packages.debian.org/stable/python-git).
+ * [supybot-twitter](https://github.com/rubinlinux/supybot-twitter) (requer [python-twitter](http://packages.debian.org/jessie/python-twitter)).
+ * [gozerbot](http://packages.debian.org/squeeze/gozerbot).
+ * [rss2irc](http://packages.debian.org/wheezy/rss2irc).
+ * [blootbot](http://packages.debian.org/sid/blootbot).
+ * [kgb-bot](http://packages.debian.org/squeeze/kgb-bot) / [kgb-client-git](http://packages.debian.org/squeeze/kgb-client-git).
+ * [phenny](http://inamidst.com/phenny/).
+ * [Sopel](https://sopel.chat/).
+ * [Errbot](http://errbot.io/).
+
+Infostructure
+-------------
+
+* [DNSCrypt](https://www.dnscrypt.org/).
+* DNS-over-TLS like [hddemux](https://0xacab.org/dkg/hddemux).
+* Dynamic DNS:
+ * [heartbeat](https://www.mirbsd.org/cvs.cgi/contrib/code/heartbeat/) ([sobre](https://www.mirbsd.org/permalinks/wlog-10_e20130520-tg.htm#e20130520-tg_wlog-10)).
+ * With nsupdate: [1](http://linux.yyz.us/nsupdate/), [2](http://linux.yyz.us/dns/ddns-server.html), [3](http://caunter.ca/nsupdate.txt), [4](http://www.rtfm-sarl.ch/articles/using-nsupdate.html), [5](https://github.com/skx/dhcp.io/).
+* Keyserver: [puppet-onak](http://git.puppet.immerda.ch/?p=module-onak.git).
+* OpenID Provider:
+ * [Run your own identity provider](http://wiki.openid.net/w/page/12995226/Run%20your%20own%20identity%20server).
+ * [php-openid](https://github.com/openid/php-openid).
+ * [simpleid](http://simpleid.koinic.net/).
+ * [OpenID URL](https://drupal.org/project/openidurl).
+ * [simplesamlphp](http://packages.debian.org/stable/web/simplesamlphp).
+* Proxies and load balancing like [Deflect](http://wiki.deflect.ca).
+* [Ethereum Frontier](https://www.ethereum.org/).
+* Software repositories (apt, f-droid, etc).
+* Censorship circunvention:
+ * [shadowsocks](https://github.com/shadowsocks/shadowsocks).
+ * [lantern](https://github.com/madeye/lantern).
+ * [meek](https://trac.torproject.org/projects/tor/wiki/doc/meek).
+
+Social networking
+-----------------
+
+* [Fediverse](https://fediverse.party/) ecosystem.
+* [Agorakit, a groupware for citizens](https://philippejadin.github.io/agorakit/).
+* [Crabgrass](https://labs.riseup.net/code/projects/show/crabgrass).
+* [Diaspora](https://github.com/diaspora/diaspora).
+* [buddycloud](http://buddycloud.com/) ([desenvolvimento](https://buddycloud.org) / [pacote](http://packages.debian.org/sid/buddycloud-server)).
+* [BuddyPress](http://wp-brasil.org/buddypress).
+* [GNU social and GNU FM](https://gnu.io/) ([public instances](http://www.fediverse.org/)).
+* [qvitter · GitHub](https://github.com/hannesmannerheim/qvitter).
+* [kune.cc](http://kune.cc/).
+* [Tent](http://tent.io).
+* [Newebe](http://newebe.org).
+* [Shapado](http://shapado.com) ([codigo](https://github.com/ricodigo/shapado), [mirror](https://gitorious.org/shapado)), like [other stackoverflow clones](http://meta.stackoverflow.com/questions/2267/stack-overflow-clones).
+* [pump.io](http://pump.io).
+* [Friendica](http://friendica.com).
+* [StatusNet](http://status.net).
+* [Incoma](https://github.com/Incoma/Incoma).
+* [Sneer](https://github.com/klauswuestefeld/sneer).
+* [Noosfero](http://noosfero.org/).
+* [Mastodon](https://mastodon.social) ([public instances](https://instances.mastodon.xyz/)).
+* Democracy: [Liquid Democracy](https://wiki.piratenpartei.de/Liquid_Democracy) / [Liquid Feedback](http://liquidfeedback.org).
+* [Briar](http://briar.sourceforge.net).
+* [Twister](http://twister.net.co/).
+* [RedMatrix](https://redmatrix.me/).
+* [Hubzilla](http://hubzilla.org/).
+* [commento: A lightweight, open source, tracking-free comment engine alternative to Disqus](https://github.com/adtac/commento)
+* Calendar:
+ * [Demosphere](https://demosphere.net/en/content/download) with [browser extension](https://demosphere.net/en/content/browser-extension).
+ * [Gancio](https://gancio.org/): a shared agenda for local communities.
+
+Timebanking
+-----------
+
+* [GitHub - wadobo/timebank: Timebank is a web application in which users can exchange services using time as currency.](https://github.com/wadobo/timebank).
+* [GitHub - hourbank/timebank](https://github.com/hourbank/timebank).
+* [Timebanking Software Platforms - P2P Foundation](https://wiki.p2pfoundation.net/Timebanking_Software_Platforms).
+
+Maps
+----
+
+* [Ushahidi](http://www.ushahidi.com).
+
+Torrent
+-------
+
+* [vivatorrent](https://svn.sarava.org/viewvc/vivatorrent/).
+
+Security and privacy
+--------------------
+
+* Tor (relay, bridge and exit nodes).
+* VPN (encrypted proxies and tunnels).
+* [ngrok - secure introspectable tunnels to localhost](https://ngrok.com/) ([client](https://packages.debian.org/stable/ngrok-client) / [server](https://packages.debian.org/stable/ngrok-server)).
+* [Convergence Notary](https://github.com/moxie0/Convergence/wiki/Running-a-Notary).
+* Webproxy for anonymous navigation with [anon-proxy](http://packages.debian.org/stable/anon-proxy).
+* [I2P](http://www.i2p2.de/).
+* [Freenet](https://mirror4.freenetproject.org).
+* [Gnunet](http://packages.debian.org/stable/gnunet).
+* [Cryptomail](cryptomail).
+* [One-time secret](https://github.com/onetimesecret/onetimesecret).
+* [sshuttle](https://github.com/apenwarr/sshuttle).
+* [ssh-chat](https://github.com/shazow/ssh-chat).
+
+Access
+------
+
+* [iodine](https://wiki.koumbit.net/DnsTunnel) ([pacote](http://packages.debian.org/stable/iodine) / [puppet-iodine](https://labs.riseup.net/code/projects/shared-iodine)).
+* [icmptx](http://packages.debian.org/stable/icmptx).
+* [ptunnel](http://packages.debian.org/stable/ptunnel).
+* [PageKite](https://pagekite.net) ([instruções](https://pagekite.net/wiki/Howto/GNULinux/ConfigureYourSystem/) e [pacote](https://packages.debian.org/stable/pagekite)).
+
+Office
+------
+
+* [Bloom](https://bloom.sh/): [a free and open source Google](https://www.kerkour.fr/blog/bloom-a-free-and-open-source-google/) ([code](https://gitlab.com/bloom42)).
+* [Davros: Personal file storage server](https://github.com/mnutt/davros).
+* [Wekan — open-source kanban](https://wekan.github.io/).
+* [OpenPaaS - An open source Entreprise Social Platform](http://open-paas.org/).
+* [ONLYOFFICE](http://onlyoffice.org/).
+* [WebODF](http://www.webodf.org/).
+* [eXo](http://www.exoplatform.com/).
+* [Owncloud](http://owncloud.org).
+* [Nextcloud](https://nextcloud.com/).
+* [Seafile](https://github.com/haiwen/seafile).
+* [Taiga](https://taiga.io).
+* [Kolab](http://kolab.org/content/overview).
+* [Open webOS](http://openwebosproject.org).
+* [Feng Office](http://www.fengoffice.com/).
+* [SocialCalc](https://www.socialtext.net/open/socialcalc) ([código](https://github.com/audreyt/socialcalc)).
+* [OBM - Open Business Management](http://obm.org).
+* [Etherpad](http://etherpad.org/) ([puppet-etherpad](https://git.fluxo.info/?p=puppet-etherpad.git); [vim-etherpad](https://github.com/guyzmo/vim-etherpad) as a proof-of-concept).
+* [Ethercalc](http://www.ethercalc.org) ([código](https://github.com/audreyt/ethercalc)).
+* [HedgeDoc](https://docs.hedgedoc.org/): create real-time collaborative markdown notes.
+* [HackMD - Collaborative Markdown Knowledge Base](https://hackmd.io/#).
+* [LastCalc Is Open Sourced](http://science.slashdot.org/story/12/03/10/186201/lastcalc-is-open-sourced).
+* [COMT](http://www.co-ment.org/).
+* [UNG Project](http://www.ung-project.org).
+* [Libre Docs](http://libredocs.org).
+* [Gitlab](http://gitlabhq.com) / [Gitorious](http://getgitorious.com) / [Gogs](http://gogs.io) / [klaus: the first Git web viewer that Just Works™](https://github.com/jonashaag/klaus) / [Gitea](https://gitea.io) / [sr.ht](https://meta.sr.ht/).
+* [Flyspray](http://www.flyspray.org/): lightweight, web-based bug tracking system.
+* [Teambox](http://teambox.com/) ([código](https://github.com/teambox/teambox)).
+* Sobby / Infinote (gobby).
+* [Pleft](https://github.com/sander/pleft) / [RdvZ](http://gpl.univ-avignon.fr/rdvz/) / [Nuages](http://nuages.domainepublic.net/nuages/) / [OpenSondage](https://github.com/leblanc-simon/OpenSondage).
+* [Open-Xchange](http://news.slashdot.org/story/13/03/20/1433239/open-xchange-launches-open-source-browser-based-office-suite).
+* [Apertium](http://www.apertium.org/): open source translation tool.
+* [Weblate - web-based translation](https://weblate.org/en/) ([code](https://github.com/WeblateOrg/weblate), [cli](https://packages.debian.org/sid/wlc)).
+* [Amara - pculture/unisubs](https://github.com/pculture/unisubs): subtitling platform.
+* [Seafile](http://seafile.com).
+* [GONG](http://gong.es/).
+* [ASCIIFlow Infinity](http://asciiflow.com/) ([code](https://github.com/lewish/asciiflow2).
+* [eConvenor | Activists, get organised](https://econvenor.org/).
+* [MindMup](https://github.com/mindmup).
+* [Cryptpad](https://beta.cryptpad.fr/).
+* [GNUKhata - Fast Feature rich Free accounting software](http://gnukhata.in/).
+* [draw.io](https://github.com/jgraph/drawio).
+* [helpy](https://github.com/helpyio/helpy/): helpdesk customer support application.
+* [Zammad](https://zammad.org/): web-based, open source user support/ticketing solution.
+* [Discourse](https://www.discourse.org/): "civilized discussion for your community".
+* [mat2 web](https://dustri.org/b/mat2-for-the-web.html).
+
+Finance
+-------
+
+* [Timestrap: time tracking and invoicing](https://github.com/overshard/timestrap).
+* [ihatemoney - Account manager](https://ihatemoney.org/) ([code](https://github.com/spiral-project/ihatemoney)).
+* [pretix](https://pretix.eu/about/en/): ticketing software that cares about your event—all the way.
+
+Conferences
+-----------
+
+* [pretalx — CfP and scheduling for conferences](https://pretalx.com): From Call for Papers to schedule – build your conference!
+* [frab - conference management system](https://frab.github.io/frab/) with [ANGELSYSTEM - online tool for coordinating helpers and work shifts on large events](https://engelsystem.de/index_en.html).
+* [EasyChair Smart CFP](https://easychair.org/cfp/).
+
+URL shorteners
+--------------
+
+* [ShURLy](https://drupal.org/project/shurly).
+* [nanourl](http://nanourl.sourceforge.net/) ([pacote](http://packages.debian.org/squeeze/nanourl)).
+* [naofo.de](https://github.com/pedromoraes/naofo.de).
+
+Pastebin
+--------
+
+* [EZCrypt](https://github.com/novaking/ezcrypt).
+* [pastebinit](http://packages.debian.org/lenny/pastebinit).
+* [pythin-pastebin](http://packages.debian.org/squeeze/python-pastebin).
+* [rebbin](http://rebbin.berlios.de).
+* [pastebin](http://github.com/weierophinney/pastebin).
+* [rapaste](http://github.com/manveru/rapaste).
+* [Perl-6-Pastebin](http://github.com/wolfman2000/Perl-6-Pastebin).
+* [patchbin](http://github.com/ninjagod/patchbin).
+* [spaste](https://spaste.com/source/).
+* [pastebin.ca](http://github.com/slepp/pastebin.ca).
+* [rapaste](https://github.com/manveru/rapaste).
+* [giturl](https://github.com/whee/giturl).
+* [pnopaste](http://sourceforge.net/projects/pnopaste) ([repositório](https://github.com/tpruvot/pnopaste), [pacote](http://packages.debian.org/squeeze/pnopaste)).
+* [bpaste](http://sourceforge.net/projects/bpaste).
+* [yanopaste](http://sourceforge.net/projects/yanopaste).
+* [drupalbin](https://drupal.org/project/drupalbin).
+* [zeropaste](https://github.com/edogawaconan/zeropaste).
+* [ZeroBin](https://github.com/sebsauvage/ZeroBin).
+* [d-note](https://pthree.org/2014/01/13/announcing-d-note-a-self-destructing-notes-application/).
+* [PassLok Privacy](http://passlok.weebly.com).
+* [0bin - encrypted pastebin](http://0bin.net/).
+* [Client-side encrypted image/text/etc host web server](https://github.com/Upload/Up1) ([cli](https://gitlab.com/riseup/up1-cli-client-nodejs)).
+* [Lutim - Let's Upload That Image](https://lut.im/) coupled with [Goblim, a mobile app to store and share pictures](http://www.gobl.im/).
+* [PrivateBin](https://privatebin.info/) and [PrivateBin Directory](https://github.com/PrivateBin/PrivateBin/wiki/PrivateBin-Directory).
+
+Downloaders
+-----------
+
+* [Lufi](https://framagit.org/fiat-tux/hat-softwares/lufi): E2E with one-time download option!
+* [Jirafeau](https://gitlab.com/mojo42/Jirafeau).
+* [coquelicot](https://coquelicot.potager.org/).
+* [filetea](http://packages.debian.org/wheezy/filetea).
+* [jyraphe](http://home.gna.org/jyraphe/).
+* [fipes](https://github.com/tOkeshu/fipes).
+* [noattach](https://github.com/astro/noattach).
+* [img.bi](https://img.bi/) ([código](https://github.com/imgbi)).
+* [MediaCrush](https://github.com/MediaCrush/MediaCrush).
+* [BurnBox](https://github.com/thingssimple/burnbox).
+* [Up1](https://github.com/Upload/Up1).
+* [FilePizza](https://github.com/kern/filepizza).
+
+RSS
+---
+
+* [Tiny Tiny RSS](http://tt-rss.org/redmine/projects/tt-rss/wiki).
+* [Managin News](http://managingnews.com/).
+* [selfoss](http://selfoss.aditu.de/).
+* [NewsBlur](https://github.com/samuelclay/NewsBlur).
+
+Media managers
+--------------
+
+* [ResourceSpace](http://www.resourcespace.com/).
+* [MediaGoblin](http://mediagoblin.org).
+* [Zend.To](http://zend.to).
+* [Pix](http://pix.toile-libre.org).
+* [SparkleShare](http://sparkleshare.org).
+* [StackSync](http://stacksync.org).
+* [Baobáxia](https://github.com/RedeMocambos/baobaxia).
+* [Syncany](https://www.syncany.org/).
+* [PeerTube](https://github.com/Chocobozzz/PeerTube).
+* [DTube](https://github.com/dtube).
+
+Image galeries
+--------------
+
+Dynamic:
+
+* [Grid, Guardian’s image management service](https://www.theguardian.com/info/developer-blog/2015/aug/12/open-sourcing-grid-image-service).
+* [Comparison](https://en.wikipedia.org/wiki/Comparison_of_photo_gallery_software)
+* [Gallery](http://galleryproject.org) (hibernating).
+* [Piwigo](http://piwigo.org).
+* [Coppermine](http://coppermine-gallery.net).
+* [Zenphoto](http://www.zenphoto.org).
+* [Plogger](http://www.plogger.org).
+* [thumbor](https://www.thumbor.org/): open-source smart on-demand image cropping, resizing and filters.
+
+Static:
+
+* [fgallery: a modern, minimalist javascript photo gallery](http://www.thregr.org/~wavexx/software/fgallery/) ([pacote](https://packages.debian.org/sid/fgallery)).
+* [Sigal - Simple Static Gallery Generator — Sigal 1.1.0-dev documentation](http://sigal.saimon.org/en/latest/).
+* [Static image gallery generator comparison (FOSS)](http://www.nico.schottelius.org/docs/static-image-gallery-generator-comparison/).
+* [images - How to generate web picture gallery offline? (no php on server) - Super User](https://superuser.com/questions/190134/how-to-generate-web-picture-gallery-offline-no-php-on-server/309079#309079).
+
+Other
+-----
+
+* [Blockstack, building the decentralized internet](https://blockstack.org/).
+* [MonitoringScape](https://bigpanda.io/monitoringscape/): guide to the new, exciting world of modern monitoring.
+* [Derefer Script PHP](http://www.naden.de/blog/derefer-script).
+* [idno/Known · GitHub](https://github.com/idno/Known).
+* [perma](https://github.com/harvard-lil/perma).
+* [Koken](http://koken.me).
+* [hotglue](http://hotglue.me) ([puppet-hotglue](https://git.fluxo.info/?p=puppet-hotglue.git)).
+* [git-annex assistant](http://git-annex.branchable.com/assistant/).
+* [Gopher](http://packages.debian.org/stable/pygopherd).
+* [Fidonet](https://en.wikipedia.org/wiki/Fidonet).
+* [Usenet](https://en.wikipedia.org/wiki/Usenet) ([Howto](http://tldp.org/HOWTO/Usenet-News-HOWTO/index.html), [papercut](http://packages.debian.org/stable/papercut)).
+* [Namecoin](http://dot-bit.org) and other [DNS's alternatives](https://en.wikipedia.org/wiki/Alternative_DNS_root).
+* [dename](https://github.com/andres-erbsen/dename).
+* [BOINC](http://packages.debian.org/stable/boinc-client).
+* [Aegir](http://www.aegirproject.org).
+* [Huginn](http://www.wired.com/wiredenterprise/2013/03/hugin/) ([código](https://github.com/cantino/huginn)).
+* [OpenPhoto](http://theopenphotoproject.org/).
+* [Photographer.io](https://github.com/afternoonrobot/photographer-io).
+* [Weblate](http://weblate.org/en/).
+* [YaCy](http://yacy.net/).
+* [searchx](https://github.com/asciimoo/searx) ([firefox search addon](https://addons.mozilla.org/en-US/firefox/addon/searx-0-9-0/)).
+* [Bitcoin](http://packages.debian.org/sid/bitcoind).
+* [Tahoe-LAFS](https://we.riseup.net/debian/tahoe).
+* [Dark Market](https://github.com/darkwallet/darkmarket).
+* [Mozilla Sync Server](https://docs.services.mozilla.com/howtos/run-sync-1.5.html).
+* [AMBER](http://amberlink.org/).
+* [Transparency Toolkit | Watching the watchers](https://transparencytoolkit.org).
+* [TANIA - A free and open source farm management system for everyone.](http://gettania.org/).
+* [Webrecorder pywb - Web Archiving Tools for All](https://github.com/webrecorder/pywb/) ([docs](https://pywb.readthedocs.io/en/latest/index.html)).
+* [Lobsters - Computing-focused community centered around link aggregation and discussion](https://github.com/lobsters/lobsters).
+
+Streaming
+---------
+
+* [Rhinobird.tv](https://github.com/rhinobird).
+* [Libresonic: Media streaming software](https://github.com/Libresonic/libresonic).
+* [Airsonic](https://airsonic.github.io/).
+* [Icecast](http://icecast.org/).
+* [CherryMusic](https://github.com/devsnd/cherrymusic).
+* [Koel](https://github.com/phanan/koel).
+* [mStream](https://github.com/IrosTheBeggar/mStream).
+
+Mobilization
+------------
+
+* [Zylum](https://github.com/peacenews/ecosystem).
+* Crowdfunding: [Catarse](https://github.com/danielweinmann/catarse.git).
+* Mobilization, campaigns and petitions tool.
+* Anonymous publishing platform like ([GlobaLeaks](http://globaleaks.org), [DeaDrop](http://deaddrop.github.io/) or similar).
+* Poll system similar to [lembrador](https://lembrador.sarava.org): [dudle](http://dudle.mister-muffin.de/about.cgi), [croodle](https://github.com/jelhan/croodle).
+* Scheduler: [Framadate](http://framadate.org/) and [Makemeeting](https://drupal.org/project/makemeeting).
+* [LimeSurvey](http://www.limesurvey.org).
+* [Loomio](https://github.com/loomio/loomio).
+
+Decision-making
+---------------
+
+* [Decidim](https://decidim.org/): digital platform for citizen participation.
+ Free/libre, open and safe technology. With all democratic guarantees.
+ Reprogramming democracy is now possible with Decidim.
+
+Email
+-----
+
+* Virtual accounts:
+ * [Postfix Admin](http://sourceforge.net/projects/postfixadmin).
+ * [Ratuus](http://www.ratuus.org).
+ * [VBoxAdm](http://www.vboxadm.net).
+ * [Modoboa](http://modoboa.org/en).
+ * [ViMbAdmin](https://github.com/opensolutions/ViMbAdmin).
+* Web clients:
+ * [RainLoop](http://www.rainloop.net/).
+ * [Roundcube](http://www.roundcube.net).
+ * [Mailpile](http://www.mailpile.is/).
+ * [Petmail](https://github.com/warner/petmail).
+ * [Pixelated](https://pixelated-project.org).
+ * [Whiteout](https://github.com/whiteout-io/mail-html5).
+ * [N1](https://github.com/nylas/N1).
+* Migration:
+ * [Gmvault](http://gmvault.org).
+
+Bookmarks
+---------
+
+* [SemanticScuttle](http://semanticscuttle.sourceforge.net/).
+* [QStode](https://github.com/piger/qstode).
+* [Bookie](https://github.com/bookieio/Bookie).
+* [wallabag: a self hostable application for saving web pages](https://wallabag.org/en) with [wallabag-cli](https://github.com/Nepochal/wallabag-cli).
+* [prismo](https://gitlab.com/mbajur/prismo).
+* [linkding: Self-hosted bookmark service](https://github.com/sissbruecker/linkding).
+
+Libraries
+---------
+
+* [Evergreen ILS | Evergreen – Open Source Library Software](http://evergreen-ils.org/).
+* [Koha - Open Source ILS - Integrated Library System](http://www.koha.org/).
+* [Library Simplified](http://www.librarysimplified.org/).
+
+Turn-key appliances
+-------------------
+
+* [Sandstorm](https://sandstorm.io/).
+* [FreedomBox](https://freedomboxfoundation.org).
+* [Mail-in-a-Box - Firefox (Private Browsing)](https://mailinabox.email/).
+* [LEAP](https://leap.se).
+* [Enigmabox](http://wiki.enigmabox.net).
+* [Streisand](https://github.com/jlund/streisand).
+
+P2P / Serverless
+----------------
+
+* [Bitmessage](https://bitmessage.org) (apparently with [problems](http://www.chronicles.no/2013/08/bitmessage-crackdown.html)).
+* [Torchat](https://code.google.com/p/torchat/).
+* [Cryptosphere](http://cryptosphere.org/).
+* [WebTorrent - Streaming browser torrent client](https://webtorrent.io/).
+
+CMS
+---
+
+* [Droplets](http://dropplets.com/).
+* [StrongLink](https://github.com/btrask/stronglink).
+
+Geo
+---
+
+* [QGIS](http://qgis.org/en/site/).
+* [GeoServer](http://geoserver.org/).
+* [GeoNode](https://geonode.org/).
+* [Mapeo](https://www.digital-democracy.org/mapeo/) ([docs](https://docs.mapeo.app/)).
+
+Radio
+-----
+
+* [OpenWebRX](https://sdr.hu/openwebrx) ([código](https://github.com/simonyiszk/openwebrx)).
+
+Education
+---------
+
+* [Openki](https://gitlab.com/Openki/Openki/): Course-Organization-Platform: A
+ tool to build up and organize local communities – Open education for real.
+* [Kiwix lets you access free knowledge – even offline](https://www.kiwix.org/) with
+ [kiwix-serve](https://www.kiwix.org/en/downloads/kiwix-serve/).
+
+References
+----------
+
+* [Servers - Platforms - PRISM Break](https://prism-break.org/en/categories/servers/).
+* [Indie Web Projects](http://indiewebcamp.com/projects).
+* [Alternative Internet](https://github.com/rossjones/alternative-internet).
+* [Overview of projects working on next-generation secure email](https://github.com/OpenTechFund/secure-email).
+* [alternativeTo](https://alternativeto.net).
+* [Social Media Alternatives Project (S-MAP)](http://www.socialmediaalternatives.org/).
+* [Awesome-Selfhosted](https://github.com/Kickball/awesome-selfhosted).
diff --git a/research/computing/suckless.md b/research/computing/suckless.md
new file mode 100644
index 0000000..6ff9c5a
--- /dev/null
+++ b/research/computing/suckless.md
@@ -0,0 +1,58 @@
+[[!meta title="The suckless agenda"]]
+
+ Laws of Computer Programming:
+ 1. Any given program, when running, is obsolete.
+ 2. Any given program costs more and takes longer.
+ 3. If a program is useful, it will have to be changed.
+ 4. If a program is useless, it will have to be documented.
+ 5. Any given program will expand to fill all available memory.
+ 6. The value of a program is proportional the weight of its output.
+ 7. Program complexity grows until it exceeds the capability of
+ the programmer who must maintain it.
+
+ -- fortune(6)
+
+# Subpages
+
+[[!inline pages="page(suckless*)" archive="yes"]]
+
+# Guiding principles
+
+Suckless: future-proof, present-friendly.
+
+* [The Critical Engineering Manifesto](https://criticalengineering.org).
+* [Software rot - Wikipedia, the free encyclopedia](https://en.wikipedia.org/wiki/Software_rot).
+* [The Mutt E-Mail Client](http://www.mutt.org/): "All mail clients suck. This one just sucks less".
+* [The Future Programming Manifesto](http://alarmingdevelopment.org/?p=893).
+* [Unix philosophy - Wikipedia, the free encyclopedia](https://en.wikipedia.org/wiki/Unix_philosophy).
+* [KISS principle - Wikipedia, the free encyclopedia](https://en.wikipedia.org/wiki/KISS_principle).
+* [suckless.org software that sucks less](http://suckless.org/).
+* [principles - IndieWebCamp](http://indiewebcamp.com/principles).
+* [Reduce, reuse, recycle](https://en.wikipedia.org/wiki/Waste_hierarchy):
+ * Reduce: favor the simplest solutions and focus attention on specific problems;
+ * Reuse: work from experience and favor examples of current practice;
+ * Recycle: encourage modularity and the ability to embed. [reference](https://en.wikipedia.org/wiki/Microformat#Design_principles).
+
+## Contributions to the agenda
+
+ Though a program be but three lines long, someday it will have to
+ be maintained.
+
+ -- The Tao of Programming
+
+* [Security Specs](https://manual.fluxo.info/specs).
+* [Static site generation](/static).
+* [Metadot](https://metadot.fluxo.info) to manage dotfiles along with [a locally-installable applications repository](https://inception.fluxo.info).
+
+## Stuff currently being observed
+
+* [Neovim](http://neovim.io).
+
+## I should not install a software if
+
+I can solve my problem using:
+
+* A terminal and the related userland.
+* A text editor like `vim`.
+* A version control system like `git`.
+* A clean data format like markdown, yaml, dot or CSV.
diff --git a/research/computing/suckless/messaging.md b/research/computing/suckless/messaging.md
new file mode 100644
index 0000000..81c80a6
--- /dev/null
+++ b/research/computing/suckless/messaging.md
@@ -0,0 +1,103 @@
+[[!meta title="Mensageria Suckless"]]
+
+Quem não comunica se trumbica. Mas quem comunica também. Porque tá cheio de
+sistema por aí que te afaga e te apedreja ao mesmo tempo. Oferece serviço de
+vigilância gratuita que possui funcionalidade de comunicação.
+
+Aqui queremos a boa e velha mensageria suckless, que também é uma merda, mas é
+uma merda menor do que o enlatado baseado em soluções proprietárias oferecido
+pelas startups turbocapitalistas.
+
+Isto aqui é um esboço! Patches são bem vindos :)
+
+Requisitos
+----------
+
+* Seja independente de plataforma e independente de um computador móvel como
+ smartphones.
+
+* Sessão persistente: podem te enviar mensagem mesmo que você não esteja online.
+ Melhor ainda, que você conste como online mesmo que não esteja acessando a
+ mensageria.
+
+* Um mínimo de privacidade: conexão cifrada com o servidor, criptografia
+ ponta-a-ponta com negação plausível pra falar com os/as amiguinhos, sem logs.
+
+Ingredientes
+------------
+
+1. Conta shell num servidor com bom uptime e acesso SSH.
+
+2. Mutiplexador de terminal.
+
+ É uma espécie de "gerenciador de janelas" para
+ a linha de comando que permite manter programas
+ rodando em background mesmo quando o terminal
+ é fechado.
+
+ Ele permite que malandros deixem a mensageria
+ IRC rodando no servidor mesmo que não estejam
+ conectados via SSH.
+
+ Exemplos: tmux e screen
+
+3. Cliente de IRC
+
+ Exemplos: irssi e weechat
+
+Howto
+-----
+
+Logando e instalando:
+
+ ssh servidor-remoto
+ sudo apt install tmux irssi irssi-plugin-otr
+
+Criando uma sessão para o IRC:
+
+ tmux
+
+Abrindo o cliente e se conectando no rolê:
+
+ irssi
+
+Para sair da sessão sem encerrar a mensageria, digite Ctrl B D
+(control sequence do tmux mais o comando "detach"). Depois é
+só encerrar a shell do servidor remoto.
+
+Para se reconectar, basta
+
+ ssh servidor-remoto tmux attach
+
+Básico do IRC
+-------------
+
+ /network add -nick <nick> -realname <realname> freenode
+ /server add -auto -ssl_verify -ssl_capath /etc/ssl/certs -network freenode chat.freenode.net 7000
+ /save
+ /connect freenode
+ /join #canal
+
+Bônus
+-----
+
+* Tor.
+* Bitlbee.
+
+Privacidade
+-----------
+
+Note que uma sessão persistente implica no cliente rodando num
+servidor. Isso pode degradar sua privacidade, uma vez que o servidor
+pode ser comprometido de várias formas. É importante ter consciência
+disso.
+
+Da mesma forma que seu celular pode ser invadido, roubado e ter dados extraídos,
+um servidor também é um ponto vulnerável na sua comunicação, especialmente
+se for nele que as chaves criptográficas estiverem armazenadas.
+
+Assim, a sessão persistente de mensageria oferece um nível de segurança apenas
+intermediário, servindo para a comunicação do dia-a-dia que não for sensível.
+
+Para comunicação sensível, o melhor é rodar o cliente de mensageria diretamente
+a partir do seu [Console Físico Confiável](https://opsec.fluxo.info/specs/tpc).
diff --git a/research/computing/suckless/sites.md b/research/computing/suckless/sites.md
new file mode 100644
index 0000000..47eb18c
--- /dev/null
+++ b/research/computing/suckless/sites.md
@@ -0,0 +1,102 @@
+[[!meta title="We are the static site generation!"]]
+
+# Current practice
+
+Currently [ikiwiki](http://ikiwiki.info) is adopted by the following reasons:
+
+1. There is a [Debian package](https://packages.debian.org/stable/ikiwiki).
+2. It's flexible enough to support both local or remote side static compilation:
+ * Local compilation by calling the `ikiwiki` command directly.
+ * Remotelly by using a [git hook](http://ikiwiki.info/rcs/git/).
+
+When it's said **both** it means that you don't need to choose either of the two options: you can choose or both simultaneously.
+
+## Static site example
+
+Here comes the mandadoty "Hello world" example from the statically generated site realm:
+
+ mkdir blog && cd blog
+ echo "Hello world..." > index.mdwn
+ ikiwiki --rebuild --exclude www . www
+
+That's it! You have a generated site sitting at your `www` subfolder which can be copied remotelly using `rsync`.
+
+## Version control
+
+It's a good pratice to keep your work under version control:
+
+ git init
+ echo "/.ikiwiki" > .gitignore
+ echo "/recentchanges" >> .gitignore
+ echo "/www" >> .gitignore
+ git add .
+ git commit -m "Initial import"
+
+## Add a bit of sofistication
+
+* Use [this Makefile](/Makefile) as an starting point to refresh and publish your wiki by simply running `make web`.
+* Use a [complete ikiwiki template](https://git.fluxo.info/?p=templates.git;a=tree;f=ikiwiki;h=HEAD) and change to your needs.
+* If you're a automation junkie, try the [puppet-ikiwiki](https://git.fluxo.info/puppet-ikiwiki.git) module.
+
+## Theming
+
+Currently using [Ikiwiki](http://ikiwiki.info) with [Bootstrap](http://twitter.github.io/bootstrap/):
+
+* [Templates](https://github.com/tgpfeiffer/ikiwiki-bootstrap-template).
+* [Bootswatch](http://bootswatch.com) themes.
+
+## Deployment
+
+You can create passwordless SSH keys and use [rrsync](http://www.guyrutenberg.com/2014/01/14/restricting-ssh-access-to-rsync/) ([2](http://wiki.hands.com/howto/passphraseless-ssh/)) to restrict access. Then add an entry into your `~/.ssh/config`:
+
+ Host blog.example.org blog
+ HostName blog.example.org
+ User blog
+ IdentityFile ~/.ssh/blog@blog.example.org
+
+Now simply run `make web_deploy` with the above mentioned `Makefile` do sync your static site!
+
+## MathJax
+
+* [Setup Instructions for MathJax on Ikiwiki](https://www.math.cmu.edu/~gautam/sj/blog/20130930-ikiwiki/010-setup.html).
+* [GitHub - bk/ikiwiki-plugin-mathjax: MathJax plugin for IkiWiki](https://github.com/bk/ikiwiki-plugin-mathjax).
+* [GitHub - mathjax/MathJax: Beautiful and accessible math in all browsers](https://github.com/mathjax/MathJax).
+* [MathJax documentation](https://docs.mathjax.org).
+
+## Ikiwiki references
+
+* [Ikiwiki](http://ikiwiki.info).
+* [Improving Ikiwiki style with Bootstrap](https://ceops.eu/posts/Improving%20Ikiwiki%20style%20with%20Bootstrap/).
+* [How to have a nice design for ikiwiki](http://www2.tblein.eu/posts/How_to_have_a_nice_design_for_ikiwiki/).
+* [gsliepen/ikistrap: Bootstrap 4 theme for ikiwiki](https://github.com/gsliepen/ikistrap/).
+
+# Alternatives
+
+* [Static Site Generators](https://staticsitegenerators.net/).
+* [Top Open-Source Static Site Generators - StaticGen](https://www.staticgen.com/).
+* [The updated big list of static website generators for your site, blog or wiki](https://iwantmyname.com/blog/2014/05/the-updated-big-list-of-static-website-generators-for-your-site-blog-or-wiki).
+* [Static Site Generators at GitHub](https://github.com/skx/static-site-generators).
+* [Replacing Jekyll with Pandoc and a Makefile](https://tylercipriani.com/2014/05/13/replace-jekyll-with-pandoc-makefile.html).
+* [Brane Dump: Static Comments in Jekyll](http://www.hezmatt.org/~mpalmer/blog/2011/07/19/static-comments-in-jekyll.html).
+* [Hyde](https://github.com/lakshmivyas/hyde/) ([package](https://packages.debian.org/stable/hyde)).
+* [Gollum](https://github.com/gollum/gollum).
+* [Hugo](https://gohugo.io/) ([pacote](https://packages.debian.org/stable/hugo)).
+* [Amber](https://github.com/leapcode/amber).
+* [Grav](http://getgrav.org/).
+* [Hakyll](http://jaspervdj.be/hakyll/) ([package](https://packages.debian.org/sid/libghc-hakyll-dev)).
+* [Jekyll](http://jekyllrb.com/) ([package](https://packages.debian.org/stable/jekyll)).
+* [MkDocs](https://www.mkdocs.org/#building-the-site)
+* [Sphinx](http://sphinx-doc.org/) ([package](https://packages.debian.org/stable/python-sphinx)).
+* [Lektor](https://www.getlektor.com/) ([package](https://packages.debian.org/bullseye/lektor)).
+* [Static site generators for building web sites](https://lwn.net/Articles/541299/).
+* [Pelican Static Site Generator, Powered by Python](http://blog.getpelican.com/) ([package](https://packages.debian.org/sid/python-pelican)).
+* [Middleman: Hand-crafted frontend development](https://middlemanapp.com/).
+* [Juvia: a commenting server similar to Disqus and IntenseDebate](https://github.com/phusion/juvia).
+* [gitit](https://github.com/jgm/gitit/tree/master/).
+* [Utterson: a minimal static blog generator written using old-school unix tools (make, ksh, m4, awk, procmail and a pinch of elisp)](https://github.com/stef/utterson).
+* [werc - A sane web anti-framework](http://werc.cat-v.org/).
+* [cfenollosa/bashblog: A single Bash script to create blogs. Download, run, write, done!](https://github.com/cfenollosa/bashblog).
+* [blogofile](https://packages.debian.org/stable/blogofile)
+* [tkluysk/yaml-to-html: transform a folder of markdown files with yaml frontmatter to html](https://github.com/tkluysk/yaml-to-html)
+* [maxhoffmann/yaml-markdown-to-html: transform a folder of markdown files with yaml frontmatter to html](https://github.com/maxhoffmann/yaml-markdown-to-html)
+* [brunobord/static-markdown: A static HTTP server, with markdown rendering mechanism](https://github.com/brunobord/static-markdown)
diff --git a/research/computing/suckless/virtual.md b/research/computing/suckless/virtual.md
new file mode 100644
index 0000000..51c01c1
--- /dev/null
+++ b/research/computing/suckless/virtual.md
@@ -0,0 +1,101 @@
+[[!meta title="Virtualized GUI environments"]]
+
+Can't or don't want to use [Qubes OS](https://www.qubes-os.org/)? Here comes a straightforward sollution
+that, while not offering the same level of security, is practical enough to be implemented in the confort
+of your current FOSS OS!
+
+A picture
+---------
+
+Could you spot the difference between the Tor Browser running in the host for the one inside the virtual machine? That's what we want to achieve!
+
+![Screenshot](screenshot.png)
+
+First things first
+------------------
+
+What you can do:
+
+1. Create a virtual machine image of the operating system of your choice like [this example](https://padrao.fluxo.info/boxes/).
+2. Setup basic X11 environment with automatic login and startup programs.
+3. Configure your hypervisor to hide icons and additional decorations around the virtual machine.
+4. Setup key bindings on your window manager to start/resume and stop/suspend the virtual machine.
+
+Debian desktop
+--------------
+
+When using a debian virtual machine as a virtual desktop, consider the following:
+
+ apt-get install lightdm ratpoison
+
+Make sure to configure `/etc/lightdm/lightdm.conf` with something like
+
+ autologin-user=vagrant
+ autologin-user-timeout=0
+
+If using VirtualBox, you might also want to try [virtualbox-guest-x11](https://packages.debian.org/stable/virtualbox-guest-x11).
+
+Features
+--------
+
+* Good security through isolation.
+* Improved start/stop of your application by using virtual machine suspend/resume.
+* Minor performance penalties while running the virtual machine.
+
+Limitations
+-----------
+
+* Memory and disk consumption.
+* Clipboard might still be available to the virtual environment, see [this discussion](http://theinvisiblethings.blogspot.com.br/2011/04/linux-security-circus-on-gui-isolation.html).
+
+Future
+------
+
+* This should be better documented!
+* Automated expendable snapshots for one-time-use virtual machines.
+* Automated recipes (puppet/ansible).
+* Vagrant integration for fast provisioning of golden images.
+* Alternatives to the VirtualBox hypervisor.
+
+References
+----------
+
+Applications:
+
+* [kvmx script](https://kvmx.fluxo.info).
+* [vbox script](https://git.fluxo.info/vbox).
+* [plymouth - Debian Wiki](https://wiki.debian.org/plymouth).
+* [SPICE Project](http://www.spice-space.org/).
+
+Other implementations:
+
+* [Marco Carnut: Ambiente "Auto-Limpante" via Virtualização Ultra-Leve Descartável - Tempest Blog](http://blog.tempest.com.br/marco-carnut/ambiente-auto-limpante-via-virtualizacao-ultra-leve-descartavel.html).
+* [Subgraph OS and Mail](https://subgraph.com/sgos/index.en.html).
+
+Tips:
+
+* If using Firefox, try to disable hardware graphics acceleration as it might impact performance and produce graphics artifacts. This behavior was seem on VMs running with qemu-kvm with SPICE.
+
+Spice and KVM:
+
+* http://www.linux-kvm.org/page/SPICE
+* https://www.spice-space.org/spice-user-manual.html
+* https://kuther.net/content/convert-virtualbox-kvmqemu
+* http://www.ubuntugeek.com/how-change-display-resolution-settings-using-xrandr.html
+* https://bugzilla.redhat.com/show_bug.cgi?id=1020393
+* https://people.freedesktop.org/~teuf/spice-doc/html/ch03.html
+* http://askubuntu.com/questions/107228/how-to-resize-virtual-machine-disk#481887
+* http://wiki.qemu.org/Documentation/9psetup
+* https://ask.fedoraproject.org/en/question/8080/shared-folder-with-qemu-kvm/
+
+Mounting guest images:
+
+* [Mounting raw and qcow2 VM disk images](https://alexeytorkhov.blogspot.com.br/2009/09/mounting-raw-and-qcow2-vm-disk-images.html) using `losetup` or `qemu-nbd`.
+* [guestmount](http://libguestfs.org/guestmount.1.html) from [libguestfs, a library for accessing and modifying VM disk images](http://libguestfs.org/).
+
+Image optimization:
+
+* [Tip: Making a disk image sparse | Richard WM Jones](https://rwmj.wordpress.com/2010/10/19/tip-making-a-disk-image-sparse/).
+* [How to convert a non-sparse image to a sparse image – Patrick's Blog(2)](https://blog.laimbock.com/2013/10/31/how-to-convert-a-non-sparse-image-to-sparse/).
+
+ ionice -c 3 nice -n 19 virt-sparsify --tmp /tmp --convert qcow2 --compress box.img box.new && mv box.new box.img
diff --git a/research/computing/suckless/virtual/screenshot.png b/research/computing/suckless/virtual/screenshot.png
new file mode 100644
index 0000000..f5541c4
--- /dev/null
+++ b/research/computing/suckless/virtual/screenshot.png
Binary files differ
diff --git a/research/thinkpad.md b/research/computing/thinkpad.md
index d8afb94..fa7a04d 100644
--- a/research/thinkpad.md
+++ b/research/computing/thinkpad.md
@@ -62,12 +62,12 @@ público letrado que produz código.
### A nova ideologia
- O lance é...
- Na nova ideologia, o slogan mudou
- Nao eh mais **THINK**
- Mas sim **INTERACT**
- Daí que as recentes linhagens técnicas tem outro design
- Pra facilitar uma interação instantânea, não para pensar
+> O lance é...
+> Na nova ideologia, o slogan mudou
+> Nao eh mais **THINK**
+> Mas sim **INTERACT**
+> Daí que as recentes linhagens técnicas tem outro design
+> Pra facilitar uma interação instantânea, não para pensar
Não que o slogan anterior tenha sido abolido, mas ele é minoritário numa indústria
da computação onde a maior parte dos consumidores não está sendo tratada como
@@ -179,6 +179,29 @@ Esta seção inclui modelos "homologados" e também em pesquisa.
* Problemas:
* [Buttonless Touchpad](https://www.thinkwiki.org/wiki/Buttonless_Touchpad).
+### T480
+
+* [Category:T480 - ThinkWiki](https://www.thinkwiki.org/wiki/Category:T480)
+* [ThinkPad T480 - ThinkPad_T480_datasheet_EN.pdf](https://psref.lenovo.com/syspool/Sys/PDF/datasheet/ThinkPad_T480_datasheet_EN.pdf)
+* [Lenovo ThinkPad T480 | 14" Business Laptop with 8th Generation Intel® Core™ i7 | Lenovo US | Lenovo US](https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadt/thinkpad-t480/22tp2tt4800)
+
+### X280
+
+* [Category:X280 - ThinkWiki](https://www.thinkwiki.org/wiki/Category:X280)
+* [ThinkPad_X280_Spec.PDF](https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_X280/ThinkPad_X280_Spec.PDF)
+* [PSREF ThinkPad ThinkPad X280](https://psref.lenovo.com/Product/ThinkPad/ThinkPad_X280)
+* Drawback: memory is soldered: [How to upgrade x280 Memory-English Community](https://forums.lenovo.com/t5/ThinkPad-X-Series-Laptops/How-to-upgrade-x280-Memory/m-p/4601913)
+
+### T14
+
+* [Category:T14 - ThinkWiki](https://www.thinkwiki.org/wiki/Category:T14)
+* [ThinkPad T14 Gen 1 (Intel) - ThinkPad_T14_Gen_1_Intel_datasheet_EN.pdf](https://psref.lenovo.com/syspool/Sys/PDF/datasheet/ThinkPad_T14_Gen_1_Intel_datasheet_EN.pdf)
+* [T14 Gen 1 and P14s Gen 1 Hardware Maintenance Manual - t14_gen1_p14s_gen1_hmm_en.pdf](https://download.lenovo.com/pccbbs/mobiles_pdf/t14_gen1_p14s_gen1_hmm_en.pdf)
+* [laptops and netbooks :: thinkpad t series laptops :: thinkpad t14 gen 2 type 20w0 20w1contentdetail - Lenovo Support AU](https://pcsupport.lenovo.com/au/en/products/laptops-and-netbooks/thinkpad-t-series-laptops/thinkpad-t14-gen-2-type-20w0-20w1)
+* [Lenovo ThinkPad T14 Gen1 User Guide - Manuals+ - thinkpad-t14-gen1-manual.pdf](https://manuals.plus/lenovo/thinkpad-t14-gen1-manual.pdf)
+* [(English) User Guide (HTML) - ThinkPad T14, T15, P14s, P15s - Lenovo Support AU](https://pcsupport.lenovo.com/au/en/products/laptops-and-netbooks/thinkpad-p-series-laptops/thinkpad-p15s-type-20t4-20t5/manuals/um923720-english-user-guide-html-thinkpad-t14-t15-p14s-p15s)
+* [Removal and Replacement Videos - ThinkPad T14 Gen 1 (20S0, 20S1, 20S2, 20S3, 20UD, 20UE), P14s Gen1 (20S4, 20S5), T14 AMD Gen 1 (20UD, 20UE ), P14s AMD Gen 1 (20Y1, 20Y2), T14 Gen 2 (20W0, 20W1, 20XK, 20XL), P14s Gen 2 (20VX, 20VY, 21A0, 21A1) - Lenovo Support US](https://pcsupport.lenovo.com/us/en/solutions/ht510512-removal-and-replacement-videos-thinkpad-t14-gen-1-thinkpad-p14s-gen-1-20s0-20s1-20s2-20s3-20s4-20s5).
+
## Memória
* [Memory Compatibility - Notebooks](https://support.lenovo.com/br/en/solutions/pd012623#x).
@@ -187,7 +210,7 @@ Esta seção inclui modelos "homologados" e também em pesquisa.
* [Libreboot – Hardware compatibility list](https://libreboot.org/docs/hcl/).
-# Firmware oficial
+## Firmware oficial
* http://www.thinkwiki.org/wiki/Installing_Gentoo_on_a_ThinkPad_X220
* https://bbs.archlinux.org/viewtopic.php?id=122352
@@ -208,3 +231,5 @@ Exemplo:
* [Lenovo Laptop Repair - iFixit](https://www.ifixit.com/Device/Lenovo_Laptop).
* [IBM Laptop Repair - iFixit](https://www.ifixit.com/Device/IBM_Laptop).
* [CPU-Upgrade](http://www.cpu-upgrade.com).
+* [Welcome to ThinkPads.org! - ThinkPads.org](https://libthinkpad.github.io/projects/)
+* [ThinkPad FRU parts catalog - ThinkPads.org](https://libthinkpad.github.io/fru/)
diff --git a/research/computing/token.md b/research/computing/token.md
new file mode 100644
index 0000000..dbe0e4f
--- /dev/null
+++ b/research/computing/token.md
@@ -0,0 +1,78 @@
+[[!meta title="Tokens USB"]]
+
+Sobre tokens criptográficos USB.
+
+## Intro
+
+* [ImperialViolet - Security Keys](https://www.imperialviolet.org/2017/08/13/securitykeys.html).
+
+## FST-01: Gnuk and Neug
+
+### FST-01
+
+* [FST-01](https://www.gniibe.org/FST-01/fst-01.html "FST-01") (Gniibe)
+* [FST-01](https://seeeddoc.github.io/FST-01/ "FST-01") (Seedstudio)
+* [unixjazz / DIYNuk · GitLab](https://gitlab.com/unixjazz/DIYNuk "unixjazz / DIYNuk · GitLab")
+* [» Reading and Writing Firmware on an STM32 using SWD](https://cybergibbons.com/hardware-hacking/reading-and-writing-firmware-on-an-stm32-using-swd/ "» Reading and Writing Firmware on an STM32 using SWD")
+ * [Serial Wire Debug (SWD) - Silicon Labs](https://community.silabs.com/s/article/serial-wire-debug-swd-x?language=en_US "Serial Wire Debug (SWD) - Silicon Labs")
+ * [ST-LINK/V2 - ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32 - STMicroelectronics](https://www.st.com/en/development-tools/st-link-v2.html "ST-LINK/V2 - ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32 - STMicroelectronics")
+ * [STM8S-DISCOVERY - Discovery kit with STM8S105C6 MCU - STMicroelectronics](https://www.st.com/en/evaluation-tools/stm8s-discovery.html "STM8S-DISCOVERY - Discovery kit with STM8S105C6 MCU - STMicroelectronics")
+ * [FST-01 gnuk firmware update via USB - Raymii.org](https://raymii.org/s/tutorials/FST-01_firmware_upgrade_via_usb.html "FST-01 gnuk firmware update via USB - Raymii.org")
+ * [FST-01 - Seeed Wiki](http://wiki.seeed.cc/FST-01/).
+ * [Questions - FST-01 Q&A Forum](http://no-passwd.net/askbot/questions/).
+ * [Programming the FST-01 (gnuk) with a Bus Pirate + OpenOCD](https://www.earth.li/~noodles/blog/2015/08/program-fst01-with-buspirate.html).
+
+### Gnuk
+
+* [Free Software Initiative of Japan - gnuk](http://www.fsij.org/category/gnuk.html)
+* [Gnuk Documentation — Gnuk Documentation 1.0 documentation](http://www.fsij.org/doc-gnuk/)
+* [Gnuk - Noisebridge](https://noisebridge.net/wiki/Gnuk).
+* [Gnuk Token and GnuPG scdaemon](https://fosdem.org/2018/schedule/event/hwenablement_gnuk_token_and_gnupg_scdaemon/).
+* [Gnuk source code](https://salsa.debian.org/gnuk-team/gnuk/gnuk).
+
+### Neug
+
+* [NeuG, a True Random Number Generator Implementation](https://www.gniibe.org/memo/development/gnuk/rng/neug.html "NeuG, a True Random Number Generator Implementation")
+* [Gnuk / gnuk / neug · GitLab](https://salsa.debian.org/gnuk-team/gnuk/neug "Gnuk / gnuk / neug · GitLab")
+ * [NeuG USB True Random Number Generator | Hacker News](https://news.ycombinator.com/item?id=16080019 "NeuG USB True Random Number Generator | Hacker News")
+* [Gnuk, NeuG, FST-01](https://incenp.org/dvlpt/docs/fsij-gnuk-neug/index.html "Gnuk, NeuG, FST-01")
+ * [How can I install Gnuk on FST-01 with NeuG 1.0.5?](http://www.gniibe.org/FST-01/q_and_a/gnuk_install_over_neug.html "How can I install Gnuk on FST-01 with NeuG 1.0.5?")
+ * [udev-rules for my FST-01 gnuk security token](https://lists.gnu.org/archive/html/help-guix/2018-07/msg00051.html "udev-rules for my FST-01 gnuk security token")
+ * [Device Configuration for Gnuk Token with libusb — Gnuk Documentation 1.0 documentation](http://www.fsij.org/doc-gnuk/udev-rules.html "Device Configuration for Gnuk Token with libusb — Gnuk Documentation 1.0 documentation")
+ * [How to install or update NeuG firmware with STLink/v2 debugger on FST-01](https://demsh.org/post/neug-memo/ "How to install or update NeuG firmware with STLink/v2 debugger on FST-01")
+ * [How can I use NeuG standalone device on my Debian box?](https://www.gniibe.org/FST-01/q_and_a/neug-standalone-device.html "How can I use NeuG standalone device on my Debian box?")
+ * [linux - Using the NeuG TRNG with /dev/random? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/354188/using-the-neug-trng-with-dev-random#433397 "linux - Using the NeuG TRNG with /dev/random? - Unix & Linux Stack Exchange")
+
+### Threat modeling
+
+* [How safe is Gnuk against side channel attacks, USB sniffer, or electron/tunneling microscope? - FST-01 Q&A Forum](http://no-passwd.net/askbot/question/33/how-safe-is-gnuk-against-side-channel-attacks-usb/).
+* [How does Gnuk protect against attacks to extract private keys? - FST-01 Q&A Forum](http://no-passwd.net/askbot/question/32/how-does-gnuk-protect-against-attacks-to-extract/).
+* [What types of risk are more likely? What's "best practice" against that? - FST-01 Q&A Forum](http://no-passwd.net/askbot/question/68/what-types-of-risk-are-more-likely-whats-best/).
+
+### Programando o FST-01
+
+Agradecimento ao `unixjazz` do projeto [DIYNuk](https://gitlab.com/unixjazz/DIYNuk) por fornecer estas instruções!
+
+Roteiro baseado no programador (STLink) ligado a um STM8 com os pinos soldados:
+
+1. Ligar ambas as pacas conforme [este diagrama dos
+ pinos](https://www.gniibe.org/memo/development/gnuk/hardware/stlinkv2-stm8s-discovery.html).
+2. Configurar o ST-Link (programador) no PC. Instruções
+ [aqui](https://www.gniibe.org/FST-01/q_and_a/swd-debugger.html).
+3. Compilar (mesmo procedimento para Gnuk e Neug (se diz Noisy com sotaque
+ japones)) conforme [estas instruções](https://www.gniibe.org/memo/development/gnuk/gnuk-building-for-stm32-part-of-stm8s-discovery-kit.html).
+
+Em geral, o procedimento e' o seguinte:
+
+1. Instalar o [ultimo NeuG do repo do Debian](https://salsa.debian.org/gnuk-team/gnuk/neug).
+2. Instalar o GNU Toolchan for ARM (4.5 ou maior).
+3. Instalar o OpenOCD (pacote do Debian).
+4. Compilar o NeuG.
+5. Configurar o ST-Link com as seguintes regras do udev (por exemplo em `/etc/udev/rules.d/10-stlink.rules`):
+
+ ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0483", \
+ ATTR{idProduct}=="3748", GROUP="tape", MODE="664", SYMLINK+="stlink"
+
+6. Plugar o ST-Link, rodar o OpenOCD e escrever o binario na flash do STM8
+ conforme [este procedimento](https://www.gniibe.org/memo/development/gnuk/gnuk-installation-to-stm32-part-of-stm8s-discovery-kit.html)
+7. Pronto! Agora basta [ler a serial](https://www.gniibe.org/FST-01/q_and_a/neug-standalone-device.html).
diff --git a/research/data.md b/research/data.md
deleted file mode 100644
index 6d30f35..0000000
--- a/research/data.md
+++ /dev/null
@@ -1,34 +0,0 @@
-[[!meta title="Data science, lean databases and formats"]]
-
-## Basic
-
-* Ontologies and how to deal with lists.
-* Standards: schema.org, microdata, microformats, json, yaml, csv, dot, vcard.
-* Intelligence: how to easilly search, index and produce outputs with strutured data?
-* Samples: TODO and [ChangeLog](http://keepachangelog.com) (see [yankee: Changelogs meet YAML](https://github.com/studio-b12/yankee)).
-
-## Software
-
-* [mtail](https://packages.debian.org/stable/mtail).
-* [Scrapy | A Fast and Powerful Scraping and Web Crawling Framework](https://scrapy.org/).
-* [phantomjs in stretch](https://packages.debian.org/stable/phantomjs).
-* [wpull](https://wpull.readthedocs.io/en/master/usage.html).
-* [Darktable - virtual lighttable and darkroom for photographers](https://packages.debian.org/stable/darktable).
-* OsmAnd and GPX tracks.
-
-## API, bigdata, etc
-
-* https://stripe.com/blog/idempotency
-* https://botman.io
-* https://github.com/metabase/metabase
-* [Apache Drill](https://drill.apache.org/), [presto](https://github.com/prestodb/presto), hadoop, etc.
-* [Redash](https://redash.io/).
-* [TensorFlow](https://www.tensorflow.org/).
-* [Wikidata](https://www.wikidata.org).
-* [Swagger Specification](http://swagger.io/specification/).
-
-## Datasets
-
-* [API de respostas instantâneas do DuckDuckGo](https://duckduckgo.com/api) ([example](http://api.duckduckgo.com/?q=micropython&format=json&pretty=1)).
-* [Search APIs | ProgrammableWeb](https://www.programmableweb.com/category/search/apis?category=20055).
-* [Have I been pwned? API v2](https://haveibeenpwned.com/API/v2).
diff --git a/research/devops.md b/research/devops.md
deleted file mode 100644
index f5efa8b..0000000
--- a/research/devops.md
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!meta title="DevOps"]]
-
-DevOps research:
-
-* [Simet](http://simet.nic.br).
-* spice-client-gtk: option to hide menubar: see `window_state_cb` at `spicy.c`.
-* auto start user screen sessions.
-* puppet:
- * deploy: multiple module paths: https://docs.puppet.com/puppet/3.6/dirs_modulepath.html
- * default modules as submodules from the bootstrap repository, custom modules closer to the config folder?
-* dynamic DNS with proper zone/domain access control:
- * http://www.cheshirekow.com/wordpress/?p=457
- * https://www.erianna.com/nsupdate-dynamic-dns-updates-with-bind9
- * https://blog.philippklaus.de/2013/01/updating-dns-entries-with-nsupdate-or-alternative-implementations-your-own-ddns/
- * http://linux.yyz.us/nsupdate/
- * https://debian-administration.org/article/591/Using_the_dynamic_DNS_editor_nsupdate
diff --git a/research/economics.md b/research/economics.md
new file mode 100644
index 0000000..45b4626
--- /dev/null
+++ b/research/economics.md
@@ -0,0 +1,8 @@
+[[!meta title="Economics"]]
+[[!tag economics]]
+
+An inquiry on economies and values.
+
+## Subpages
+
+[[!inline pages="page(research/economics*)" archive="yes"]]
diff --git a/research/economics/valor-social.md b/research/economics/valor-social.md
new file mode 100644
index 0000000..e3b198f
--- /dev/null
+++ b/research/economics/valor-social.md
@@ -0,0 +1,339 @@
+[[!meta title="A ajuda múltipla e o valor social"]]
+
+* [Versão original](valor-social.pdf) ([fonte](valor-social.tex)).
+
+Procurando resolver um problema prático, este texto sistematiza uma
+forma de promover a ajuda múltipla através de acordos sucessivos e
+virais. Para auxiliar na sua compreensão, é definida uma forma de
+cálculo do valor social e suas consequências são avaliadas.
+
+Motivação
+=========
+
+Em geral, quando ajudamos alguém (principalmente quando ensinamos algo),
+não há muita garantia que a pessoa ajudada passará a idéia pra frente,
+seja ajudando outrem ou passando o conhecimento adiante. Mesmo em
+coletivos horizontais, não-hierárquicos e baseados na ajuda mútua, não
+há necessariamente uma cultura de passar para frente a ajuda recebida.
+Por isso, estabelecemos neste texto uma sugestão de acordos de ajuda
+múltipla tanto como proposta de prática e sobretudo como reflexão da
+distância que os grupos sociais se encontram com relação a um regime de
+dádiva e não-escassez.
+
+O acordo de ajuda múltipla
+==========================
+
+Para fomentar o aumento da ajuda entre as pessoas, criaremos o conceito
+de *ajuda múltipla* e proporemos um pequeno acordo padrão para o seu
+estabelecimento. Pois bem: *ajuda múltipla é a forma de colaboração onde
+uma ou mais pessoas -- grupo A -- auxiliam outras -- grupo B -- com a condição
+de que estas últimas efetuem ajuda múltipla auxiliando outras pessoas
+-- grupo C.* Atente para o fato de que definição é *recursiva* (isto é, a
+definição necessita de sua própria definição): uma ajuda múltipla seria,
+por exemplo, Maria ajudar Lopes com a condição de que este ajude alguém
+no futuro. Note que o grupo C pode ser composto pelas mesmas pessoas do
+grupo A, mas não necessariamente: Lopes deve ajudar alguém, mas não
+necessariamente Maria[1].
+
+Viralidade (ou potência) do acordo
+----------------------------------
+
+Estamos interessados/as na possibilidade da multiplicação da ajuda e,
+para tanto, devemos melhorar nossa definição de ajuda múltipla: ajuda
+múltipla é a forma de colaboração onde uma ou mais pessoas -- grupo A --
+auxiliam outras -- grupo B -- com a condição de que estas últimas efetuem
+*pelo menos _v_ ajudas múltiplas* (onde _v_ é um número inteiro
+positivo) auxiliando outras pessoas -- grupo C, D, E, etc -- com a condição
+de que as próximas pessoas também pratiquem ajuda múltipla e assim por
+diante.
+
+Nesta segunda definição, introduzimos o que chamaremos de *viralidade:*
+não apenas a pessoa ajudada precisa participar de pelo menos mais _v_
+acordos de ajuda como as pessoas ajudadas por esses próximos _v_ acordos
+precisam, após serem ajudadas, participarem como ajudantes em pelo menos
+mais _v_ acordos[2].
+
+A idéia principal da viralidade é que ela representa o custo social de
+uma ajuda: se recebo uma ajuda, devo retribuir não exatamente a quem me
+ajuda mas a todo o grupo social, participando como ajudante em pelo
+menos _v_ outros acordos.
+
+Por isso, os acordos não devem ser entendidos como moedas de troca: a
+moeda abstrai e aliena as relações sociais – já que pode ser trocada –
+enquanto que o acordo reforça e encoraja relações sociais. A moeda
+conserva valor (uma vez que ela é criada, basta que circule)[3]. Os
+acordos, ao contrário, geram valor o tempo todo por causa de sua
+viralidade. Eles criam valor social sem precisarem ser trocados, já que
+eles se reproduzem. Assim, devem ser entendidos mais na lógica da dádiva
+do que do contrato social.
+
+Modelo de acordo viral
+----------------------
+
+Na prática, convém termos um modelo de acordo para facilitar o
+dia-a-dia: pessoas nos pedem ajuda e em geral precisamos dar uma
+resposta rápida. Um modelo de acordo – onde o/a proponente pode ser
+qualquer uma das partes envolvidas e os acordos podem ser de múltiplas
+partes – deve ser simples e eficaz e por isso o texto do modelo de
+acordo abaixo serve para criar pequenos acordos entre pessoas:
+
+ Acordo de ajuda múltipla
+ ------------------------
+
+ O/a proponente/a deste acordo tem como objetivo multiplicar seus esforços de
+ ajuda. Para tal, é utilizado o princípio da reprodução viral de atividades
+ culturais.
+
+ Neste acordo, as pessoas ajudantes concordam a ajudar as pessoas, doravante
+ denominadas como ajudadas, desde que as ajudadas concordem em participar como
+ ajudantes em pelo menos X próximos acordos deste mesmo tipo (nos quais, por sua
+ vez, as pessoas ajudadas deverão participar como ajudantes em pelo menos X
+ acordos deste mesmo tipo e assim sucessivamente).
+
+ A contrapartida não precisa ser necessariamente no mesmo teor da ajuda
+ prestada.
+
+Esse modelo de acordo não pretende apenas incentivar a iniciativa e o
+protagonismo como também encorajar quem não ajuda ou não pede ajuda por
+conta de algum receio. Não podemos também deixar de mencionar que estes
+tipos de acordo só fazem sentido e apenas serão necessários enquanto a
+ajuda mútua/múltipla não for uma prática cultural comum e generalizada,
+quando então a prática descartará a necessidade de microacordos.
+
+O modelo acima é apenas uma sugestão: muitos outros podem ser feitos e
+inclusive é possível ainda tornar tais acordos acopláveis em licenças de
+manipulação de conteúdo. Desde que os acordos funcionem para criarem
+valor no grupo social, tão melhor. Sugestões de melhoria desse modelo
+seriam abrir margem para uma melhor definição de contrapartidas e
+estipular um prazo para que o acordo seja cumprido. Sugerimos que ao
+menos a simplicidade, a clareza e o tamanho reduzido do acordo sejam
+preservados.
+
+O valor social
+==============
+
+Como se comportaria um grupo social onde tal prática de acordos se
+iniciasse ou fosse já endêmica? Para nos auxiliar nesta e noutras
+perguntas, podemos recorrer a um mínimo de sistematização. Considerando
+um grupo social de _m_ pessoas, podemos definir a função *valor social*
+como sendo
+
+$$S = \displaystyle\sum_{p=1}^{m}\frac{\left(p\ n_p\right)^{v}}{mr}$$
+
+onde $n_p$ é a quantidade de acordos existentes envolvendo $p$
+pessoas[4], cada acordo com viralidade[5] $v$ e $r < m$ é o número de
+pessoas que *poderiam* [6] ter efetuado acordos mas que ficaram de fora
+(isto é, não fizeram acordo nenhum). O valor social assim definido exibe
+uma série de propriedades interessantes sob o ponto de vista das
+interações sociais, que pode ser revelado pela simples análise das
+componentes da somatória.
+
+Primeiramente, esse valor é uma propriedade do sistema social como um
+todo e não de um ou outro indivíduo. Em segundo lugar, quanto mais
+acordos envolvendo múltiplas partes, maior será o valor social: muitos
+acordos entre poucas partes podem ter um peso menor do que poucos
+acordos entre múltiplas partes. Um grupo social com muitos acordos de
+múltiplas partes possui maior ação coletiva (maior participação
+coletiva, maior coletividade) do que uma sociedade com acordos entre
+apenas poucas partes.
+
+Já a quantidade $m$ de pessoas do grupo e o total $r$ de pessoas que não
+participaram de nenhum tipo de acordo contribuem na diminuição do valor
+social: se poucas pessoas (em relação ao total $m$) fazem acordo, temos
+uma sociedade com pouca ajuda múltipla e, portanto, para que $S$ atinja
+valores significativos, é preciso que $m$ se torne quantitativamente
+menor em relação aos valores dos componentes $\left(p\ n_p\right)^{v}$.
+O mesmo vale para $r$: os componentes devem ser mais significativos do
+que a quantidade de pessoas que poderiam estar em acordos mas que
+ficaram de fora, ou seja, $S$ leva em conta a inclusão ou exclusão
+social da ação coletiva[7].
+
+Por fim, a viralidade potencializa a multiplicação de acordos: quanto
+maior for a viralidade, maior é o valor dos acordos, pois cada acordo é
+um acordo de ajuda futura e portanto de investimento na potencialidade
+das ações coletivas.
+
+Poderíamos ter definido um valor social de outra forma, mas sabemos que
+não há definição de valor que não haja um propósito e muito menos há uma
+definição sob a qual todas as outras se reduzem: o valor é uma
+propriedade definida pelo grupo social e deve servir a este: devemos
+buscar definições e convenções de valor (ou também suas indefinições)
+que nos sirvam. Não só acreditamos que esta teoria do valor sirva para
+mostrar como a ajuda múltipla implica numa maior ação coletiva como
+ainda exibe propriedades interessantíssimas do ponto de vista de
+sistemas dinâmicos.
+
+Por simplificação, podemos reescrever a equação anterior como
+
+$$S = k\displaystyle\sum_{p=1}^{m}\left(p\ n_p\right)^{v}$$
+
+onde $k = \frac{1}{mr}$. É claro que o valor de $k$
+pode mudar num dado grupo social – por exemplo: mais pessoas ingressando
+ou saindo do grupo ou então com um aumento ou diminuição de protagonistas
+de acordos – mas podemos considerá-lo como constante num dado momemto, ou seja,
+$k = k(t)$ e independente de outras variáveis.
+
+O que realmente nos interessa agora, no entanto, é que chega um momento
+em que o grupo social está com tantos acordos que, da forma como
+definimos na equação [eq:simples], $S$ começa a crescer absurdamente e
+já não passa a representar o valor efetivo de um corpo social onde a
+ajuda múltipla se faz presente. Em outras palavras: chega um momento em
+que as pessoas já estão tão endividadas de acordos a cumprir que mais
+dívidas não afetarão consideravelmente no seu comportamento de ajuda
+múltipla. Para refrear o crescimento indiscriminado de $S$,
+redefiniremos nossa função como
+
+$$S = k\ ln\displaystyle\sum_{p=1}^{m}\left(p\ n_p\right)^{v}$$
+
+onde _ln_ cumpre um amortecimento no crescimento da somatória, mostrando
+que o valor efetivo do grupo cresce logaritmicamente: temos um rápido
+crescimento do valor conforme os acordos se iniciam e se multiplicam e,
+conforme o endividamento social cresce, a sociedade atinge patamares de
+valor altos demais para que um maior acréscimo se torne significativo.
+
+Temos que, pela própria definição, $S$ é uma função de estado, uma vez
+que, definido um grupo social e suas interações a partir das variáveis
+$n$, $m$, $v$, $r$, etc, temos que $S$ é um indicativo do estado do
+sistema – indicando, por exemplo, se ele possui mais ou menos acordos (e
+qual a potência e alcance dos acordos) do que outro grupo social
+igualmente caracterizado. Além disso, obedece a
+
+$$\frac{dS}{dt} \geq 0$$
+
+Portanto, chamaremos nossa última definição de $S$ (equação [eq:valor])
+como *entropia econômica do grupo social*. Tal entropia mede,
+inicialmente, *o grau de endividamento do corpo social.* O endividamento
+é então a única forma de acúmulo possível: uma vez que alguém ajuda
+outrem, não é essa pessoa que detém um crédito: muito pelo contrário, as
+pessoas ajudadas contraem uma dívida com todo o corpo social, já que os
+acordos estipulam que a pessoa ajudada deve ajudar qualquer outra pessoa
+e não necessariamente quem a ajudou.
+
+A entropia tem sido fonte de controversias e mal-entendidos quanto à sua
+interpretação. Pela nossa definição, temos que uma entropia maior se
+deve exclusivamente a um aumento da complexidade do sistema social,
+complexidade que medimos utilizando um conjunto de variáveis que
+consideramos como características do sistema[8] que de algum modo
+representam o seu estado. Aqui, utilizamos número de acordos, viralidade
+dos acordos, etc, o que caracteriza uma abordagem de *granulação
+grosseira,* ou seja, de baixa resolução. Um cálculo de valor com maior
+resolução deveria levar em consideração, por exemplo, os acordos
+separadamente ao invés de agrupá-los por partes envolvidas.
+
+Descontrole social
+==================
+
+Esta se torna então uma teoria do descontrole social: o aumento da
+entropia é, aqui, não só benéfica como desejável, já que ela indica um
+aumento do número de interações. Se nas teorias do controle a entropia
+tem um aumento indesejável, aqui se torna o comportamento almejado.
+
+Sendo os acordos diretos, isto é, não mediados, temos ainda mais
+descontrole: é importantíssimo que tais acordos não sejam mediados por
+bancos de dados. Por banco de dados entendemos qualquer iniciativa de
+tentar *efetivamente* calcular $S$ para um dado grupo social (e não o
+registro pessoal que cada indivíduo mantiver a respeito dos acordos que
+participou). A mera existência de um banco de dados centralizado capaz
+de calcular a cada instante o valor social tem os seguintes riscos:
+
+- Dá margens para o estabelecimento de controles sociais com a
+ identificação das pessoas mais protagonistas (que participam de mais
+ acordos), das pessoas mais prestativas (as que mais ajudam), as que
+ mais são ajudadas e as que menos contribuem com ações coletivas,
+ possibilitando assim represálias, etc.
+
+- Se, por um lado, o banco de dados “facilita” a busca de pessoas que
+ querem ajuda e que podem ajudar, por outro diminuem a necessidade
+ das pessoas de travarem contato pessoal para iniciarem seus acordos,
+ já que o banco de dados detecta e aproxima as pessoas
+ automaticamente.
+
+- Acredita-se que seja de interesse do grupo social que a prática da
+ ajuda múltipla faça parte da sua cultura e não uma dependência do
+ banco de dados (o que seria um culto ao banco de dados).
+
+É com esse sentido de oposição aos bancos de dados que estabelecemos o
+conceito de valor social: não nos interessa calcular efetivamente o
+valor de $S$ para um dado grupo social e muito menos caracterizar cada
+grupo em função desses parâmetros, o que além de policialesco não
+representa o real valor social do grupo (afinal, nem discutimos as
+diferenças qualitativas de cada acordo). Queremos, ao contrário, mostrar
+*como se comporta* um grupo social adepto de acordos virais de ajuda
+múltipla. Podemos resumir isso com a seguinte expressão: *criamos um
+cálculo para auxiliar na compreensão o valor social mas jamais queremos
+que ele seja usado para quaintificá-lo,* mesmo porque muitos valores
+escapam da fórmula que estabelecemos. Não necessitamos de um banco
+porque, na ajuda múltipla, o sistema bancário já emerge do próprio
+tecido social.
+
+Desdobramentos
+==============
+
+Não sabemos os desdobramentos desta teoria do valor e desta prática de
+acordos aqui sugeridas. Num primeiro momento, podemos vislumbrar que, no
+limite desta teoria, o endividamento excessivo devido a acordos deve
+produzir uma prática social indistinguível de uma economia de dádivas
+onde não há expectativa de retribuição direta ou o uso da dádiva como
+demonstração de poder[9]. No caso da pedagogia também podemos
+vislumbrar um ótimo uso da ajuda múltipla: pessoas que aprenderam algo
+podem ensinar para outras, multiplicando o conhecimento ao invés de
+sempre recorrerem aos luminares do saber.
+
+Por outro lado, a existência e a propagação dos acordos pressupõem um
+grupo social pertencente a redes de relacionamentos afins, o que em
+certo sentido limita a aplicação da ajuda múltipla: e quem não participa
+da rede? E no caso de grupos em conflito interno?
+
+Estas são apenas sugestões de desdobramentos possíveis: convidamos todas
+as pessoas que queiram contribuir para a análise de regimes econômicos
+fora do mercado para que pensem conjuntamente no que aqui foi meramente
+delineado. A experimentação também é encorajada: sem ela, toda esta
+discussão não passa de uma teoria descolada dos grupos sociais.
+
+Referências
+===========
+
+1. Notar que esta definição de ajuda múltipla não é necessariamente
+ equivalente à de ajuda mútua utilizada em muitos estudos sobre
+ economia da dádiva: em alguns deles, a ajuda mútua ocorre quando
+ cada uma das partes envolvidas no acordo deve se ajudar
+ reciprocamente, enquanto que na ajuda múltipla isso não é
+ necessário. Não pretendemos neste texto sugerir a suposta
+ superioridade do conceito de ajuda múltipla sobre a ajuda mútua.
+ Muito pelo contrário: na falta de um devido estudo sobre a
+ literatura existente, preferimos utilizar um termo distinto da ajuda
+ ou apoio mútuo (mas que eventualmente possa ter o mesmo
+ significado).
+
+2. É claro que o valores de $v$ podem ser estipulados em cada acordo.
+
+3. Por *conservar valor* não queremos dizer que a moeda não sofre
+ valorização e desvalorização, mas sim que a moeda “congela”
+ trabalho.
+
+4. Começamos nossa somatória com $p = 1$ pois, apesar de ser um caso
+ em princípio bizarro (uma pessoa fazendo acordo consigo mesmo), não
+ deixa de ser uma possibilidade: posso, por exemplo, fazer um acordo
+ comigo mesmo e, caso o cumpra, ajudarei mais pessoas, sendo caso
+ clássico disso é a solidariedade de ex-viciados, por exemplo. Outro
+ argumento para manter $p = 1$ é a simplicidade.
+
+5. Poderíamos, é claro, supor um sistema onde cada acordo tivesse uma
+ viralidade $v$ própria, mas a complexidade do cálculo seria
+ desnecessária para esta primeira exposição do assunto.
+
+6. Que fique claro: $r$ não inclui pessoas que não podem ajudar, mas
+ apenas as que podem mas que ficaram de fora dos acordos.
+
+7. Alternativamente, poderíamos definir o divisor como $m^r$ ao invés
+ de $mr$, o que faria com que $S$ fosse muito mais sensível à
+ inclusão ou exclusão social. Optamos, no entanto, por uma abordagem
+ em que $m$ e $r$ contribuem com igual teor.
+
+8. Num sistema mais próximo da realidade teríamos trocentas outras
+ variáveis.
+
+9. O uso da dádiva como demonstração de poder seria, por exemplo uma
+ pessoa com mais recursos dar um presente a outra com menos recursos
+ de forma que seja causado um vínculo de relação seja paternalista,
+ humilhante, etc.
diff --git a/research/economics/valor-social/valor-social.dvi b/research/economics/valor-social/valor-social.dvi
new file mode 100644
index 0000000..6153ed6
--- /dev/null
+++ b/research/economics/valor-social/valor-social.dvi
Binary files differ
diff --git a/research/economics/valor-social/valor-social.pdf b/research/economics/valor-social/valor-social.pdf
new file mode 100644
index 0000000..8258df4
--- /dev/null
+++ b/research/economics/valor-social/valor-social.pdf
Binary files differ
diff --git a/research/economics/valor-social/valor-social.tex b/research/economics/valor-social/valor-social.tex
new file mode 100644
index 0000000..30a4475
--- /dev/null
+++ b/research/economics/valor-social/valor-social.tex
@@ -0,0 +1,158 @@
+\documentclass[a4paper]{article}
+\usepackage[brazilian]{babel}
+\usepackage[utf8]{inputenc}
+\usepackage[dvips]{graphics}
+\usepackage[ddmmyyyy]{datetime}
+\setlength\topmargin{0.3in}
+\setlength\headheight{0in}
+\setlength\headsep{0in}
+\setlength\textheight{9.5in}
+\setlength\textwidth{6.5in}
+\setlength\oddsidemargin{0in}
+\setlength\evensidemargin{0in}
+
+\title{A ajuda múltipla e o valor social}
+\author{Silvio Rhatto (rhatto em riseup.net)}
+\newdate{date}{26}{06}{2008}
+\date{\displaydate{date}}
+
+\begin{document}\label{start}
+\maketitle
+
+\begin{abstract}
+Procurando resolver um problema prático, este texto sistematiza uma forma de promover a ajuda múltipla através de acordos sucessivos e virais. Para auxiliar na sua compreensão, é definida uma forma de cálculo do valor social e suas consequências são avaliadas.
+\end{abstract}
+
+\section{Motivação}
+
+Em geral, quando ajudamos alguém (principalmente quando ensinamos algo), não há muita garantia que a pessoa ajudada passará a idéia pra frente, seja ajudando outrem ou passando o conhecimento adiante. Mesmo em coletivos horizontais, não-hierárquicos e baseados na ajuda mútua, não há necessariamente uma cultura de passar para frente a ajuda recebida. Por isso, estabelecemos neste texto uma sugestão de acordos de ajuda múltipla tanto como proposta de prática e sobretudo como reflexão da distância que os grupos sociais se encontram com relação a um regime de dádiva e não-escassez.
+
+\section{O acordo de ajuda múltipla}
+
+Para fomentar o aumento da ajuda entre as pessoas, criaremos o conceito de \emph{ajuda múltipla} e proporemos um pequeno acordo padrão para o seu estabelecimento. Pois bem: \emph{ajuda múltipla é a forma de colaboração onde uma ou mais pessoas (grupo A) auxiliam outras (grupo B) com a condição de que estas últimas efetuem ajuda múltipla auxiliando outras pessoas (grupo C)}. Atente para o fato de que definição é \emph{recursiva} (isto é, a definição necessita de sua própria definição): uma ajuda múltipla seria, por exemplo, Maria ajudar Lopes com a condição de que este ajude alguém no futuro. Note que o grupo C pode ser composto pelas mesmas pessoas do grupo A, mas não necessariamente: Lopes deve ajudar alguém, mas não necessariamente Maria\footnote{Notar que esta definição de ajuda múltipla não é necessariamente equivalente à de ajuda mútua utilizada em muitos estudos sobre economia da dádiva: em alguns deles, a ajuda mútua ocorre quando cada uma das partes envolvidas no acordo deve se ajudar reciprocamente, enquanto que na ajuda múltipla isso não é necessário. Não pretendemos neste texto sugerir a suposta superioridade do conceito de ajuda múltipla sobre a ajuda mútua. Muito pelo contrário: na falta de um devido estudo sobre a literatura existente, preferimos utilizar um termo distinto da ajuda ou apoio mútuo (mas que eventualmente possa ter o mesmo significado).}.
+
+\subsection{Viralidade (ou potência) do acordo}
+
+Estamos interessados/as na possibilidade da multiplicação da ajuda e, para tanto, devemos melhorar nossa definição de ajuda múltipla: ajuda múltipla é a forma de colaboração onde uma ou mais pessoas (grupo A) auxiliam outras (grupo B) com a condição de que estas últimas efetuem \emph{pelo menos $v$ ajudas múltiplas} (onde $v$ é um número inteiro positivo) auxiliando outras pessoas (grupo C, D, E, etc) com a condição de que as próximas pessoas também pratiquem ajuda múltipla e assim por diante.
+
+Nesta segunda definição, introduzimos o que chamaremos de \emph{viralidade}: não apenas a pessoa ajudada precisa participar de pelo menos mais $v$ acordos de ajuda como as pessoas ajudadas por esses próximos $v$ acordos precisam, após serem ajudadas, participarem como ajudantes em pelo menos mais $v$ acordos\footnote{É claro que o valores de $v$ podem ser estipulados em cada acordo.}.
+
+A idéia principal da viralidade é que ela representa o custo social de uma ajuda: se recebo uma ajuda, devo retribuir não exatamente a quem me ajuda mas a todo o grupo social, participando como ajudante em pelo menos $v$ outros acordos.
+
+Por isso, os acordos não devem ser entendidos como moedas de troca: a moeda abstrai e aliena as relações sociais -- já que pode ser trocada -- enquanto que o acordo reforça e encoraja relações sociais. A moeda conserva valor (uma vez que ela é criada, basta que circule)\footnote{Por \emph{conservar valor} não queremos dizer que a moeda não sofre valorização e desvalorização, mas sim que a moeda ``congela'' trabalho.}. Os acordos, ao contrário, geram valor o tempo todo por causa de sua viralidade. Eles criam valor social sem precisarem ser trocados, já que eles se reproduzem. Assim, devem ser entendidos mais na lógica da dádiva do que do contrato social.
+
+\subsection{Modelo de acordo viral}
+
+Na prática, convém termos um modelo de acordo para facilitar o dia-a-dia: pessoas nos pedem ajuda e em geral precisamos dar uma resposta rápida. Um modelo de acordo -- onde o/a proponente pode ser qualquer uma das partes envolvidas e os acordos podem ser de múltiplas partes -- deve ser simples e eficaz e por isso o texto do modelo de acordo abaixo serve para criar pequenos acordos entre pessoas:
+
+\begin{verbatim}
+Acordo de ajuda múltipla
+------------------------
+
+O/a proponente/a deste acordo tem como objetivo multiplicar seus esforços de
+ajuda. Para tal, é utilizado o princípio da reprodução viral de atividades
+culturais.
+
+Neste acordo, as pessoas ajudantes concordam a ajudar as pessoas, doravante
+denominadas como ajudadas, desde que as ajudadas concordem em participar como
+ajudantes em pelo menos X próximos acordos deste mesmo tipo (nos quais, por sua
+vez, as pessoas ajudadas deverão participar como ajudantes em pelo menos X
+acordos deste mesmo tipo e assim sucessivamente).
+
+A contrapartida não precisa ser necessariamente no mesmo teor da ajuda
+prestada.
+\end{verbatim}
+
+Esse modelo de acordo não pretende apenas incentivar a iniciativa e o protagonismo como também encorajar quem não ajuda ou não pede ajuda por conta de algum receio. Não podemos também deixar de mencionar que estes tipos de acordo só fazem sentido e apenas serão necessários enquanto a ajuda mútua/múltipla não for uma prática cultural comum e generalizada, quando então a prática descartará a necessidade de microacordos.
+
+O modelo acima é apenas uma sugestão: muitos outros podem ser feitos e inclusive é possível ainda tornar tais acordos acopláveis em licenças de manipulação de conteúdo. Desde que os acordos funcionem para criarem valor no grupo social, tão melhor. Sugestões de melhoria desse modelo seriam abrir margem para uma melhor definição de contrapartidas e estipular um prazo para que o acordo seja cumprido. Sugerimos que ao menos a simplicidade, a clareza e o tamanho reduzido do acordo sejam preservados.
+
+\section{O valor social}
+
+Como se comportaria um grupo social onde tal prática de acordos se iniciasse ou fosse já endêmica? Para nos auxiliar nesta e noutras perguntas, podemos recorrer a um mínimo de sistematização. Considerando um grupo social de $m$ pessoas, podemos definir a função \emph{valor social} como sendo
+
+\begin{equation}
+\label{eq:valor_draft}
+S = \displaystyle\sum_{p=1}^{m}\frac{\left(p\ n_p\right)^{v}}{mr}
+\end{equation}
+
+onde $n_p$ é a quantidade de acordos existentes envolvendo $p$ pessoas\footnote{Começamos nossa somatória com $p = 1$ pois, apesar de ser um caso em princípio bizarro (uma pessoa fazendo acordo consigo mesmo), não deixa de ser uma possibilidade: posso, por exemplo, fazer um acordo comigo mesmo e, caso o cumpra, ajudarei mais pessoas, sendo caso clássico disso é a solidariedade de ex-viciados, por exemplo. Outro argumento para manter $p = 1$ é a simplicidade.}, cada acordo com viralidade\footnote{Poderíamos, é claro, supor um sistema onde cada acordo tivesse uma viralidade $v$ própria, mas a complexidade do cálculo seria desnecessária para esta primeira exposição do assunto.} $v$ e $r < m$ é o número de pessoas que \emph{poderiam}\footnote{Que fique claro: $r$ não inclui pessoas que não podem ajudar, mas apenas as que podem mas que ficaram de fora dos acordos.} ter efetuado acordos mas que ficaram de fora (isto é, não fizeram acordo nenhum). O valor social assim definido exibe uma série de propriedades interessantes sob o ponto de vista das interações sociais, que pode ser revelado pela simples análise das componentes da somatória.
+
+Primeiramente, esse valor é uma propriedade do sistema social como um todo e não de um ou outro indivíduo. Em segundo lugar, quanto mais acordos envolvendo múltiplas partes, maior será o valor social: muitos acordos entre poucas partes podem ter um peso menor do que poucos acordos entre múltiplas partes. Um grupo social com muitos acordos de múltiplas partes possui maior ação coletiva (maior participação coletiva, maior coletividade) do que uma sociedade com acordos entre apenas poucas partes.
+
+Já a quantidade $m$ de pessoas do grupo e o total $r$ de pessoas que não participaram de nenhum tipo de acordo contribuem na diminuição do valor social: se poucas pessoas (em relação ao total $m$) fazem acordo, temos uma sociedade com pouca ajuda múltipla e, portanto, para que $S$ atinja valores significativos, é preciso que $m$ se torne quantitativamente menor em relação aos valores dos componentes $\left(p\ n_p\right)^{v}$. O mesmo vale para $r$: os componentes devem ser mais significativos do que a quantidade de pessoas que poderiam estar em acordos mas que ficaram de fora, ou seja, $S$ leva em conta a inclusão ou exclusão social da ação coletiva\footnote{Alternativamente, poderíamos definir o divisor como $m^r$ ao invés de $mr$, o que faria com que $S$ fosse muito mais sensível à inclusão ou exclusão social. Optamos, no entanto, por uma abordagem em que $m$ e $r$ contribuem com igual teor.}.
+
+Por fim, a viralidade potencializa a multiplicação de acordos: quanto maior for a viralidade, maior é o valor dos acordos, pois cada acordo é um acordo de ajuda futura e portanto de investimento na potencialidade das ações coletivas.
+
+Poderíamos ter definido um valor social de outra forma, mas sabemos que não há definição de valor que não haja um propósito e muito menos há uma definição sob a qual todas as outras se reduzem: o valor é uma propriedade definida pelo grupo social e deve servir a este: devemos buscar definições e convenções de valor (ou também suas indefinições) que nos sirvam. Não só acreditamos que esta teoria do valor sirva para mostrar como a ajuda múltipla implica numa maior ação coletiva como ainda exibe propriedades interessantíssimas do ponto de vista de sistemas dinâmicos.
+
+Por simplificação, podemos reescrever a equação anterior como
+
+\begin{equation}
+\label{eq:simples}
+S = k\displaystyle\sum_{p=1}^{m}\left(p\ n_p\right)^{v}
+\end{equation}
+
+onde $k = \frac{1}{mr}$. É claro que o valor de $k$ pode mudar num dado grupo social -- por exemplo: mais pessoas ingressando ou saindo do grupo ou então com um aumento ou diminuição de protagonistas de acordos -- mas podemos considerá-lo como constante num dado momemto, ou seja, $k = k(t)$ e independente de outras variáveis.
+
+O que realmente nos interessa agora, no entanto, é que chega um momento em que o grupo social está com tantos acordos que, da forma como definimos na equação \ref{eq:simples}, $S$ começa a crescer absurdamente e já não passa a representar o valor efetivo de um corpo social onde a ajuda múltipla se faz presente. Em outras palavras: chega um momento em que as pessoas já estão tão endividadas de acordos a cumprir que mais dívidas não afetarão consideravelmente no seu comportamento de ajuda múltipla. Para refrear o crescimento indiscriminado de $S$, redefiniremos nossa função como
+
+\begin{equation}
+\label{eq:valor}
+S = k\ ln\displaystyle\sum_{p=1}^{m}\left(p\ n_p\right)^{v}
+\end{equation}
+
+onde $ln$ cumpre um amortecimento no crescimento da somatória, mostrando que o valor efetivo do grupo cresce logaritmicamente: temos um rápido crescimento do valor conforme os acordos se iniciam e se multiplicam e, conforme o endividamento social cresce, a sociedade atinge patamares de valor altos demais para que um maior acréscimo se torne significativo.
+
+Temos que, pela própria definição, $S$ é uma função de estado, uma vez que, definido um grupo social e suas interações a partir das variáveis $n$, $m$, $v$, $r$, etc, temos que $S$ é um indicativo do estado do sistema -- indicando, por exemplo, se ele possui mais ou menos acordos (e qual a potência e alcance dos acordos) do que outro grupo social igualmente caracterizado. Além disso, obedece a
+
+\begin{equation}
+\frac{dS}{dt} \geq 0
+\end{equation}
+
+Portanto, chamaremos nossa última definição de $S$ (equação \ref{eq:valor}) como \emph{entropia econômica do grupo social}. Tal entropia mede, inicialmente, \emph{o grau de endividamento do corpo social}. O endividamento é então a única forma de acúmulo possível: uma vez que alguém ajuda outrem, não é essa pessoa que detém um crédito: muito pelo contrário, as pessoas ajudadas contraem uma dívida com todo o corpo social, já que os acordos estipulam que a pessoa ajudada deve ajudar qualquer outra pessoa e não necessariamente quem a ajudou.
+
+A entropia tem sido fonte de controversias e mal-entendidos quanto à sua interpretação. Pela nossa definição, temos que uma entropia maior se deve exclusivamente a um aumento da complexidade do sistema social, complexidade que medimos utilizando um conjunto de variáveis que consideramos como características do sistema\footnote{Num sistema mais próximo da realidade teríamos trocentas outras variáveis.} que de algum modo representam o seu estado. Aqui, utilizamos número de acordos, viralidade dos acordos, etc, o que caracteriza uma abordagem de \emph{granulação grosseira}, ou seja, de baixa resolução. Um cálculo de valor com maior resolução deveria levar em consideração, por exemplo, os acordos separadamente ao invés de agrupá-los por partes envolvidas.
+
+\section{Descontrole social}
+
+Esta se torna então uma teoria do descontrole social: o aumento da entropia é, aqui, não só benéfica como desejável, já que ela indica um aumento do número de interações. Se nas teorias do controle a entropia tem um aumento indesejável, aqui se torna o comportamento almejado.
+
+Sendo os acordos diretos, isto é, não mediados, temos ainda mais descontrole: é importantíssimo que tais acordos não sejam mediados por bancos de dados. Por banco de dados entendemos qualquer iniciativa de tentar \emph{efetivamente} calcular $S$ para um dado grupo social (e não o registro pessoal que cada indivíduo mantiver a respeito dos acordos que participou). A mera existência de um banco de dados centralizado capaz de calcular a cada instante o valor social tem os seguintes riscos:
+
+\begin{itemize}
+\item Dá margens para o estabelecimento de controles sociais com a identificação das pessoas mais protagonistas (que participam de mais acordos), das pessoas mais prestativas (as que mais ajudam), as que mais são ajudadas e as que menos contribuem com ações coletivas, possibilitando assim represálias, etc.
+\item Se, por um lado, o banco de dados ``facilita'' a busca de pessoas que querem ajuda e que podem ajudar, por outro diminuem a necessidade das pessoas de travarem contato pessoal para iniciarem seus acordos, já que o banco de dados detecta e aproxima as pessoas automaticamente.
+\item Acredita-se que seja de interesse do grupo social que a prática da ajuda múltipla faça parte da sua cultura e não uma dependência do banco de dados (o que seria um culto ao banco de dados).
+\end{itemize}
+
+É com esse sentido de oposição aos bancos de dados que estabelecemos o conceito de valor social: não nos interessa calcular efetivamente o valor de $S$ para um dado grupo social e muito menos caracterizar cada grupo em função desses parâmetros, o que além de policialesco não representa o real valor social do grupo (afinal, nem discutimos as diferenças qualitativas de cada acordo). Queremos, ao contrário, mostrar \emph{como se comporta} um grupo social adepto de acordos virais de ajuda múltipla. Podemos resumir isso com a seguinte expressão: \emph{criamos um cálculo para auxiliar na compreensão o valor social mas jamais queremos que ele seja usado para quaintificá-lo}, mesmo porque muitos valores escapam da fórmula que estabelecemos. Não necessitamos de um banco porque, na ajuda múltipla, o sistema bancário já emerge do próprio tecido social.
+
+\section{Desdobramentos}
+
+Não sabemos os desdobramentos desta teoria do valor e desta prática de acordos aqui sugeridas. Num primeiro momento, podemos vislumbrar que, no limite desta teoria, o endividamento excessivo devido a acordos deve produzir uma prática social indistinguível de uma economia de dádivas onde não há expectativa de retribuição direta ou o uso da dádiva como demonstração de poder\footnote{O uso da dádiva como demonstração de poder seria, por exemplo uma pessoa com mais recursos dar um presente a outra com menos recursos de forma que seja causado um vínculo de relação seja paternalista, humilhante, etc.}. No caso da pedagogia também podemos vislumbrar um ótimo uso da ajuda múltipla: pessoas que aprenderam algo podem ensinar para outras, multiplicando o conhecimento ao invés de sempre recorrerem aos luminares do saber.
+
+Por outro lado, a existência e a propagação dos acordos pressupõem um grupo social pertencente a redes de relacionamentos afins, o que em certo sentido limita a aplicação da ajuda múltipla: e quem não participa da rede? E no caso de grupos em conflito interno?
+
+Estas são apenas sugestões de desdobramentos possíveis: convidamos todas as pessoas que queiram contribuir para a análise de regimes econômicos fora do mercado para que pensem conjuntamente no que aqui foi meramente delineado. A experimentação também é encorajada: sem ela, toda esta discussão não passa de uma teoria descolada dos grupos sociais.
+
+\section{Distribuição deste texto}
+
+Este texto é manipulável segundo sua própria licença de Copyfarleft e que atribui ao detentor/a da informação as seguintes liberdades:
+
+\begin{enumerate}
+\item A liberdade de armazenar a informação.
+\item A liberdade de manipular a informação.
+\item A liberdade de distribuir a informação, modificada ou não.
+\end{enumerate}
+
+Com as seguintes observações:
+
+\begin{enumerate}
+\item Desde que esta licença acompanhe a informação.
+\item Desde que para fins não-comerciais.
+\item Desde que a fonte seja citada.
+\item Caso ocorra uma modificação, informe a pessoa autora.
+\end{enumerate}
+
+\end{document}
diff --git a/research/epistemologia.md b/research/epistemologia.md
deleted file mode 100644
index 2db7130..0000000
--- a/research/epistemologia.md
+++ /dev/null
@@ -1,36 +0,0 @@
-[[!meta title="Epistemologia"]]
-
-Epistemology: data, routines, systems.
-
-## Branching hypothesis
-
-* Diferenciação aplicada à história e à história da ciência.
-* É um processo de criaçãode ramos que lida com excessões.
-
-### Hipótese 1
-
-Qualquer conjunto de ideias e teorias pode ser organizado
-numa árvore lógica.
-
-A forquilha indica a cisão; o nível acima, ou metanível, representa uma
-categoria unificadora. Assim, mesmo a contradição se encaixa.
-
-### Hipótese 2
-
-Neste esquema, fatos são definidos como **trechos** de caminhos:
-um mesmo fato percorre regiões da árvore, podendo simultaneamente andar por
-diversos ramos.
-
-Fatos são observações do real mapeado em ideias que não necessariamente
-representam o real e que não necessariamente simulam o real com acurácia.
-
-Fatos são tão relativos quanto ideias.
-
-Um entendimento do real é a árvore junto com um caminho percorrido.
-De modo que se torna possível a seleção de concepções de mundo.
-
-### Hipótese 3
-
-Qualquer conjunto de ideias pode ser racionalizado, isto é,
-descrito/justificado por um sistema de regras, por mais estaparfúrdio
-que seja.
diff --git a/research/hardened.md b/research/hardened.md
deleted file mode 100644
index f59a43e..0000000
--- a/research/hardened.md
+++ /dev/null
@@ -1,44 +0,0 @@
-[[!meta title="Hardened OS"]]
-[[!tag research hardened grsecurity security]]
-
-grsecurity
-----------
-
-Basic install:
-
- sudo apt-get -t jessie-backports install linux-image-4.9.0-2-grsec-amd64 linux-image-grsec-amd64
- sudo apt-get install paxtest
- sudo usermod -aG grsec-tpe `whoami`
-
-As root:
-
- echo "kernel.grsecurity.rwxmap_logging = 0" > /etc/sysctl.d/kernel.grsecurity.rwxmap_logging.conf
- echo "kernel.grsecurity.grsec_lock = 1" > /etc/sysctl.d/kernel.grsecurity.grsec_lock.conf
-
-As regular user, after reboot:
-
- paxctl -cm /usr/bin/git-annex
- paxctl -cm /usr/bin/qemu-img
- paxctl -cm /usr/bin/qemu-system-x86_64
-
-Further research
-----------------
-
-LXC unprivileged containers for GUI applications:
-
-* [LXC 1.0: GUI in containers [9/10] | Stéphane Graber's website](https://stgraber.org/2014/02/09/lxc-1-0-gui-in-containers/).
-* [Configuring Unprivileged LXC containers in Debian Jessie](https://myles.sh/configuring-lxc-unprivileged-containers-in-debian-jessie/).
-* [LXC - Debian Wiki](https://wiki.debian.org/LXC).
-
-References
-----------
-
-* https://micahflee.com/2016/01/debian-grsecurity/
-* https://nixaid.com/grsec-in-docker/
-* https://hardenedlinux.github.io/
-* https://packages.debian.org/stretch/bubblewrap
-* https://packages.debian.org/stretch/runc
-* https://github.com/projectatomic/bubblewrap
-* https://github.com/opencontainers/runc
-* https://github.com/thestinger/playpen
-* https://github.com/omegaup/minijail
diff --git a/research/library.md b/research/library.md
deleted file mode 100644
index 5d97158..0000000
--- a/research/library.md
+++ /dev/null
@@ -1,73 +0,0 @@
-[[!meta title="Libraries"]]
-
-Library Management
-------------------
-
-* [Open Publication Distribution System | Official Specification & Blog](http://opds-spec.org/).
-* [FBReader Calibre connector - F-Droid](https://f-droid.org/repository/browse/?fdfilter=calibre&fdid=org.geometerplus.fbreader.plugin.local_opds_scanner).
-* [Create Your Own Cloud of Ebooks with Calibre + Calibre OPDS + Dropbox](http://dearauthor.com/ebooks/create-your-own-cloud-of-ebooks-with-calibre-calibre-opds-dropbox/).
-* [Turn Raspberry Pi into an Ebook Server with Cal... » Linux Magazine](http://www.linux-magazine.com/Online/Blogs/Productivity-Sauce/Turn-Raspberry-Pi-into-an-Ebook-Server-with-Calibre).
-* [Here is COPS : Calibre OPDS (and HTML) PHP Server | Technology and Me](http://blog.slucas.fr/en/oss/calibre-opds-php-server).
-
-Bibliography Management
------------------------
-
-* [Comparison of reference management software - Wikipedia](https://en.wikipedia.org/wiki/Comparison_of_reference_management_software).
-* [Citeproc YAML for bibliographies](http://blog.martinfenner.org/2013/07/30/citeproc-yaml-for-bibliographies/).
-* [BibTeX](http://www.bibtex.org/) ([ikiwiki plugin](https://ikiwiki.info/plugins/contrib/bibtex/)).
-* [Citation Style Language - Wikipedia](https://en.wikipedia.org/wiki/Citation_Style_Language).
-* [JSON-LD - Wikipedia](https://en.wikipedia.org/wiki/JSON-LD).
-* [Exporting all yaml bibliographic in a pdf file using pandoc - Stack Overflow](http://stackoverflow.com/questions/20077939/exporting-all-yaml-bibliographic-in-a-pdf-file-using-pandoc).
-* [FileMeta/MicroYaml: A simple parser for the MicroYaml dialect of the YAML file format.](https://github.com/FileMeta/MicroYaml).
-* [jtprince/bivy: "bibliography in vim and yaml" is a lightweight bibliographic management system. Create bibliographies and citations with simple tools.](https://github.com/jtprince/bivy)
-* [jbaiter/zotero-cli: Command-line interface for Zotero](https://github.com/jbaiter/zotero-cli).
-* [vhotspur/cli-zotero: Command-line client for Zotero (BibTeX export now only)](https://github.com/vhotspur/cli-zotero).
-* [pandoc-citeproc in stretch](https://packages.debian.org/stretch/pandoc-citeproc).
-
-Standards
----------
-
-* Metadata organization:
- * Lowercase, underlines and dashes.
- * Easytag and picard.
- * UUID, IMDB ID, etc.
- * AcousticBrainz: http://lwn.net/Articles/622682/rss
- * Update changes in playlists.
-* Filenaming, fixing names with [convmv](https://packages.debian.org/stable/convmv).
-
-Subtitles
----------
-
-* http://subscene.com
-* http://www.subtitleseeker.com
-* http://www.opensubtitles.org
-
-Corrente dos Achados & Deixados
--------------------------------
-
-Recebi algo assim:
-
- Esqueça um livro e espalhe conhecimento.
-
- Vamos?
-
- Deixe no restaurante, no ponto de ônibus, dentro do metrô, sobre a bancada do
- banco , no táxi. A escolha é livre.
-
- Vale um bilhetinho, explicando o projeto e o presente !
-
- Modelo de Bilhetinho:
-
- Ei, você que achou este livro!
-
- Agora ele é SEU!
-
- A iniciativa faz parte de um projeto de incentivo à leitura e
- compartilhamento de conhecimento.
-
- Encoraje-se a fazer o mesmo! :)
-
-References
-----------
-
-* http://www.datalove.net
diff --git a/research/openwrt.md b/research/openwrt.md
deleted file mode 100644
index e2e9e03..0000000
--- a/research/openwrt.md
+++ /dev/null
@@ -1,64 +0,0 @@
-[[!meta title="Wireless com OpenWRT"]]
-
-Pesquisa rápida sobre roteadores wireless.
-
-Requisitos
-----------
-
-1. Bom alcance (potência e sensibilidade).
-2. [Rodar OpenWRT](https://wiki.openwrt.org/toh).
-3. Preferencialmente arquitetura MIPS.
-
-Candidatos
-----------
-
-### TP-Link TL-WDR4300
-
-* [TP-Link TL-WDR4300](https://wiki.openwrt.org/toh/tp-link/tl-wdr4300).
-* [Download for TL-WDR4300 V1 - Welcome to TP-LINK](http://www.tp-link.com/en/download/TL-WDR4300.html).
-
-### TP-Link Archer C5 AC1200
-
-* Problema: vendor lockdown: dependendo da versão, só carrega firmware assinado.
-* [TP-Link Archer C5 AC1200 / TP-Link Archer C7 AC1750 / TP-Link TL-WDR7500](https://wiki.openwrt.org/toh/tp-link/archer-c5-c7-wdr7500).
-
-### TP-Link TL-WR941ND
-
-* [TP-Link TL-WR941ND](https://wiki.openwrt.org/toh/tp-link/tl-wr941nd).
-
-Escolhido
----------
-
-* [TP-Link TL-WDR4300](https://wiki.openwrt.org/toh/tp-link/tl-wdr4300): é um dos [recomendados](https://wiki.openwrt.org/toh/recommended_routers); [comparação de preços](http://www.buscape.com.br/tp-link-tl-wdr4300) (ar71xx).
-
-Configuração
-------------
-
-* [Bridged AP [OpenWrt Wiki]](https://wiki.openwrt.org/doc/recipes/bridgedap).
-* [Client Mode Wireless [OpenWrt Wiki]](https://wiki.openwrt.org/doc/howto/clientmode).
-
-Upgrade de versão
------------------
-
-* Referência: [OpenWrt OS upgrade procedure (LuCI or sysupgrade)](http://wiki.openwrt.org/doc/howto/generic.sysupgrade).
-* Baixe e verifique a integridade (sha256sum, gpg, etc) da nova versão do firmware.
-* Verifique se todas as modificações de configuração serão preservadas no upgrade (vide referência).
-* Suba para o roteador e atualize.
-* Exemplo:
-
- tpc$ scp openwrt-15.05.1-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin router:/tmp
- router# sysupgrade -v /tmp/openwrt-15.05.1-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin
-
-Upgrade de pacotes
-------------------
-
-Conforme [documentação](http://wiki.openwrt.org/doc/howto/generic.sysupgrade#check_for_any_upgradable_packages), mas sendo também um [procedimento questionável](https://superuser.com/questions/1121313/updating-openwrt-due-to-security-issues):
-
- opkg update
- opkg list-upgradable
- opkg upgrade <pacotes> # certifique-se de que haja espaço suficiente em /
-
-Anúncios de segurança
----------------------
-
-* [openwrt-security-announce](https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-security-announce)
diff --git a/research/panc.md b/research/panc.md
deleted file mode 100644
index 04b584e..0000000
--- a/research/panc.md
+++ /dev/null
@@ -1,45 +0,0 @@
-[[!meta title="PANC - Plantas Alimentícias Não-Convencionais"]]
-
-* Plantas Ruderais, ruderis, entulho: se desenvolvem com freq. Em ambientes hab por humanos, colonizadoras de áreas degradadas. PANC x Ruderal (há intersecção)
-* Dormência de semente: revolver um vaso pode reativá-la.
-* 30 mil comestíveis de 300 mil espécie total, mas 90% do rango mundial vem de 20 espécies
-* Preferir nome científico
-* Status legal da coleta urbana? "Melhoria" da limpeza. Como defender?
-* PANCS amargas!
-* Roda PANC!
-
-## Espécies
-
-* Ora pro nobis: fonte de proteínas.
-* Grumixama, cereja do rio grande
-* Serralha, dente de leão, beldroega, major gomes
-* Caruru família quinoa amaranto
-* Taioba:
- * Fica esperto mermao: folha sai do meio do talo
- * Formato de Orelhinha, nervura ao redor da folha
-
-## Estaca, estaquia
-
-* Um palmo com um corte na transversal em cada extremidade: aumento contato raíz e escoamento do topo
-* Tirar folhas, deixando poucas pra reduzir a evapotranspiração e reduzir gasto energético.
-* Plantar na direção correta.
-* Enterrar ao menos duas gemas.
-
-## Referências
-
-* Fitoalimurgia, Otaviano Tozetti
-* PANC, Projeto PANC, Valdely Kinupp
-* História da agricultura no mundo, marcel mazoyer e lawrence roudart
-* Livro do knuppi e do lorenzi
-* Instituto plantarum
-* [Como diferenciar serralha e dente-de-leão](http://www.matosdecomer.com.br/2016/08/como-diferenciar-serralha-e-dente-de.html).
-* [Cartilha Guia Prático de PANC Plantas Alimenticias Nao Convencionais](http://institutokairos.net/wp content/uploads/2017/08/Cartilha Guia Pr%C3%A1tico de PANC Plantas Alimenticias Nao Convencionais.pdf).
-
-## Pesquisas futuras:
-
-* C2 ou C3?
-* Venenosas?
-* Doenças?
-* Contaminação?
-* Aplicativo botânico para identificação de plantas
-* Musgo?
diff --git a/research/python.md b/research/python.md
deleted file mode 100644
index 98e007f..0000000
--- a/research/python.md
+++ /dev/null
@@ -1,225 +0,0 @@
-[[!meta title="Python"]]
-
-## Learning Python
-
-### Which version to start? 2.x or 3.x?
-
-Short answer: start learning 3.x and, if needed, check the differences with 2.x.
-
-From [Should I use Python 2 or Python 3 for my development activity?](Should I use Python 2 or Python 3 for my development activity?):
-
- Besides, several aspects of the core language (such as print and exec being
- statements, integers using floor division) have been adjusted to be easier for
- newcomers to learn and to be more consistent with the rest of the language, and
- old cruft has been removed (for example, all classes are now new-style,
- "range()" returns a memory efficient iterable, not a list as in 2.x).
-
- [...]
-
- In particular, instructors introducing Python to new programmers should
- consider teaching Python 3 first and then introducing the differences in Python
- 2 afterwards (if necessary), since Python 3 eliminates many quirks that can
- unnecessarily trip up beginning programmers trying to learn Python 2.
-
-Also:
-
-* [Python Future: Easy, clean, reliable Python 2/3 compatibility](http://python-future.org/).
-* [Should I learn Python 2 or 3?](https://www.dataquest.io/blog/python-2-or-3/).
-
-### General
-
-* Everything is an object. Really? What about symbols like + - and =?
-* The `dir()` and `help()` functions are really useful.
-* Great idea: iteration protocol.
-* There are sequences and sum operations common for all types and specific type operations.
-
-### Iteration and optimization
-
- In general, leading and trailing double underscores is the naming pattern
- Python uses for implementation details. The names without the underscores in
- this list are the callable methods on string objects.
-
-### Polymorphism
-
-Python encourages polymorphism:
-
- This is related to the idea of polymorphism mentioned earlier, and it stems
- from Python’s lack of type declarations. As you’ll learn, in Python, we code to
- object interfaces (operations supported), not to types. That is, we care what
- an object does, not what it is. Not caring about specific types means that code
- is automatically applicable to many of them—any object with a compatible
- interface will work, regardless of its specific type. Although type checking is
- supported—and even required in some rare cases—you’ll see that it’s not usually
- the “Pythonic” way of thinking. In fact, you’ll find that polymorphism is
- probably the key idea behind using Python well.
-
-### Numeric Display Formats
-
-* [14. Floating Point Arithmetic: Issues and Limitations — Python 2.7.13 documentation](https://docs.python.org/2/tutorial/floatingpoint.html)
-* [What Every Computer Scientist Should Know About Floating-Point Arithmetic](https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)
-* [Floating-point arithmetic - Wikipedia](https://en.wikipedia.org/wiki/Floating-point_arithmetic).
-
- This floating-point limitation is especially apparent for values that cannot be
- represented accurately given their limited number of bits in memory.
-
- [...]
-
- fractions and decimals both allow more intuitive and accurate results than
- floating points sometimes can, in different ways—by using rational
- representation and by limiting precision
-
-### Types
-
- More formally, there are three major type (and operation) categories in Python
- that have this generic nature:
-
- Numbers (integer, floating-point, decimal, fraction, others)
- Support addition, multiplication, etc.
-
- Sequences (strings, lists, tuples)
- Support indexing, slicing, concatenation, etc.
-
- Mappings (dictionaries)
- Support indexing by key, etc.
-
- [...]
-
- The major core types in Python break down as follows:
-
- Immutables (numbers, strings, tuples, frozensets)
- None of the object types in the immutable category support in-place changes,
- though we can always run expressions to make new objects and assign their
- results to variables as needed.
-
- Mutables (lists, dictionaries, sets, bytearray)
- Conversely, the mutable types can always be changed in place with operations
- that do not create new objects. Although such objects can be copied, in-place
- changes support direct modification.
-
-So remember that when [copying](https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list#2612815)
-or referencing a list.
-
-Also, [take care with handling mutables as arguments and as default arguments](http://www.thedigitalcatonline.com/blog/2015/02/11/default-arguments-in-python/),
-also explained [here](https://docs.python.org/3/tutorial/controlflow.html#default-argument-values) and [here](https://docs.python-guide.org/writing/gotchas/)
-(common gotchas).
-
-From [Scopes an Namespaces](https://docs.python.org/3/tutorial/classes.html#python-scopes-and-namespaces), telling that assignments bind names to objects:
-
- A special quirk of Python is that – if no global statement is in effect –
- assignments to names always go into the innermost scope. Assignments do not
- copy data — they just bind names to objects. The same is true for deletions:
- the statement del x removes the binding of x from the namespace referenced by
- the local scope. In fact, all operations that introduce new names use the local
- scope: in particular, import statements and function definitions bind the
- module or function name in the local scope.
-
- The global statement can be used to indicate that particular variables live in
- the global scope and should be rebound there; the nonlocal statement indicates
- that particular variables live in an enclosing scope and should be rebound
- there.
-
- [...]
-
- Actually, you may have guessed the answer: the special thing about methods is
- that the instance object is passed as the first argument of the function. In
- our example, the call x.f() is exactly equivalent to MyClass.f(x). In general,
- calling a method with a list of n arguments is equivalent to calling the
- corresponding function with an argument list that is created by inserting the
- method’s instance object before the first argument.
-
-Week references (from [here](https://docs.python.org/3/tutorial/stdlib2.html):
-
- Python does automatic memory management (reference counting for most objects
- and garbage collection to eliminate cycles). The memory is freed shortly after
- the last reference to it has been eliminated.
-
-Now explain this:
-
- Python 2.7.13 (default, Sep 26 2018, 18:42:22)
- [GCC 6.3.0 20170516] on linux2
- Type "help", "copyright", "credits" or "license" for more information.
- >>> hex(id([]))
- '0x7f6264bbf368'
- >>> hex(id([]))
- '0x7f6264bbf368'
- >>> x = []
- >>> hex(id(x))
- '0x7f6264bbf368' # both x and [] points to the same memory location
- >>> x.append('0')
- >>> hex(id(x))
- '0x7f6264bbf368' # x still points to the same memory location
- >>> hex(id([]))
- '0x7f6264baeab8' # now [] points somewhere else
- >>> hex(id('test'))
- '0x7f6264bc9480'
- >>> x = 'test'
- >>> hex(id(x))
- '0x7f6264bc9450'
- >>> hex(id('test'))
- '0x7f6264bc9450'
- >>> hex(id('another test'))
- '0x7f6264bcc1f0'
- >>> x = 'another test'
- >>> hex(id(x))
- '0x7f6264bcc228'
- >>> hex(id('another test'))
- '0x7f6264bcc260'
- >>>
-
-### Threads
-
-From [GlobalInterpreterLock](https://wiki.python.org/moin/GlobalInterpreterLock):
-
- In CPython, the global interpreter lock, or GIL, is a mutex that protects
- access to Python objects, preventing multiple threads from executing Python
- bytecodes at once. This lock is necessary mainly because CPython's memory
- management is not thread-safe. (However, since the GIL exists, other features
- have grown to depend on the guarantees that it enforces.)
-
- [...]
-
- The GIL is controversial because it prevents multithreaded CPython programs
- from taking full advantage of multiprocessor systems in certain situations.
- Note that potentially blocking or long-running operations, such as I/O, image
- processing, and NumPy number crunching, happen outside the GIL. Therefore it is
- only in multithreaded programs that spend a lot of time inside the GIL,
- interpreting CPython bytecode, that the GIL becomes a bottleneck.
-
-From: [Thread State and the Global Interpreter Lock](https://docs.python.org/3/c-api/init.html#thread-state-and-the-global-interpreter-lock):
-
- When threads are created using the dedicated Python APIs (such as the threading
- module), a thread state is automatically associated to them and the code showed
- above is therefore correct. However, when threads are created from C (for
- example by a third-party library with its own thread management), they don’t
- hold the GIL, nor is there a thread state structure for them.
-
-### Nice stuff
-
-* [Verbose Regular Expressions](http://www.diveintopython3.net/regular-expressions.html#verbosere).
-
-## Implementations
-
-* [MicroPython - Python for microcontrollers](http://micropython.org/) ([compiling](https://github.com/micropython/micropython/wiki/Getting-Started).
-
-## Libraries and applications
-
-* QGIS.
-* [SciPy.org — SciPy.org](https://www.scipy.org/) ([package](https://packages.debian.org/stable/python-scipy)).
-
-## Frameworks
-
-* [Welcome | Flask (A Python Microframework)](http://flask.pocoo.org/) ([package](https://packages.debian.org/stretch/python-flask)).
-* Async: [asyncio](https://docs.python.org/3/library/asyncio.html), Twisted and Tornado.
-* [Anaconda Data Science Platform](https://www.anaconda.com/).
-
-## IDEs
-
-* [PyCharm](https://www.jetbrains.com/pycharm/).
-
-## Misc
-
-* [Indentation](https://www.python.org/dev/peps/pep-0008/#indentation): Use 4 spaces per indentation level.
-
-## Test projects
-
-* [Arduino Blog » How close are we to doomsday? A clock is calculating it in real time](https://blog.arduino.cc/2013/03/27/how-close-are-we-to-doomsday-clock/) ([python code](https://github.com/tomschofield/Neurotic-Armageddon-Indicator/blob/master/NAI_SERVER/nai_scraper.py) to parse [Timeline from the Bulletin of the Atomic Scientists](http://thebulletin.org/timeline)).
diff --git a/research/radio.md b/research/radio.md
deleted file mode 100644
index b1d3e08..0000000
--- a/research/radio.md
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!meta title="A Era do Rádio Chegou"]]
-[[!tag radio rádio hardware comunicação]]
-
-* Build a trench radio (foxhole radio) and crystal radio.
-* [Transmitting FM, AM, SSB, SSTV and FSQ with just a Raspberry Pi](http://www.rtl-sdr.com/transmitting-fm-am-ssb-sstv-and-fsq-with-just-a-raspberry-pi/).
-* [Raspberry PiRate Radio FM Transmitter](http://www.rtl-sdr.com/raspberry-pirate-radio-fm-transmitter/).
-* [Transmitting Data with a Raspberry Pi and RTL-SDR](http://www.rtl-sdr.com/transmitting-data-raspberry-pi-rtl-sdr/).
-* [RTL-SDR Tutorial: Analyzing GSM with Airprobe/GR-GSM and Wireshark](https://www.rtl-sdr.com/rtl-sdr-tutorial-analyzing-gsm-with-airprobe-and-wireshark/).
-* [Open Security Research: Getting Started with GNU Radio and RTL-SDR (on Backtrack)](http://blog.opensecurityresearch.com/2012/06/getting-started-with-gnu-radio-and-rtl.html).
-* [osmo-fl2k allows to use USB 3.0 to VGA adapters based on the Fresco Logic FL2000 chip](https://osmocom.org/projects/osmo-fl2k/wiki/Wiki).
diff --git a/research/raspberrypi.md b/research/raspberrypi.md
deleted file mode 100644
index b4acd29..0000000
--- a/research/raspberrypi.md
+++ /dev/null
@@ -1,161 +0,0 @@
-[[!meta title="Raspberry Pi"]]
-
-* [General information](https://wiki.debian.org/RaspberryPi2).
-
-Issues
-======
-
-## SSH
-
-SSH not working by default on newer (2017) raspbian releases. That's because it's disabled
-by default. Solution is to create a file called 'ssh' in the boot partition.
-
-## Networking
-
-* You might try to make it allways up with wicd-curses.
-
-### Amplifier mode
-
-Some references on using an external soundcard as an amplifier:
-
-* packages: libncurses5-dev libjack-jackd2-dev jack-tools
-* http://wiki.linuxaudio.org/wiki/raspberrypi
-* http://www.jackaudio.org/applications/
-* http://linux-audio.4202.n7.nabble.com/Solution-for-jackd2-and-dbus-without-X-session-td35904.html
-* http://comments.gmane.org/gmane.linux.audio.users/82560
-* [sound - How do I output my audio input? - Ask Ubuntu](https://askubuntu.com/questions/2719/how-do-i-output-my-audio-input)
-* [Crackle-free audio on the Raspberry Pi with mpd and PulseAudio – dbader.org](https://dbader.org/blog/crackle-free-audio-on-the-raspberry-pi-with-mpd-and-pulseaudio)
-* [How to play realtime insted of using arecord and aplay?](https://www.linuxquestions.org/questions/linux-newbie-8/how-to-play-realtime-insted-of-using-arecord-and-aplay-858500/)
-* [Jackd Headless](https://capocasa.net/jackd-headless).
-
-Attempts:
-
- man jack_disconnect
- man jack_connect
- man jack_lsp
- sudo jack_lsp
- sudo apt-get install jack-tools
- jackd
- jackd --no-realtime
- jackd --no-realtime -d alsa
- export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket jackd --no-realtime -d alsa
- DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket jackd --no-realtime -d alsa
- sudo jackd --no-realtime -d alsa
- DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket sudo jackd --no-realtime -d alsa
- sudo apt-get install libncurses5-dev libjack-jackd2-dev -y
- DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket sudo jackd --no-realtime -d alsa
- DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket sudo jackd -r -d alsa -d default:CARD=USB
-
-### Freezing
-
-At the serial console:
-
- [123916.394903] INFO: rcu_preempt detected stalls on CPUs/tasks:
- [123916.413406] 1: (1 GPs behind) idle=dcd/140000000000000/0 softirq=1003110/1003111 fqs=312910
- [123916.447541] (detected by 0, t=765007 jiffies, g=729122, c=729121, q=347657)
- [123916.467769] Task dump for CPU 1:
- [123916.484152] puppet R running 0 29362 1 0x00000002
- [123916.503500] rcu_preempt kthread starved for 448421 jiffies!
-
-References:
-
-* [Pi2 rcu_preempt detected stalls · Issue #1161 · raspberrypi/linux · GitHub](https://github.com/raspberrypi/linux/issues/1161).
-
-## Montagem automática de volume cifrado
-
-Assumindo:
-
- VOLNAME: nome do disco externo
- MEDIA: nome do dispositivo mapeado (device mapper)
-
-No TPC:
-
- dd if=/dev/urandom of=pirotron bs=1024 count=4
- keyringer $PROJECT encrypt disks/$MEDIA/luks/root-berry $VOLNAME
- scp $VOLNAME berry:~/
- wipe $VOLNAME
-
-No raspberry:
-
- sudo mv /home/$USER/$VOLNAME /root/
- sudo chmod 0400 /root/$VOLNAME
- sudo cryptsetup luksAddKey /dev/sda1 /root/$VOLNAME
-
-No `/etc/crypttab`:
-
- $VOLNAME /dev/sda1 /root/$VOLNAME luks
-
-No `/etc/fstab`:
-
- /dev/mapper/$VOLNAME /media/$VOLNAME ext4 defaults 0 2
-
-Referências:
-
-* https://www.howtoforge.com/automatically-unlock-luks-encrypted-drives-with-a-keyfile
-* https://askubuntu.com/questions/450895/mount-luks-encrypted-hard-drive-at-boot
-
-## Rede
-
-Arquivo `/etc/network/interfaces`:
-
- auto lo
- iface lo inet loopback
-
- #auto eth0
- #allow-hotplug eth0
-
- #iface eth0 inet manual
- #iface eth0 inet static
- # address 192.168.0.100
- # netmask 255.255.255.0
-
- auto wlan0
- allow-hotplug wlan0
-
- iface wlan0 inet static
- address 192.168.0.100
- netmask 255.255.255.0
- wpa-ssid ACCESS_POINT_NAME
- wpa-psk PSK
- #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
- post-up /usr/sbin/service shorewall restart
-
- #iface wlan0 inet manual
- # wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
- #
- #iface ape inet static
- # address 192.168.0.100
- # netmask 255.255.255.0
-
- #iface wlan0 inet manual
- #wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
-
- #auto wlan1
- #allow-hotplug wlan1
- #iface wlan1 inet manual
- #wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
-
-Arquivo `/etc/wpa_supplicante/wpa_supplicant.conf` (por enquanto não utilizado):
-
- ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
- update_config=1
-
- network={
- ssid="ACCESS_POINT_NAME"
- psk="PSK"
- }
-
-O esquema `wpa-roam` não funciona com interfaces `static`, então foi necessário usar [https://git.fluxo.info/?p=puppet-nodo.git;a=commit;h=d09f347afc0a99481673f227f83864d06206add6 um script].
-
-Backups
--------
-
-Fazendo o backup do cartão microSD a partir do TPC:
-
- dcfldd if=/dev/sdb | bzip2 > raspberry.img.bz2
-
-## References
-
-* http://linuxonflash.blogspot.com.br
-* http://elinux.org/RPi_Serial_Connection
-* https://www.raspbian.org/RaspbianMirrors
diff --git a/research/readers.md b/research/readers.md
deleted file mode 100644
index 7e07537..0000000
--- a/research/readers.md
+++ /dev/null
@@ -1,123 +0,0 @@
-[[!meta title="Leitores - eReaders"]]
-[[!tag leitura hardware pesquisa gadget]]
-
-Essencial
----------
-
-* Que o e-reader não te vigie, sabendo quais livros você lê, em qual página você está, etc.
-
-Básico
-------
-
-* [fread is coming](https://fread.ink/).
-* [MobileRead Wiki - Debian Linux on a Kobo](https://wiki.mobileread.com/wiki/Debian_Linux_on_a_Kobo).
-* [Ask HN: Cheap, hackable e-reader? | Hacker News](https://news.ycombinator.com/item?id=13863046).
-
-Kobo
-----
-
-* [Kobo Brasil - Google+](https://plus.google.com/communities/112084021543948580071).
-* [Graham King » Kobo eReader Touch on Ubuntu Linux](https://www.darkcoding.net/misc/kobo-ereader-touch-on-ubuntu-linux/).
-* [Kobo Aura H2O - Rakuten Kobo eReader Store](https://gl.kobobooks.com/products/kobo-aura-h2o).
-* [Kobo e-reader](https://en.wikipedia.org/wiki/Kobo_eReader).
-* [Code](https://github.com/kobolabs/Kobo-Reader).
-
-## Customizing
-
-* [KOReader Community · GitHub](https://github.com/koreader): [Installation on Kobo devices · koreader/koreader Wiki · GitHub](https://github.com/koreader/koreader/wiki/Installation-on-Kobo-devices).
-
-### Hacking
-
-* [Kobo Start Menu 08 - MobileRead Forums](https://www.mobileread.com/forums/showthread.php?t=266821).
-* [Hacking the fnacbook (aka. Kobo by Fnac) - a3nm's blog](https://a3nm.net/blog/fnacbook_kobo_hacking.html).
-* [Even more Kobo hacking - a3nm's blog](https://a3nm.net/blog/kobo_glo_hacking.html).
-* [MobileRead Wiki - Kobo Touch Hacking](https://wiki.mobileread.com/wiki/Kobo_Touch_Hacking).
-* [Hacking / Customizing a Kobo Touch ebook reader: Part I, sqlite (Shallow Thoughts)](http://shallowsky.com/blog/tech/kobo-hacking.html).
-* [Offline Wikipedia on Kobo (Guide) - MobileRead Forums](https://www.mobileread.com/forums/showthread.php?t=276219).
-* [KoboStuff](https://geek1011.github.io/KoboStuff/).
-
-### Sincronização
-
-#### Usando rsync
-
-A partir de uma cópia completa do acervo:
-
- storage="/path/to/complete/doc/repos"
- sudo rsync --size-only -avL --no-p --no-g --no-owner --delete-after --ignore-errors \
- --include='*/' --include='*.pdf' --include='*.epub' --include='*.mobi' --include='*djvu' --exclude='*' \
- $storage/books/ /media/tablet/books/
-
-Notar que usamos:
-
-* `--size-only` para fazer uma comparação simples de tamanho dos arquivos (é seguro porque assumimos que são obras autoradas/fechadas) e copiar mais rápido, além de evitar a cópia completa por conta de `-L`.
-* `--ignore-errors` por conta de possíveis ligações simbólicas mortas de arquivos do git-annex que não estejam na cópia de trabalho.
-
-#### Usando lftp
-
-Sincronizando uma única pasta (`~/data/doc/current` do computador para `/mnt/sd/current` do kobo):
-
- lftp -c "open sftp://kobo && mirror -L -R ~/data/doc/current /mnt/sd/current"
-
-### Base de dados
-
-Vide [export-kobo](https://github.com/pettarin/export-kobo).
-
-### Plato
-
-* [Plato - A document reader for PDF, ePUB, DjVu, etc](https://www.mobileread.com/forums/showthread.php?t=292914).
-* [Guia](https://github.com/baskerville/plato/blob/master/doc/GUIDE.md):
-
- vi /media/usb/.adds/plato/Settings.toml # library-path = "/mnt"
-
-### Koreader
-
-* [Repositório](https://github.com/koreader/koreader).
-* [Site](http://koreader.rocks/).
-* [Wiki](https://github.com/koreader/koreader/wiki).
-* [OPDS](https://github.com/koreader/koreader/wiki/OPDS-support).
-* [Instalação](https://github.com/koreader/koreader/wiki/Installation-on-Kobo-devices).
-* [One-Click Install Packages for KOReader & Plato](https://www.mobileread.com/forums/showthread.php?t=314220).
-* [Getting Started](https://github.com/koreader/koreader/wiki/Getting-Started).
-* [Gestures](https://github.com/koreader/koreader/wiki/KOReader-Gestures).
-* [Tips and Tricks](https://github.com/koreader/koreader/wiki/Tips-and-Tricks).
-* [KoHighlights](https://github.com/noembryo/KoHighlights) ([exporting highlights as text](https://github.com/koreader/koreader/issues/3690).
-* [Dictionary support](https://github.com/koreader/koreader/wiki/Dictionary-support), incluindo OCR via Tesseract.
-* [SSH](https://github.com/koreader/koreader/wiki/SSH): usar `ssh root@IP`, deixando a chave pública (atualmente apenas suporta chave RSA) em
-
- /mnt/onboard/.adds/koreader/settings/SSH/authorized_keys
-
-#### Folders
-
-* On device: /mnt/onboard/.adds/koreader
-* On PC: $HOME/.config/koreader
-
-#### Wallabag
-
-Wallabag config lives at /mnt/.adds/koreader/settings/wallabag.lua; sample config that can be edited via ssh:
-
- -- we can read Lua syntax here!
- return {
- ["wallabag"] = {
- ["is_delete_finished"] = false,
- ["articles_per_sync"] = 30,
- ["filter_tag"] = "",
- ["is_sync_remote_delete"] = false,
- ["client_secret"] = "",
- ["password"] = "",
- ["is_auto_delete"] = false,
- ["client_id"] = "",
- ["is_delete_read"] = false,
- ["is_archiving_deleted"] = false,
- ["username"] = "",
- ["server_url"] = "",
- ["ignore_tags"] = ""
- }
- }
-
-#### OCR
-
- scp /path/to/tessdata/* kobo:/mnt/onboard/.adds/koreader/data/tessdata/
-
-### Misc
-
-* [OPDS](https://wiki.mobileread.com/wiki/OPDS)
diff --git a/research/security.md b/research/security.md
deleted file mode 100644
index 38e32ce..0000000
--- a/research/security.md
+++ /dev/null
@@ -1,33 +0,0 @@
-[[!meta title="Security"]]
-
-Research and development in security:
-
-* [Creepy - Geolocation OSINT Tool](http://www.geocreepy.com/) ([package](https://packages.debian.org/wheezy/creepy)).
-* [Qubes OS](https://www.qubes-os.org/):
- * [Qubes - Debian Wiki](https://wiki.debian.org/Qubes).
- * [i3 | Qubes OS](https://www.qubes-os.org/doc/i3/).
- * [Qubes OS 3.2 [LWN.net]](https://lwn.net/Articles/705827/).
-* bitmask and LEAP.
-* port knocking.
-* hardened systems: apparmor, gradm2, firejail, seccomp, etc.
-* sshd:
- * https://stribika.github.io/2015/01/04/secure-secure-shell.html
- * https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=774711#60
- * http://security.stackexchange.com/questions/64562/how-should-i-defend-against-zero-day-attack-on-ssh
- * https://charlieharvey.org.uk/page/ssh_port_pros_and_cons
-* fuzzy testing: fusil, etc.
-* router: serial console to other boxes with dhe luks! :)
-* [Mailcap, HTML and AppArmor](http://www.justgohome.co.uk/blog/2014/02/mailcap-html-apparmor.html).
-* Increased security on smtp/imaps password storage:
- * https://github.com/sup-heliotrope/sup/wiki/Securely-Store-Password
- * http://serverfault.com/questions/149452/how-can-i-use-fetchmail-or-another-email-grabber-with-osx-keychain-for-authent
- * http://mah.everybody.org/docs/mail/fetchmail_check
-* Enhanced shell:
- * Add a counter-measure to prevent SSH timing attacks:
- http://users.ece.cmu.edu/~dawnsong/papers/ssh-timing.pdf
- http://www.slideshare.net/idsecconf/countermeasure-against-timing-attack-on-ssh-using-random-delay
- http://www.scribd.com/doc/59628153/Timing-Analysis-of-Keystrokes-and-Timing-Attacks-on-SSH-Revisited
-* https://shodan.io
-* https://censys.io
-* https://keybase.io
-* https://github.com/shadowsocks/shadowsocks-go
diff --git a/research/smartphone.md b/research/smartphone.md
deleted file mode 100644
index 67f2a27..0000000
--- a/research/smartphone.md
+++ /dev/null
@@ -1,198 +0,0 @@
-[[!meta title="Smartphone"]]
-
-[[!toc levels=4]]
-
-Objetivo
---------
-
-* Ter um smartphone disponível e funcional sempre que preciso.
-* Reduzindo ao máximo as perdas de privacidade e segurança.
-* Estabilidade de longo prazo: escolhas de hardware, software e configuração duráveis.
-* Opcional:
- * Suporte a [MHL](https://en.wikipedia.org/wiki/Mobile_High-Definition_Link) ou com conector micro-HDMI.
-
-Sistema escolhido
------------------
-
-Para este estudo, o sistema escolhido foi o [LineageOS](https://lineageos.org).
-
-### Prós
-
-* Código mais aberto.
-* Risco menor de backdoors.
-* Google Apps não-mandatório.
-
-### Contras
-
-* Menor base de aplicativos.
-* Atualizações de segurança mais lentas.
-* Ainda dependente de um ecossistema tecnotóxico.
-* No caso de root no dispositivo, há redução de segurança.
-
-Modelo escolhido
-----------------
-
-Para este estudo, o modelo escolhido foi o Moto E.
-
-### Prós
-
-* Custo relativamente baixo.
-* Bom suporte ao LineageOS.
-
-### Contras
-
-* Sem flash.
-* Bateria não-removível.
-* Jack de áudio não é compatível com qualquer conector.
-
-Checklist
----------
-
-Iterador básico para a manutenção do smartphone:
-
-* Destravamento do bootloader.
-* Instalação ou atualização do recovery.
-* Instalação do LineageOS.
-* [Criptografia do armazenamento interno](https://source.android.com/security/encryption/full-disk).
-* Configuração de senha e intervalo de travamento (após cifrar o armazenamento).
-* Ferramentas de desenvolvimento habilitadas.
-* Restaurar backups e configurações, caso existam.
-* Configurações de aparência e comportamento.
-* Apps:
- * VPN.
- * Editor.
- * [Signal APK](https://signal.org/android/apk/).
- * Barcode Scanner.
- * [Scuttloid](https://f-droid.org/packages/gr.ndre.scuttloid/).
- * [MPDroid](https://f-droid.org/packages/com.namelessdev.mpdroid/).
-* Teste e correções.
-* Realização de backups.
-* Upgrade:
- * Atualizar ROM.
- * Atualizar apps via F-Droid.
- * Atualizar apks manualmente.
- * Alguns apps podem ser auto-autualizáveis.
-
-Detalhes a seguir sobre algumas das etapas acima elencadas.
-
-Destravamento
--------------
-
-Este procedimento é específico para alguns aparelhos para que o bootloader
-possa ser desbloqueado, como é o caso do modelo escolhido:
-
- sudo apt install adb fastboot
-
- 1 20160410 14:55:06 user@box:~ $ adb reboot bootloader
- 0 20160410 14:55:22 user@box:~ $ fastboot devices
- 0012711246 fastboot
- 0 20160410 14:55:40 user@box:~ $ fastboot oem get_unlock_data
- ...
- (bootloader) [...]
- OKAY [ 0.235s]
- finished. total time: 0.235s
- 0 20160410 14:56:01 user@box:~ $ fastboot oem unlock $code
- ...
- (bootloader) Check 'Allow OEM Unlock' in Developer Options.
- FAILED (remote failure)
- finished. total time: 0.007s
- 1 20160410 15:30:32 user@box:~ $ fastboot devices
- 0012711246 fastboot
- 0 20160410 15:30:49 user@box:~ $
-
-Recovery
---------
-
-Usando o [TWRP para Moto E surnia](https://twrp.me/motorola/motorolamotoelte.html):
-
- adb reboot bootloader
- fastboot flash recovery recovery.img
- fastboot reboot
-
-Instalação
-----------
-
-Detalhes de instalação já são bem cobertos pela documentação do LineageOS,
-incluindo a ativação do ADB:
-
-* [Update and build preparation](http://lineageos.org/Update-and-Build-Prep/).
-* [Moto E surnia builds](https://download.lineageos.org/surnia).
-* [Verifying builds](http://wiki.lineageos.org/verifying-builds.html).
-* [Info about surnia | LineageOS Wiki](https://wiki.lineageos.org/devices/surnia).
-* [Install LineageOS on surnia | LineageOS Wiki](https://wiki.lineageos.org/devices/surnia/install).
-* [Using ADB and fastboot | LineageOS Wiki](https://wiki.lineageos.org/adb_fastboot_guide.html).
-
-Backups
--------
-
-Usaremos o [adb-sync](https://github.com/google/adb-sync) e o
-[adb-export](https://github.com/snatik/adb-export) através do script
-[android-backup](https://git.fluxo.info/scripts/tree/android-backup):
-
- android-backup <phone-name>
-
-Restauro
---------
-
-A partir de um sistema recém-instalado:
-
- android-restore <phone-name>
-
-## Subir músicas
-
-Podem ser enviadas a partir de acervos compatíveis com o [playlister](https://git.fluxo.info/playlister/about/):
-
- playlist-copy <playlist> adb
-
-Dicas
------
-
-## Escondendo arquivos do mídia player
-
- touch /storage/emulated/0/SomeApp/Media/.nomedia
-
-Via [Hide Certain Files in Android Music Player (or Photo Gallery)](http://www.guidingtech.com/15563/hide-certain-files-android-music-player-photo-gallery/).
-
-## Checagem de fingerprint do ADB
-
- awk '{print $1}' < ~/.android/adbkey.pub | openssl base64 -A -d -a | openssl md5 -c | \
- awk '{print $2}' | tr '[:lower:]' '[:upper:]'
-
-Via [Validating the Android 4.2.2 RSA fingerprint](https://shred.zone/cilla/page/374/validating-the-android-422-rsa-fingerprint.html).
-
-## Instalação manual de apps
-
-Checagem de assinatura:
-
- apksigner verify --print-certs app.apk
-
-Instalação:
-
- adb install app.apk
-
-## Movendo arquivos do sdcard para o armazenamento interno
-
- adb shell
- cd /storage/emulated/0
- mv /storage/1FAC-34C3/Music/* Music/
-
-Alternativas
-------------
-
-* [postmarketOS](https://www.postmarketos.org/).
-* [Replicant](https://www.replicant.us/).
-* [Neo900](http://neo900.org/).
-
-Referências
------------
-
-* Aplicativos interessantes: snoopsnitch.
-* [Modificações de hardware](https://web.archive.org/web/20160402005909/https://people.torproject.org/~ioerror/skunkworks/moto_e/).
-* [List of custom android firmware](https://en.wikipedia.org/wiki/List_of_custom_Android_firmware).
-* [Fossdroid: Free and open source Android apps](https://fossdroid.com/).
-* Backups:
- * [Android: How to Backup Contacts and SMS Messages | chombium's blog](https://chombium.wordpress.com/2012/09/30/android-how-to-backup-contacts-and-sms-messages/), but requires root on recent androids.
- * [Does adb backup include contacts? - Android Enthusiasts Stack Exchange](https://android.stackexchange.com/questions/85269/does-adb-backup-include-contacts).
- * [GitHub - stachre/dump-contacts2db: Bash script that dumps contacts from an Android contacts2.db to stdout in vCard format. Especially helpful when the device is inop or missing, with only a contacts2.db file available (from backup, etc.) to migrate contac](https://github.com/stachre/dump-contacts2db).
- * [Full Phone Backup without Unlock or … | Samsung Galaxy Nexus](https://forum.xda-developers.com/galaxy-nexus/general/guide-phone-backup-unlock-root-t1420351).
- * [How to use ADB backup to back up your unrooted phone - Pocketables](http://www.pocketables.com/2012/09/how-to-use-adb-backup-to-back-up-your-unrooted-phone.html).
diff --git a/research/token.md b/research/token.md
deleted file mode 100644
index da4d0ed..0000000
--- a/research/token.md
+++ /dev/null
@@ -1,52 +0,0 @@
-[[!meta title="Tokens USB"]]
-
-## Gnuk
-
-* [Free Software Initiative of Japan - gnuk](http://www.fsij.org/category/gnuk.html)
-* [Gnuk Documentation — Gnuk Documentation 1.0 documentation](http://www.fsij.org/doc-gnuk/)
-* [Gnuk - Noisebridge](https://noisebridge.net/wiki/Gnuk).
-* [FST-01 - Seeed Wiki](http://wiki.seeed.cc/FST-01/).
-* [Questions - FST-01 Q&A Forum](http://no-passwd.net/askbot/questions/).
-* [Programming the FST-01 (gnuk) with a Bus Pirate + OpenOCD](https://www.earth.li/~noodles/blog/2015/08/program-fst01-with-buspirate.html).
-* [Gnuk Token and GnuPG scdaemon](https://fosdem.org/2018/schedule/event/hwenablement_gnuk_token_and_gnupg_scdaemon/).
-* [FST-01 gnuk firmware update via USB](https://raymii.org/s/tutorials/FST-01_firmware_upgrade_via_usb.html).
-* [Gnuk source code](https://salsa.debian.org/gnuk-team/gnuk/gnuk).
-* Threat modeling:
- * [How safe is Gnuk against side channel attacks, USB sniffer, or electron/tunneling microscope? - FST-01 Q&A Forum](http://no-passwd.net/askbot/question/33/how-safe-is-gnuk-against-side-channel-attacks-usb/).
- * [How does Gnuk protect against attacks to extract private keys? - FST-01 Q&A Forum](http://no-passwd.net/askbot/question/32/how-does-gnuk-protect-against-attacks-to-extract/).
- * [What types of risk are more likely? What's "best practice" against that? - FST-01 Q&A Forum](http://no-passwd.net/askbot/question/68/what-types-of-risk-are-more-likely-whats-best/).
-
-## Safenet eToken E5110
-
-No Debian, instale o [MUSCLE](https://pcsclite.alioth.debian.org/):
-
- sudo apt install libccid pcsc-tools pcscd pcscd libpcsclite1
-
-Plugue a parada e execute:
-
- opensc-tool --list-readers
-
-## SafeNet Authentication Client
-
-Para uso no mundo corporativo e institucional, como OAB e afins. Você não vai
-querer usar os drivers proprietários a não ser que seja forçado, certo?
-
-Curioso que no fim das contas a OAB conseguiu seu lugar ao sol no mercado
-da certificação digital apesar da implantação do modelo governamental escolhido
-para o certificado raíz brasileiro, história contada no livro [Leviatã Eletrônico](http://www.scielo.br/scielo.php?script=sci_arttext&pid=S1517-45222010000300013).
-
-Enfim, pra usar o eToken E5110 pra assinar documentos no navegador você
-precisará de drivers específicos e proprietários.
-
-Aparentemente a [Gemalto comprou a SafeNet](http://www.gemalto.com/press/Pages/Gemalto-to-acquire-SafeNet,the-worldwide-leader-in-data-and-software-protection.aspx) e depois ficou muito mais difícil para baixar o driver do eToken E5110, que além de ser proprietário ainda ficou privativo! Maluco fez [até script](https://gist.github.com/dex4er/1354710) pra automatizar essa zica. [Aqui](https://site.solutinet.com.br/2015/manuais/instaladores/) há versões recentes das bibliotecas e do cliente de autenticação proprietário (dica [daqui](https://diadialinux.wordpress.com/2017/03/02/instalar-etoken-alladin-usar-sites-do-governo-com-certificado-digital-e-assinar-documentos-pdf/)).
-
-Referêcias:
-
-* [Token-Based Authentication | SafeNet eToken 5110 USB Authenticator](https://safenet.gemalto.com/multi-factor-authentication/authenticators/pki-usb-authentication/etoken-5110-usb-token/)
-* [Guia](http://poddarprofessional.com/demo/DIGITAL%20SIGNATURE/UTILITIES/E-token%20Drivers%20For%20LINUX/eToken_PKI_Client_Linux_4_55_Reference_Guide.pdf).
-* [eToken Pro 72k and Linux - r3blog](https://r3blog.nl/index.php/etoken-pro-72k/).
-* [Install SafeNet eToken PRO on Ubuntu 14.04 LTS](https://www.vleeuwen.net/2015/05/install-safenet-etoken-pro-on-ubuntu-14-04-lts).
-
-## Misc
-
-* [ImperialViolet - Security Keys](https://www.imperialviolet.org/2017/08/13/securitykeys.html).
diff --git a/research/torrent.md b/research/torrent.md
deleted file mode 100644
index 501c351..0000000
--- a/research/torrent.md
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!meta title="BitTorrent"]]
-
-Torrent workflow: torrent-maker, magnet2torrent and torrent-reseed plan:
-
-* http://wiki.rtorrent.org/MagnetUri
-* http://dan.folkes.me/2012/04/19/converting-a-magnet-link-into-a-torrent/
-* https://github.com/danfolkes/Magnet2Torrent
-* http://code.google.com/p/pyroscope/wiki/CommandLineTools
-* https://trac.transmissionbt.com/ticket/4176
-* http://wiki.rtorrent.org/MagnetUri
-* https://github.com/rakshasa/rtorrent/issues/212
-* saving/restoring `.meta` and `~/rtorrent/.session` files.
-* multiple instances: https://kernelwho.wordpress.com/2011/11/15/running-multiple-instances-of-rtorrent/
-
- rtorrent -n -o import=/home/user/.rtorrent1.rc