Skip to content

52nd Week of 2024

Activism

Hacktivism

Chaos Communication Congress

  • New: Introduce the CCC.

    Chaos Communication Congress is the best gathering of hacktivism in europe.

    Prepare yourself for the congress

    You can follow MacLemon's checklist

    Install the useful apps

    The schedule app

    You can use either the Fahrplan app or giggity, I've been using the second for a while, so is the one I use

    The navigation app

    c3nav is an application to get around the congress. The official F-droid is outdated, so add their repository to get the latest version.

    Reference - [Home](https://events.ccc.de/en/ - Engelsystem - Angel FAQ

  • New: Introduce the Angel's system.

    Angels are participants who volunteer to make the event happen. They are neither getting paid for their work nor do they get free admission.

    Expectation

    Helping at our events also comes with some simple, but important expectations of you:

    • Be on time for your shift or give Heaven early notice.
    • Be well rested, sober and not hungry.
    • Be open-minded and friendly in attitude.
    • Live our moral values:
    • Be excellent to each other.
    • All creatures are welcome.

    Quickstart

    • Create yourself an Engelsystem account
    • Arrive at the venue
    • Find the Heaven and go there.
    • Talk to a welcome angel or a shift coordinator to get your angel badge and get marked as arrived.
    • If you have any questions, you can always ask the shift coordinators behind the counter.
    • Attend an angel meeting
    • Announced in the Engelsystem news
    • Click yourself an interesting shift
    • Read shift descriptions first
    • Participate in your shift
    • Use the navigation to find the right place.
    • Arrive a little bit early at the meeting point
    • Rest for at least one hour
    • Repeat from step 5

    And always, have a lot of fun.

    To get more insights read this article

    The engelsystem

    The Engelsystem is the central place to distribute the work to all the helping angels. It can be a bit overwhelming at the beginning but you will get used to it and find your way around.

    As you might have seen there are many different shifts and roles for angels — some sounding more appealing than others. There are shifts where you need to have some knowledge before you can take them. This knowledge is given in introduction meetings or by taking an unrestricted shift in the team and getting trained on the job. These introduction meetings are announced in the Engelsystem under the tab "Meetings". Heaven and the teams try to make sure that there are only restrictions for shifts in place where they are absolutely needed.

    Most restrictions really only need a meeting or some unrestricted shifts at the team to get lifted. Harder restrictions are in place where volunteers need to have special certification, get access to certain systems with a huge amount of data (e.g. mail-queues with emails from participants) or handling big piles of money. Usually the requirements for joining an angeltype are included in the description of the angeltype.

    Especially the restricted shifts are tempting because after all we want to get the event running, aren’t we? From our personal experience what gets the event running are the most common things: Guarding a door, collecting bottle/trash, washing dishes in the angel kitchen, being on standby to hop in when spontaneous help is needed or check the wrist band at the entrance.

    If there are any further questions about angeltypes, the description of the angeltype usually includes contact data such as a DECT number or an e-mail address that can be used. Alternatively, you can also ask one of the persons of the respective angeltype mentioned under "Supporter".

    Teams

    Congress is organized from different teams, each with its own area of expertise.

    All teams are self-organized and provide their own set of services to the event.

    Teams spawn into existence by a need not fulfilled. They are seldom created by an authority.

    Check out the different teams to see which one suits you best.

    Some poeple suggest not to try to fit into special roles at your first event. The roles will find you – not the other way around. Our com­mu­ni­ty is not about per­so­nal gro­wing but about con­tri­bu­ting to each other and gro­wing by doing this.

    Perks

    Being an angel also comes with some perks. While we hope that participation is reward enough, here is a list of things that are exclusive to angels:

    • Community acknowledgement
    • Hanging out in Heaven and the angel hack center with its chill out area
    • Free coffee and (sparkling) water
    • Warm drinks or similar to make the cold night shifts more bearable

    Rewards

    If you have contributed a certain amount of time, you may receive access to:

    • Fantastic hot vegan and vegetarian meals
    • The famous limited™ angel T-shirt in Congress design
    • Maybe some other perks

Life Management

Time management

Orgzly

  • New: Migrate from Orgzly to Orgzly Revived.

Life chores management

himalaya

  • Correction: Tweak the bindings.

    Move forward and backwards in the history of emails:

        vim.api.nvim_create_autocmd("FileType", {
          group = "HimalayaCustomBindings",
          pattern = "himalaya-email-listing",
          callback = function()
            vim.api.nvim_buf_set_keymap(0, "n", "b", "<plug>(himalaya-folder-select-previous-page)", { noremap = true, silent = true })
            vim.api.nvim_buf_set_keymap(0, "n", "f", "<plug>(himalaya-folder-select-next-page)", { noremap = true, silent = true })
          end,
        })
    
    Better bindings for the email list view:

              -- Refresh emails
              vim.api.nvim_buf_set_keymap(0, "n", "r", ":lua FetchEmails()<CR>", { noremap = true, silent = true })
              -- Email list view bindings
              vim.api.nvim_buf_set_keymap(0, "n", "b", "<plug>(himalaya-folder-select-previous-page)", { noremap = true, silent = true })
              vim.api.nvim_buf_set_keymap(0, "n", "f", "<plug>(himalaya-folder-select-next-page)", { noremap = true, silent = true })
              vim.api.nvim_buf_set_keymap(0, "n", "R", "<plug>(himalaya-email-reply-all)", { noremap = true, silent = true })
              vim.api.nvim_buf_set_keymap(0, "n", "F", "<plug>(himalaya-email-forward)", { noremap = true, silent = true })
              vim.api.nvim_buf_set_keymap(0, "n", "m", "<plug>(himalaya-folder-select)", { noremap = true, silent = true })
              vim.api.nvim_buf_set_keymap(0, "n", "M", "<plug>(himalaya-email-move)", { noremap = true, silent = true })
    
    feat(himalaya#Searching emails): Searching emails

    You can use the g/ binding from within nvim to search for emails. The query syntax supports filtering and sorting query.

    I've tried changing it to / without success :'(

    Filters

    A filter query is composed of operators and conditions. There is 3 operators and 8 conditions:

    • not <condition>: filter envelopes that do not match the condition
    • <condition> and <condition>: filter envelopes that match both conditions
    • <condition> or <condition>: filter envelopes that match one of the conditions
    • date <yyyy-mm-dd>: filter envelopes that match the given date
    • before <yyyy-mm-dd>: filter envelopes with date strictly before the given one
    • after <yyyy-mm-dd>: filter envelopes with date stricly after the given one
    • from <pattern>: filter envelopes with senders matching the given pattern
    • to <pattern>: filter envelopes with recipients matching the given pattern
    • subject <pattern>: filter envelopes with subject matching the given pattern
    • body <pattern>: filter envelopes with text bodies matching the given pattern
    • flag <flag>: filter envelopes matching the given flag

    Sorting A sort query starts by "order by", and is composed of kinds and orders. There is 4 kinds and 2 orders:

    • date [order]: sort envelopes by date
    • from [order]: sort envelopes by sender
    • to [order]: sort envelopes by recipient
    • subject [order]: sort envelopes by subject
    • <kind> asc: sort envelopes by the given kind in ascending order
    • <kind> desc: sort envelopes by the given kind in descending order

    Examples

    subject foo and body bar: filter envelopes containing "foo" in their subject and "bar" in their text bodies order by date desc subject: sort envelopes by descending date (most recent first), then by ascending subject subject foo and body bar order by date desc subject: combination of the 2 previous examples

  • New: List more detected issues.

  • New: Troubleshoot cannot install the program.

    Sometimes the installation steps fail as it's still not in stable. A workaround is to download the binary created by the pre-release CI. You can do it by:

    • Click on the latest job
    • Click on jobs
    • Click on the job of your architecture
    • Click on "Upload release"
    • Search for "Artifact download URL" and download the file
    • Unpack it and add it somewhere in your $PATH

Content Management

Jellyfin

  • New: Enable hardware transcoding.

    Enable NVIDIA hardware transcoding

    Remove the artificial limit of concurrent NVENC transcodings

    Consumer targeted Geforce and some entry-level Quadro cards have an artificial limit on the number of concurrent NVENC encoding sessions (max of 8 on most modern ones). This restriction can be circumvented by applying an unofficial patch to the NVIDIA Linux and Windows driver.

    To apply the patch:

    First check that your current version is supported nvidia-smi, if it's not try to upgrade the drivers to a supported one, or think if you need more than 8 transcodings.

    wget https://raw.githubusercontent.com/keylase/nvidia-patch/refs/heads/master/patch.sh
    chmod +x patch.sh
    ./patch.sh
    

    If you need to rollback the changes run ./patch.sh -r.

    You can also patch it within the docker itself

    services:
      jellyfin:
        image: jellyfin/jellyfin
        user: 1000:1000
        network_mode: 'host'
        volumes:
          - /path/to/config:/config
          - /path/to/cache:/cache
          - /path/to/media:/media
        runtime: nvidia
        deploy:
          resources:
            reservations:
              devices:
                - driver: nvidia
                  count: all
                  capabilities: [gpu]
    

    Restart the docker and then check that you can access the graphics card with:

    docker exec -it jellyfin nvidia-smi
    

    Enable NVENC in Jellyfin and uncheck the unsupported codecs.

    Tweak the docker-compose

    The official Docker image doesn't include any NVIDIA proprietary driver.

    You have to install the NVIDIA driver and NVIDIA Container Toolkit on the host system to allow Docker access to your GPU.

Knowledge Management

Aleph

  • New: Available datasets.

    OpenSanctions helps investigators find leads, allows companies to manage risk and enables technologists to build data-driven products.

    You can check their datasets.

  • New: Offshore-graph.

    offshore-graph contains scripts that will merge the OpenSanctions Due Diligence dataset with the ICIJ OffshoreLeaks database in order create a combined graph for analysis.

    The result is a Cypher script to load the full graph into the Neo4J database and then browse it using the Linkurious investigation platform.

    Based on name-based entity matching between the datasets, an analyst can use this graph to find offshore holdings linked to politically exposed and sanctioned individuals.

    As a general alternative, you can easily export and convert entities from an Aleph instance to visualize them in Neo4j or Gephi using the ftm CLI: https://docs.aleph.occrp.org/developers/how-to/data/export-network-graphs/

Coding

Languages

nodejs

  • New: Install using nvm.

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
    
    nvm install 22
    
    node -v # should print `v22.12.0`
    
    npm -v # should print `10.9.0`
    

DevSecOps

Infrastructure Solutions

Kubectl Commands

Operating Systems

Linux

Linux Snippets

  • New: Convert an html to a pdf.

    Using weasyprint

    Install it with pip install weasyprint PyMuPDF

    weasyprint input.html output.pdf
    

    It gave me better result than wkhtmltopdf

    Using wkhtmltopdf To convert the given HTML into a PDF with proper styling and formatting using a simple method on Linux, you can use wkhtmltopdf with some custom options.

    First, ensure that you have wkhtmltopdf installed on your system. If not, install it using your package manager (e.g., Debian: sudo apt-get install wkhtmltopdf).

    Then, convert the HTML to PDF using wkhtmltopdf with the following command:

    wkhtmltopdf --page-size A4 --margin-top 15mm --margin-bottom 15mm --encoding utf8 input.html output.pdf
    

    In this command: - --page-size A4: Sets the paper size to A4. - --margin-top 15mm and --margin-bottom 15mm: Adds top and bottom margins of 15 mm to the PDF.

    After running the command, you should have a nicely formatted output.pdf file in your current directory. This method preserves most of the original HTML styling while providing a simple way to export it as a PDF on Linux.

    If you need to zoom in, you can use the --zoom 1.2 flag. For this to work you need your css to be using the em sizes.

  • New: Format a drive to use a FAT32 system.

    sudo mkfs.vfat -F 32 /dev/sdX
    

    Replace /dev/sdX with your actual drive identifier

  • New: Get the newest file of a directory with nested directories and files.

    find . -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "
    
  • Correction: How to debug a CPU Throttling high alert.

    If the docker is using less resources than the limits but they are still small (for example 0.1 CPUs) the issue may be that the CPU spikes are being throttle before they are shown in the CPU usage, the solution is then to increase the CPU limits

    # Create a systemd service for a non-root user

    To set up a systemd service as a non-root user, you can create a user-specific service file under your home directory. User services are defined in ~/.config/systemd/user/ and can be managed without root privileges.

  • New: Check the docker images sorted by size.

    docker images --format "{{.Repository}}:{{.Tag}}\t{{.Size}}" | sort -k2 -h
    

    You can also use the builtin docker system df -v to get a better understanding of the usage of disk space.

Other

  • Reorganization: Into roadmap_adjustment.