README.TXT
       ------------------------------------------------------------------------
       
       I'm writing this document so I can point people to it that ask me for
       advice on a selection of technical and social topics.  If I pointed you
       here, you most likely asked me a question, which I don't like to answer,
       because supporting you would mean acting against my believes.
       
       Or maybe just because you asked me something that's answered below and
       I'm too lazy to type/explain it again.
       
           "Every program should do one thing and do it right."
                             https://en.wikipedia.org/wiki/Unix_philosophy
       
       
       ABOUT OPERATING SYSTEMS
       ========================================================================
       I  prefer an  OS that  can be  configured in  a minimalistic  and mostly
       static  way. I  don't want  the OS  to do  anything without  my explicit
       order. I also  prefer text interfaces. They can be  scripted and they're
       more expressive than any GUI could  ever be. I prefer simple and elegant
       designed solutions. Of  course it must be open source  and free. I don't
       support binary drivers. I unwillingly tolerate firmware blobs.
       
       ABOUT DESKTOP ENVIRONMENTS / WINDOW MANAGER
       ========================================================================
       Desktop Environments are  the natural enemy to everything I  value in an
       operating system. They  try to automate everything to a  point where the
       user has  to rely on  these automatisms to  work, without being  able to
       understand/fix/debug these functions. This  leads to people only knowing
       how to  do something in  a click  sequence in their  desktop environment
       instead of  learning the few  lines they would have  to add to  a config
       file.  This  poisons  the  Internet with  Desktop  Environment  specific
       Solutions  that  are  cumbersome  and unnecessary  and  make  new  users
       struggle.
       
       I prefer tiling window manager. I3 and  dwm are a good choice. But there
       are many  other good  WMs out  there: Cwm,  icewm, fvwm,  bspwm, xmonad,
       awesome, even  the good old  windowmaker has some charme.  The important
       part is, that the window manager is  going out of the way. It's there to
       manage windows, and it shall do this good. Nothing else. Once the window
       manager offers system  configuration UIs, you're in the  area of desktop
       environments, which are crap and should die.
       
       ABOUT EMAIL
       ========================================================================
       Don't use  gmail. Encrypt your mails  with GPG or SMIME.  Send text-only
       mails (no HTML). Use a proper mail client (claws, mutt, gnus...). If you
       can't, at least  send mails with a  html part that can  easily be parsed
       with  lynx/w3m etc.  (Color, Bold,  Italic, Numbering/Bullets  are okay.
       Tables, inline images, divs etc. are not.)
       
       ABOUT CHAT / MESSENGER
       ========================================================================
       For synchronous  text communication, I prefer  IRC or XMPP. Both  can be
       encrypted with  OTR or PGP.  I am  currently using Telegram  with people
       that  are less  technically  knowledgable. I  will  _not_ use  Whatsapp,
       Facebook or any  other centralized tool operated by a  company whos main
       business  is  adtech,  targeting,  data-harvesting or  related.  I  used
       Threema/Signal before, but  stopped due to low  user acceptance (Signal)
       and missing multi device capabilities (Threema).
       
       ABOUT THE WORLD WIDE WEB
       ========================================================================
       The web sucks. It has evolved from  a space where people can share their
       ideas  and  interact  with  each  other to  a  marketing  platform  that
       limits  users  in their  creativity.  The  web  would have  been  better
       without JavaScript and other client  side rendering solutions that allow
       companies to  waste your computing  power and compromise your  device. I
       love hand crafted websites because none  is like the other. Hand crafted
       means writing your own HTML and CSS. I'm tired of looking at yet another
       $framework with $theme.
       
       If you're looking for a challenge: Don't express your skill with complex
       JavaScript code. I'm much more impressed if you build fast and beautiful
       looking websites _without_ JavaScript.
       
       ABOUT NOTEBOOK / LAPTOP
       ========================================================================
       I   prefer  small/portable   laptops  that   are  durable,   compatible,
       repairable, upgradable, with a navpoint (I don't care for touchpads) and
       a  good standard  layout  keyboard as  well as  a  proper network  port.
       Currently, this  is only available in  older Thinkpad Laptops. If  a new
       feature makes the laptop less durable,  I don't want it. If it decreases
       tthe typing  experience, I  don't want  it. I  tried HP,  Toshiba, Dell,
       Apple, MSI and Acer. While Dell is probably closest in terms of quality,
       Lenovo is  still the  best (even  though they're  trying hard  to become
       second). Once  System76 or Purism  add a  navpoint to their  laptops I'm
       going  to  try those.  Since  Apple  has  decided  to add  a  propritary
       "Security Chip" that does prevent the  free OS choice, they're no longer
       anything  I would  consider buying.  Also, I  don't know  anything about
       where to get the fastest and biggest CPU or GPU for the buck.
       
       ABOUT HARDWARE
       ========================================================================
       I hope opensource hardware will become the norm at some point in future.
       I'm terrified  by all the  buggy, intransparent firmware  that's running
       below the OS (uefi/bios/me/ipmi) or  even custom "security" chips (Apple
       A).  I support  coreboot/libreboot, opensource  hardware and  tools that
       free hardware  from closed  source components  (intel me  cleaner, open-
       ipmi).
       
       ABOUT WEB SERVICES (CLOUD SERVICES)
       ========================================================================
       I use  cloud services  only when  I can use  them in  a secure  way. For
       example uploading encrypted files to dropbox. Everything else I selfhost
       or roll my own solution.
       
       ABOUT SOCIAL MEDIA
       ========================================================================
       
       Everything that's self-hosted is okay.  However most modern social media
       platforms  like mastodon,  matrix/synapse,  diaspora etc.  are build  in
       overly complicated ways  and I don't like to host  service that are hard
       to control with a high number of dependencies.
       
       A notable exception is "honk", which is a slim ActivityPub server which
       won't cook your CPU.  You can find my social media activities here:
       - RSS: https://honk.codevoid.de/rss
       - Web: https://honk.codevoid.de/u/sh
       - ActivityPub Handle: @sh@honk.codevoid.de (can be added on mastodon or
         any other ActivityPub service)
       
       EDITOR
       ========================================================================
       I use vim (bare and without python, ruby, lua, gtk support) or vi. While
       I like emacs in  general, it's startup time is hilarious  and I need one
       editor for everything  that starts in less than 300ms  (mg doesn't quite
       cut it for me in terms of features).
       
       PROGRAMMING LANGUAGES
       ========================================================================
       I use POSIX Sh, Perl,  C. If that is not enough I add  Lua or use C++. I
       stay away from  languages with own package managers that  connect to the
       Internet. This  is not secure,  not future proof  and does not  allow OS
       specific patching.  I'm watching  GO and  Rust but  would only  ever use
       tthem without the package manager functionality and stick to OS provided
       libraries. The same applies to Python/Ruby (which I try to avoid). Under
       no circumstances will I tolerate NodeJS on my system.
       
       To be continued as needed...
       
       # Changelog:
       # * 2019-06-11: Created
       # * 2019-08-24: Enhanced Laptop, corrected typos
       # * 2019-09-02: Added Hardware, Programming Languages, corrected typos
       # * 2019-10-17: Added honk to social media. Added to Email/Chat
       # * 2019-11-26: Corrected more typos