Blog

  • GTD – Getting Things Done

    The method that I use to organize all the tasks in my professional and personal life.

    Based on the David Allen’s book: Getting Things Done

    Getting Things Done (GTD) is a personal productivity system developed by David Allen and published in a book of the same name. GTD is described as a time management system. Allen states “there is an inverse relationship between things on your mind and those things getting done”.[3][a]

    The GTD method rests on the idea of moving all items of interest, relevant information, issues, tasks and projects out of one’s mind by recording them externally and then breaking them into actionable work items with known time limits. This allows one’s attention to focus on taking action on each task listed in an external record, instead of recalling them intuitively.

    Source: https://en.wikipedia.org/wiki/Getting_Things_Done

    It sounds complicated, but it’s quite simple.

    The David Allen’s method consists of writing every task, idea, thought, responsibility and every brainwave into an organized list.

    The essential steps are:

    1. Write each idea to the “Inbox list”
    2. Then, move them one by one to:
      • It’s project. For example:
        • The task “pay the car insurance” goes to “Car” project,
        • The task “water the cactus” goes to “House” project
      • or to “Incubation” (the place where the ideas that do not require immediate action). For example:
        • Travel to Las Vegas on some time in the future,
        • Buy a sport car (maybe, I don’t know if I will do it).

    The full workflow

    This way, you can liberate your brain and your biological RAM from unnecessary bloat. Otherwise, each idea, each task and each duty will reside in your head and will cause unnecessary stress. If you know that each task is written in a place that you can trust, you can forget about them.

    The place you can trust

    David Allen says that a piece of paper is enough to apply his method. He is right, however, the modern technology gives you an opportunity to get the most out of this method.

    The most popular tool is https://www.todoist.com

    However, the tool I use for my professional and personal life is https://ticktick.com

    It’s cheaper and it has more functionalities.

  • Playing with /etc/hosts by Ansible

    dnsmasq is a better solution for this purpose, but the goal is to play with Ansible.

    It’s the continuation of the post: My own VPN on a VPS

    The main goal is to play with Ansible. The second goal is to be able to connect to the hosts by their names rather then by their IPs. For this purpose, I will update /etc/hosts file on each host automatically by Ansible.

    Preparing the host files on the Ansible server

    In first place, I edit the hosts file on Ansible:

    [root@vps-dc91297d ~]# tail -n3 /etc/hosts 
    10.8.0.1 vps
    10.8.0.2 komputer01
    10.8.0.3 pi

    Now, I will be able to use the hosts name in the Ansible configuration file.

    Ansible installation

  • Self-Hosted VPN server

    This is a mini-project where I can configure my self-hosted VPN server.

    Why?

    As described in the Privacy Project, I use my own Domain Name Server. It works great in the local network, but I am not able to access it from outside.

    That’s why I need my own VPN server.

    Other possible solutions

    • Port Forwarding on my home router
      • It’s not possible, because:
        • I don’t have access to the admin’s configuration.
        • I don’t have static IP.
          • There are solutions like Dynamic DNS, but they are not reliable on the long run,
    • Tailscale or other similar commercial solution
      • It would work, but it’s not so much fun.

    The VPN server configuration

    The configuration is simple:

    [root@vps-dc91297d fedora]# cat /etc/wireguard/wg0.conf 
    [Interface]
    Address = 10.8.0.1/24
    ListenPort = 51820
    PrivateKey = (redacted)
    
    PostUp = firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -j ACCEPT
    PostDown = firewall-cmd --direct --remove-rule ipv4 filter FORWARD 0 -i wg0 -j ACCEPT
    
    # Example peer (add one per client)
    [Peer]
    PublicKey = (redacted)
    AllowedIPs = 10.8.0.2/32
    
    [Peer]
    PublicKey = (redacted)
    AllowedIPs = 10.8.0.3/32

    The interface’s name will be “wg0“, and the created network be of the class A, with the range in 10.8.0.1/24.

    The firewalld rules permit to forward packages between the client devices.

    The rest of configuration are just the public keys of the peers.

    The VPN Clients’ configuration

    I generate the public/private keys for each peer with wg command.

    root@komputer01:/etc/wireguard# cat wg0.conf 
    [Interface]
    PrivateKey = (redacted)
    Address = 10.8.0.3/24
    
    [Peer]
    PublicKey = (redacted) 
    Endpoint = vpn.tomasz-avila.pl:51820
    AllowedIPs = 10.8.0.0/24   # route all VPN traffic through the server
    PersistentKeepalive = 25

    This is a client’s configuration. I set up the private key, the peer’s address and the server’s FQDN.

    PersistentKeepalive just sends periodic empty packets to keep the connection alive when clients are behind NAT.

    The results

    [root@vps-dc91297d fedora]# wg show
    interface: wg0
      public key: (redacted)
      private key: (hidden)
      listening port: 51820
    
    peer: c2dz9nLrd7bYfyTFj7fMQHBMkHaIz7GFoH1bRK+ermY=
      endpoint: 46.205.194.178:60080
      allowed ips: 10.8.0.3/32
      latest handshake: 15 seconds ago
      transfer: 10.89 MiB received, 3.80 MiB sent
    
    peer: XoOt5kWRfvUSFf8I+SGUHcDcC9TeNloifDspq9uw0BI=
      endpoint: 185.246.208.88:39392
      allowed ips: 10.8.0.2/32
      latest handshake: 1 minute, 5 seconds ago
      transfer: 4.07 MiB received, 11.15 MiB sen

    By this way, on the server, with the wg show command, I can see all the peers connected and the latest time they were been seen.

    Everything took less then one hour to configure and the results are awesome.

  • Vim-like bindings everywhere

    Vim – my favorite editing program. Fortunately, I can use it everywhere. How? That what I will describe in this post.

    Why?

    Using only the keyboard is much more efficient than using it along with the mouse. I can keep my pointing fingers on f and j keys, and the rest of the fingers on their respective positions. Exactly as the computers and keyboards were designed. Now, I use the mouse only in situations when it’s impossible to replace – that is in case of working with graphics or with gaming.

    However, using only the keyboard changes completely the relationship between the human and the machine.

    And if it’s possible to use the key binding as in Vim, it’s just awesome.

    Sway

    The window manager that focuses only on keyboard. Thankfully to its configuration files, I open, close and move windows with h, j, k, l keys just as if I were in Vim:

    Here, on their official website, you will find a video how it works:

    https://swaywm.org

    The alternatives are:

    • hyprland
      • Beautiful and modern, but it does not support tabbed windows,
    • niri
    • bspwm
    • (and many others)

    Firefox + Vimium C

    https://addons.mozilla.org/en-US/firefox/addon/vimium-c

    With this Firefox add-on, I can treat each page as if it were a document opened in Vim. Highly customizable, but with the defaults it works great.

    The alternatives are:

    Caution: Installing add-ons increases fingerprintability of the browser. In consequence, it’s easier to follow your moves on the internet. Read more at: Privacy Project

    ncmpccp music player

    Here the screenshot

    Other tools

    • bluetoothctl
      • for managing bluetooth connections and devices,
    • nmtui
      • for managing network connections,
  • Privacy Project

    Why does it matter?

    The inspiration of this project:

    The most inspirational quotations from the Carissa Véliz book:

    • “Privacy is not a luxury. It is a fundamental right that protects our dignity, autonomy, and democracy.”
    • “Privacy is not about hiding something. It’s about deciding for yourself what you want to share and with whom.”
    • “Data is the new oil—but unlike oil, it’s infinite and it’s being extracted from us without our consent.”
    • “The more we are watched, the more we conform.”
    • “Privacy is power because it allows us to resist manipulation and coercion.”
    • “In a world where everything is recorded, freedom of thought is at risk.”
    • “If you think you have nothing to hide, you have misunderstood the nature of power.”
    • “The lack of privacy is a form of oppression. It takes away our ability to think, act, and be ourselves without fear.
    • “When we lose control of our data, we lose control of our lives.”

    Web Browser: Librewolf

    The best browser that maintain good balance between usability and privacy. It’s a hardened Firefox. Its authors aim to protect the user from the surveillance capitalism.

    Also, it is possible to harden the Firefox by yourself, with the Arkenfox guides. It’s the best way to get to know what does each option do.

    Alternatives are:

    • Mullvad Browser
      • Better fingerprinting protection, but with more trade-offs,
    • Brave Browser
      • Better compatibility with sites, but it uses Chrome engine
    • Tor Browser
      • The best protection, but at cost of slow connection

    Self-hosted DNS

    With my own domain name server, I can filter the ads and trackers before they reach my client computer.

    Also, I blocked all the Google and Facebook domains, whose business models rely on user surveillance.

    Besides, it gives me statistics of connections that my devices perform. Even if I use mainly opensource software, it gives me peace to see that there are not any leaking connections.

    For example, I noticed that my Chinese e-book reader makes suspicious connections to Chinese servers. With this tool, I could block them manually.

    Private files: Cryptomator

    With this tool, I encrypt all my files before sending them to the hosting in the cloud where I do store the encrypted backup of them.

    Other tools

    • Joplin
      • Note taking application
    • Signal
      • For communication
    • GrapheneOS
      • Hardened Android fork,
    • Bitwarden
      • Password Manager
    • Proton Mail
      • Email Service