rust common collection

Common Collection Rust’s standard library includes a number of very useful data structures called collections. Most other data types represent one specific value, but collections can contain multiple values. Unlike the built-in array and tuple types, the data that these collections point to is stored on the heap, which means the amount of data does not need to be known at compile time and can grow or shrink as the program runs. Each kind of collection has different capabilities and costs, and choosing an appropriate one for your current situation is a skill you’ll develop over time. ...

August 1, 2025 · 2 min · Kristian Alexander P

thunderbird

Thunderbird is an open source email, news, and chat client previously developed by the Mozilla Foundation.

August 1, 2025 · 1 min · Kristian Alexander P

vdirsyncer

vdirsyncer Vdirsyncer is a command-line tool for synchronizing calendars and addressbooks between a variety of servers and the local filesystem. The most popular usecase is to synchronize a server with a local folder and use a set of other programs to change the local events and contacts. Vdirsyncer can then synchronize those changes back to the server. config # An example configuration for vdirsyncer. # # Move it to ~/.vdirsyncer/config or ~/.config/vdirsyncer/config and edit it. # Run `vdirsyncer --help` for CLI usage. # # Optional parameters are commented out. # This file doesn't document all available parameters, see # http://vdirsyncer.pimutils.org/ for the rest of them. [general] # A folder where vdirsyncer can store some metadata about each pair. status_path = "~/.local/share/vdirsyncer/status/" # CARDDAV [pair alexarians_contacts] # A `[pair <name>]` block defines two storages `a` and `b` that should be # synchronized. The definition of these storages follows in `[storage <name>]` # blocks. This is similar to accounts in OfflineIMAP. a = "alexarians_contacts_local" b = "alexarians_contacts_remote" # Synchronize all collections that can be found. # You need to run `vdirsyncer discover` if new calendars/addressbooks are added # on the server. collections = ["from a", "from b"] # Synchronize the "display name" property into a local file (~/.contacts/displayname). metadata = ["displayname", "description"] # To resolve a conflict the following values are possible: # `null` - abort when collisions occur (default) # `"a wins"` - assume a's items to be more up-to-date # `"b wins"` - assume b's items to be more up-to-date #conflict_resolution = null [storage alexarians_contacts_local] # A storage references actual data on a remote server or on the local disk. # Similar to repositories in OfflineIMAP. type = "filesystem" path = "~/.contacts/" fileext = ".vcf" [storage alexarians_contacts_remote] type = "google_contacts" token_file = "~/.local/share/vdirsyncer/google_contacts_token" client_id = "<Client ID from Google developer console>" client_secret = "<Client secret from Google developer console>" #username = # The password can also be fetched from the system password storage, netrc or a # custom command. See http://vdirsyncer.pimutils.org/en/stable/keyring.html #password = # CALDAV [pair alexarians_calendar] a = "alexarians_calendar_local" b = "alexarians_calendar_remote" collections = ["from a", "from b"] # Calendars also have a color property metadata = ["displayname", "color"] [storage alexarians_calendar_local] type = "filesystem" path = "~/.calendars/" fileext = ".ics" [storage alexarians_calendar_remote] type = "google_calendar" token_file = "~/.local/share/vdirsyncer/google_calendar_token" client_id = "<Client ID from Google developer console>" client_secret = "<Client secret from Google developer console>" #url = "https://owncloud.example.com/remote.php/caldav/" #username = #password = Code Snippet 1: vdirsyncer configuration Backlinks khal

August 1, 2025 · 2 min · Kristian Alexander P

vim

Vim is a terminal text editor. It is an extended version of vi with additional features, including syntax highlighting, a comprehensive help system, native scripting (Vim script), a visual mode for text selection, comparison of files (vimdiff), and tools with restricted capabilities such as rview and rvim. Backlinks neovim

August 1, 2025 · 1 min · Kristian Alexander P

zettelkasten

Zettelkasten A Zettelkasten (German: ‘slipbox’, plural Zettelkästen) or card file consists of small items of information stored on Zetteln (German: ‘slips’), paper slips or cards, that may be linked to each other through subject headings or other metadata such as numbers and tags. It has often been used as a system of note-taking and personal knowledge management for research, study, and writing. This is the basis for org-roam.

August 1, 2025 · 1 min · Kristian Alexander P

i3wm

i3 is a tiling window manager, completely written from scratch. The target platforms are GNU/Linux and BSD operating systems, our code is Free and Open Source Software (FOSS) under the BSD license. i3 is primarily targeted at advanced users and developers. Based upon the experiences we made when wanting to hack/fix wmii, we agreed upon the following goals for i3: Backlinks i3 website

July 31, 2025 · 1 min · Kristian Alexander P

libvirt

Libvirt Libvirt is a virtualization API that provides a consistent and unified way to manage different virtualization technologies like KVM, Xen, and QEMU. It offers a stable API, a daemon (libvirtd), and command-line tools (like virsh) for managing virtual machines and other virtualization features such as storage and networking. virsh Backlinks virt-manager virsh

July 31, 2025 · 1 min · Kristian Alexander P

org-roam

Org-roam is a knowledge management system, or personal wiki, built on top of Emacs’ Org-mode. It implements a networked thought system, similar to Roam Research, allowing users to create interconnected notes in a non-hierarchical way. This facilitates effortless linking and discovery of connections between ideas, effectively creating a “second brain” for managing information. Setting up Org-roam Since I’m also publishing the notes using hugo, some properties are needed. (setq org-roam-capture-templates '(("d" "default" plain "#+author: %n\n#+date: %t\n#+description: \n#+hugo_base_dir: ..\n#+hugo_section: posts\n#+hugo_categories: other\n#+property: header-args :exports both\n#+hugo_tags: \n%?" :if-new (file+head "%<%Y-%m-%d_%H-%M-%S>-${slug}.org" "#+title: ${title}\n") :unnarrowed t) ("p" "programming" plain "#+author: %n\n#+date: %t\n#+description: \n#+hugo_base_dir: ..\n#+hugo_section: posts\n#+hugo_categories: programming\n#+property: header-args :exports both\n#+hugo_tags: \n%?" :if-new (file+head "%<%Y-%m-%d_%H-%M-%S>-${slug}.org" "#+title: ${title}\n") :unnarrowed t) ("t" "tech" plain "#+author: %n\n#+date: %t\n#+description: \n#+hugo_base_dir: ..\n#+hugo_section: posts\n#+hugo_categories: tech\n#+property: header-args :exports both\n#+hugo_tags: \n%?" :if-new (file+head "%<%Y-%m-%d_%H-%M-%S>-${slug}.org" "#+title: ${title}\n") :unnarrowed t))) Code Snippet 1: org-roam-capture-templates for quick note capturing. d default plain #+author: %n These will separate each templates into its own category. Other category is still needed as default, for when I’m using a less used category. ...

July 31, 2025 · 2 min · Kristian Alexander P

qemu

Qemu QEMU is a free and open-source emulator and virtualizer. It allows users to run different operating systems and programs on various hardware architectures, effectively emulating a different computer system. It can be used as a standalone emulator or combined with other virtualization technologies like KVM for near-native performance. Backlinks libvirt

July 31, 2025 · 1 min · Kristian Alexander P

Rust Comments

Comments All programmers strive to make their code easy to understand, but sometimes extra explanation is warranted. In these cases, programmers leave comments in their source code that the compiler will ignore but people reading the source code may find useful. // hello, world In Rust, the idiomatic comment style starts a comment with two slashes, and the comment continues until the end of the line. For comments that extend beyond a single line, you’ll need to include // on each line, like this: ...

July 31, 2025 · 1 min · Kristian Alexander P