#
# Links to pages I've considered interesting at some time
#
# This file is intentionally maintained in a machine-readable form, but
# data format is not guaranteed to remain stable over time
#

- period: 2024-06
  links:

  - title: TechInfoDepot Wiki (hardware specs for wireless routers)
    url: https://techinfodepot.shoutwiki.com/wiki/Main_Page
    description: |-
      This knowledge base complements [OpenWRT docs](https://openwrt.org/docs/start)
      with a lot of hardware specific information.

      It is a fork of WikiDevi (shut down in 2019), similar to:

      - [Wireless CAT Wiki](https://wikidevi.wi-cat.ru/Main_Page)
      - [DeviWiki](https://deviwiki.com/wiki/)

  - title: Fight understanding decay with a rich Incident Summary
    by: Dan Slimmon
    url: https://blog.danslimmon.com/2024/06/14/fight-knowledge-decay-with-a-rich-incident-summary/
    description: |-
      Role of _scribe_ during incident response is not only to keep track of
      _incident timeline_ but also to maintain an _incident summary_ for when
      new responders join the effort.

  - title: What is PID 0?
    by: Dave Anderson
    url: https://blog.dave.tf/post/linux-pid0/
    description: |-
      > Unix PIDs do start at 0! PID 0 just isn’t shown to userspace through
      > traditional APIs. PID 0 starts the kernel, then retires to a quiet life
      > of helping a bit with process scheduling and power management. Also the
      > entire web is mostly wrong about PID 0, because of one sentence on
      > Wikipedia from 16 years ago.

  - title: The curious case of stalled squashfs reads
    by: Chris Down
    url: https://chrisdown.name/2018/04/17/kernel-adventures-the-curious-case-of-squashfs-stalls.html
    description: |-
      Facebook SRE debugs stalled squashfs reads down to a suboptimal kernel
      configuration. These days CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is enabled
      by default in Debian, so the problem should not reoccur.

      In the last part of the article author recommends using btrfs for
      blockdevs with transparent compression in production environment.


- period: 2024-05
  links:

  - title: >
      "Is This Project Still Maintained?"
    by: Matt Palmer
    url: https://www.hezmatt.org/~mpalmer/blog/2024/05/14/is-this-project-still-maintained.html
    description: |-
      Some thoughts on maintainer responsibilities, user entitlement and
      personal projects.
      Also contains a draft of "The Open Source Maintainer's Manifesto"

  - title: IPv6 Prefix Lengths
    url: https://www.potaroo.net/ispcol/2024-04/ipv6-prefixes.html
    description: |-
      > I’m left with the observation that IPv6 is not in fact a 128-bit
      > address protocol in the same way as IPv4 is a 32-bit address protocol.
      > It’s a “64-bits plus a few extra interface identifier bits” address
      > protocol.


- period: 2024-04
  links:

  - title: DDC OLED (Driving OLED display via HDMI I2C pins)
    url: https://mitxela.com/projects/ddc-oled
    description: |-
      HDMI cables contain an i2c bus (yay backwards compatibility) which can be
      (ab)used for some fun projects. [Changing EDID serial] may have real
      world [applications], may be some devices for that already [exist]?

      [Changing EDID serial]: https://forum.espruino.com/conversations/325555/
      [applications]: https://notes.alinpanaitiu.com/Weird%20monitor%20bugs
      [exist]: https://www.aten.com/global/en/products/professional-audiovideo/video-converters/vc081a/

  - title: 'Passkeys: A Shattered Dream'
    by: William Brown
    url: https://fy.blackhats.net.au/blog/2024-04-26-passkeys-a-shattered-dream/
    description: |-
      An apt description of why current hype around passkeys makes me uneasy

  - title: Linux Security Hardening and Other Tweaks
    by: blakkheim
    url: https://vez.mrsk.me/linux-hardening.html
    description: |-
      Many security-related sysctl options.
      Should probably consider adopting most of those after a review.

  - title: My deployment platform is a shell script
    by: Jes Olson
    url: https://j3s.sh/thought/my-deployment-platform-is-a-shell-script.html
    description: |-
      Not that I agree with everything the author says, but saving this anyways.
      Author is an interesting person with a good writing style. Will read more.

      Jes Olson is also involved in running
      a [hackerspace](https://layerze.ro/)
      and a [computer club](https://cyberia.club/) in Minneapolis.


- period: 2024-03
  links:

    - title: Timeline of the xz open source attack
      by: Russ Cox
      url: https://research.swtch.com/xz-timeline
      description: |-
        Over a period of over two years, an attacker using the name “Jia Tan”
        worked as a diligent, effective contributor to the xz compression
        library, eventually being granted commit access and maintainership.
        Using that access, they installed a very subtle, carefully hidden
        backdoor into liblzma, a part of xz that also happens to be a
        dependency of OpenSSH sshd on Debian, Ubuntu, Fedora, and other
        systemd-based Linux systems

    - title: Corel Netwinder - Linux ARM PC from 1999
      url: http://www.netwinder.org/about.html
      description: |-
        An interesting relic of turn-of-millenium Internet describing an
        interesting piece of hardware. Some old user pages are still online,
        [~tinymoth](https://netwinder.osuosl.org/users/t/tinymoth/public_html/)
        contains photos of motherboard and chip identifiers.


- period: 2024-02
  links:

    - title: The power of two random choices
      by: Marc Brooker
      url: https://brooker.co.za/blog/2012/01/17/two-random.html
      description: |-
        A simple load balancing strategy that is surprisingly effective even
        when operating on cached data

    - title: How Doom didn't kill the Amiga
      by: Carl Svensson
      url: https://www.datagubbe.se/afb/
      description: A detailed account of the rise and fall of an Amiga zealot


- period: 2024-01
  links:

    - title: What is the difference between /dev/ttyUSB and /dev/ttyACM?
      by: Samuel Tardieu
      url: https://rfc1149.net/blog/2013/03/05/what-is-the-difference-between-devttyusbx-and-devttyacmx/
      description: |-
        Microcontroller based USB devices often present themselves as a modem
        instead of using a proper USB-to-UART device signature.
        Looks like CDC (Communications Device Class) is simpler to implement in firmware.

        Here is a [relevant comment] regarding CDC-ACM implementation

        [relevant comment]: https://old.reddit.com/r/linux/comments/11y07qn/w/jd81taw/


- period: 2023-12
  links:

  - title: Paged Out! (magazine)
    url: https://pagedout.institute/
    description: |-
      Web zine with one-page articles about programming, hacking, security, demoscene, etc.

  - title: Solving the Looming Developer Liability Problem
    by: James Bottomley
    url: https://blog.hansenpartnership.com/solving-the-looming-developer-liability-problem/
    description: |-
      Current _no warranty_ clauses may not be enough to limit developer
      liability under new legislation, for example EU Cyber Resilience Act.
      New clauses may be required to add indemnification to existing licenses.


- period: 2023-11
  links:

  - title: How to build a plugin system on the web and also sleep well at night
    by: Figma
    url: https://www.figma.com/blog/how-we-built-the-figma-plugin-system/
    description: |-
      Running untrusted and potentially unsafe code in your application is difficult.
      Figma considered multiple options and went with Javascript Realms Shim.
      They have had to [migrate] to a separate JS interpreter compiled to WASM
      after [vulnerabilities] have been discovered in Realms Shim.

      [vulnerabilities]: https://agoric.com/blog/technology/realms-shim-security-updates
      [migrate]: https://www.figma.com/blog/an-update-on-plugin-security/


- period: 2023-10
  links:

  - title: getaddrinfo() on glibc calls getenv(), oh boy
    by: Rachel Kroll
    url: https://rachelbythebay.com/w/2023/10/16/env/
    description: |-
      This affects Go when it's used with CGO_ENABLED (`netdns=cgo`),
      i.e. by default.

  - title: Stealing power out of PC RS-232 port
    by: Tomi Engdahl
    url: https://www.epanorama.net/circuits/rspower.html
    description: |-
      An awful awful idea to use RS-232 signal lines as power source. I love it!
      Turns out you can steal 3-5mA per line (times three for DTR, RTS, TD)
      before triggering short circuit protection - which gives you an ample power
      budget of 40-90mW!

  - title: Finding the Best Block Filesystem
    by: Michael Opdenacker
    url: https://bootlin.com/pub/conferences/2023/eoss/opdenacker-finding-best-block-filesystem/opdenacker-finding-best-block-filesystem.pdf
    description: |-
      Comparison of mainline Linux filesystems for use as rootfs in embedded devices.
      EROFS provides some extra read performance but the advantage is not significant.
      Squashfs still wins on image size, especially with zstd compression.


- period: 2023-09
  links:

  - title: Useful settings for grub on Debian
    by: Ansgar Wiechers
    url: https://www.planetcobalt.net/sdb/grub_settings.shtml
    description: |-
      `panic=2` in kernel cmdline will trigger automatic reboot after kernel panic.
      Useful for one-off kernel tests and for unattended machines

  - title: Protecting SSH authentication with TPM 2.0
    by: Nicolas Iooss
    url: https://www.sstic.org/media/SSTIC2021/SSTIC-actes/protecting_ssh_authentication_with_tpm_20/SSTIC2021-Article-protecting_ssh_authentication_with_tpm_20-iooss.pdf
    description: |-
      Page 19:

      > This confirms that tpm2-pkcs11’s database contains an encrypted version
      > of the private key, stored in attribute CKA_TPM2_PRIV_BLOB of the
      > PKCS#11 object associated with the private key. This attribute is
      > encrypted using the seedValue of the used SRK, which is a secret
      > supposed to never leave the TPM. Therefore this analysis also confirms
      > that only the TPM itself can decrypt this attribute.

      See also: [slides](https://www.barbhack.fr/2021/slides/barbhack2021_tpm_auth.pdf)


- period: 2023-08
  links:

  - title: Using Ed25519 signing keys for encryption
    by: Filippo Valsorda
    url: https://words.filippo.io/using-ed25519-keys-for-encryption/
    description:
      Ed25519 keys may be converted to X25519 keys to be used for encryption.
      Unfortunately, this requires access to raw private key material and will
      not work for keys stored in ssh-agent


- period: 2023-07
  links:

  - title: Cap'n Proto - cerealization protocol
    url: https://capnproto.org/
    description: |-
      Binary serialization protocol used extensively at Cloudflare.
      Is faster and feels cleaner than protobufs.

  - title: Understanding SSH
    url: https://containerssh.io/development/containerssh/ssh/
    description: |-
      An introductory overview of SSH protocol. Helpful if you're implementing
      your own SSH server


- period: 2023-05
  links:

  - title: The TTY demystified
    by: Linus Åkesson
    url: https://www.linusakesson.net/programming/tty/
    description: |-
      Good introduction into the world of ttys. Explains the relationship
      between ttys, ptys, line discipline and mixes in a sidebar on Unix
      signals.


- period: 2023-03
  links:

  - title: Hexagonal Grids - Cube Coordinates
    url: https://www.redblobgames.com/grids/hexagons/#coordinates-cube
    description: |-
      How to reason about hexagonal tiles when programming


- period: 2023-01
  links:

  - title: Golang is evil on shitty networks
    url: https://withinboredom.info/blog/2022/12/29/golang-is-evil-on-shitty-networks/
    description: |-
      With a folow up: [The Cargo Cult of TCP_NODELAY](https://withinboredom.info/blog/2023/01/03/the-cargo-cult-of-tcp_nodelay-when-to-use-it/)

      This article notices and explains an opinionated Golang's default of
      setting TCP_NODELAY on all TCP sockets. It's used to improve throughput
      over datacenter-grade links (Ethernet) but may result in poor performance
      on unreliable networks (WiFi, mobile). Userspace IO buffering may help to
      work around this problem because raw socket is not easily exposed in
      Golang (to revert this setting in case it's required).


- period: 2022-12
  links:

  - title: Go is not an easy language
    url: https://www.arp242.net/go-easy.html
    by: Martin Tournoij
    description: |-
      Even though Go is _simple_, often it is not _easy_

  - title: Your problem with Vim is that you don't grok vi
    url: https://stackoverflow.com/a/1220118
    description: |-
      A StackOverflow answer that could have been a long blog post.
      Good explanation of some vi intricacies I didn't understand before.


- period: 2022-11
  links:

  - title: What Colour are your bits?
    url: https://ansuz.sooke.bc.ca/entry/23
    description: |-
      Information (bits) may have some properties that are not possible to
      calculate from data alone. Does this transmission violate copyright?
      Is this file infected by a virus? Is this number random?

  - title: Everything I wish I knew when learning C
    url: https://tmewett.com/c-tips/
    description: |-
      This is why I don't write C

  - title: Everything you should know about certificates and PKI but are too afraid to ask
    url: https://smallstep.com/blog/everything-pki/
    description: |-
      Ground up explanation of X.509 public key infrastructure.
      SSH and PGP PKI's are mentioned but not described.

  - title: Mataroa Blog Collection
    url: https://collection.mataroa.blog/
    description: |-
      Curated list of personal blogs. I've found some blogs there with just two
      or three entries each, all of them interesting. That's two or three
      entries better that an average blog (in my experience).

  - title: The Great Noun List
    by: Desi Quintans
    url: http://www.desiquintans.com/nounlist
    description: |-
      List of 6700+ most popular English nouns. Useful for all kinds of things.
      Dedicated to public domain, no usage restrictions, no attribution required.

  - title: >-
      SSH: Uniqueness of User Certificates Serial Numbers
    url: https://yaobinwen.github.io/2021/03/26/SSH-X509-cert-serial-numbers.html
    description: |-
      Uniqueness of SSH user certificate serial numbers is left up to issuer to
      implement. For a low volume CA golang's UnixNano() seems not bad.


- period: 2022-10
  links:

  - title: Next GitLab Runner Auto-scaling Architecture (RFC)
    url: https://docs.gitlab.com/ee/architecture/blueprints/runner_scaling/
    description: |-
      At this moment one of our core products - GitLab Runner - and one of its
      most important features - ability to auto-scale job execution
      environments - depends on an external product that is abandoned.

  - title: Bottom-up eBPF
    url: https://medium.com/@phylake/bottom-up-ebpf-d7ca9cbe8321
    description: |-
      This article shows where `SEC` macro comes from but I'm still not sure if
      similar `__section` macro is its accepted successor. It's certainly seen
      more often in the wild.

  - title: Custom BPF firewalls for systemd services
    url: https://kailueke.gitlab.io/systemd-custom-bpf-firewall/
    description: |-
      Unfortunately, `net_cls` was deprecated and dropped in cgroups v2, so
      writing custom eBPF programs appears to be the only way to achieve
      per-unit firewalling with systemd.

      See also:

      - [Similar thought process in Gnome bug tracker](https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1038)
      - [Writing cgroup/skb BPF program in Rust](https://aya-rs.dev/book/programs/cgroup-skb/)
      - [Well-commented example of cgroup/skb program](https://github.com/mk-fg/fgtk/blob/master/bpf/cgroup-skb.nonet.c)
      - [Using Cilium libraries to interact with eBPF program from Go](https://nfil.dev/coding/security/ebpf-firewall-with-cgroups/)
      - [Where packet mark is stored in sk_buff](https://unix.stackexchange.com/a/467164/5255)
      - [eBPF __sk_buff is not kernel's sk_buff](https://medium.com/@c0ngwang/understanding-struct-sk-buff-730cf847a722)
      - man 7 bpf-helpers -> bpf_setsockopt -> SO_MARK; man 7 socket -> SO_MARK
      - ['uknown function' when loading a BPF program may mean that helper is
        just not allowed](https://stackoverflow.com/a/62173263/3275560)


- period: 2022-09
  links:

  - title: How to create an SSH certificate authority
    url: https://jameshfisher.com/2018/03/16/how-to-create-an-ssh-certificate-authority/
    by: Jim Fisher
    description: |-
      SSH certificates and surrounding infrastructure are tough to get
      a handle on. Especially these days when every article tries to push
      their _access plane single sign-on RBAC solution._

      Jim Fisher's explanation just clicked for me. SSH cert authority is
      simply another SSH key pair.

  - title: Signing arbitrary data with SSH keys
    url: https://www.agwa.name/blog/post/ssh_signatures
    description: |-
      Using ssh-keygen instead of PGP to sign arbitrary data is easier and
      (seems to be) as safe. Namespaces are a neat feature that prevents
      signature reuse across protocols.

  - title: Create ED25519 certificates for TLS with OpenSSL
    url: https://blog.pinterjann.is/ed25519-certificates.html
    description: |-
      It is possible to sign X.509 certificates (HTTPS / TLS) with a ED25519
      key even though no root CA does that. Useful for selfsigned certs though

  - title: Exfiltration by encoding data in pixel colour values
    url: https://www.pentestpartners.com/security-blog/exfiltration-by-encoding-data-in-pixel-colour-values/
    description: |-
      I've had the same idea last night. Unsurprisingly, someone else had
      thought of it 5 years ago and had already coded a proof-of-concept. It's
      a shame that GitHub repo is just a ZIP dump.

      *Note*: RDP is not a pixel perfect protocol, it modifies color values in
      a way not perceptible for humans. This makes theoretical density of 24 bits
      per pixel impossible. Article author had settled for mere 3 bits per
      pixel (with a large safety margin). Author estimates that 15 bits per
      pixel should be achievable on a good connection

  - title: Immutable Linux OS with a hermetic /usr partition
    url: https://0pointer.net/blog/fitting-everything-together.html
    by: Lennart Poettering
    description: |-
      Thoughts on how to build an immutable Linux OS with automated A/B rootfs
      image upgrades.

      Notable mentions:

      - [mkosi](https://0pointer.net/blog/mkosi-a-tool-for-generating-os-images.html)
      - [systemd-nspawn](https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html)


- period: 2022-08
  links:

  - title: DuckCorp - a non-profit Magical Organization
    url: https://users.duckcorp.org/index.php/A_bit_of_History
    description: |-
      I always admire (and envy) friend groups which set out to build something
      and then _actually_ build something. DuckCorp is an endearing example of such.
      Started at a student dorm and still alive and evolving 20+ years later,
      they run some IT infrastructure and provide software and services to members.

  - title: Johnny.Decimal system
    url: https://johnnydecimal.com/
    description: |-
      A personal system for information/knowledge/data classification and
      management. Applicable to file system hierarchy, emails, note taking apps
      and even to IRC logs.

      I doubt I'll ever implement something like this for myself, but it never
      hurts to have an option.

  - title: Contributor-maintainer-project fallacy
    url: https://www.reddit.com/r/opensource/comments/wxozko/comment/ilslpdb/
    description: |-
      That's where the contributor-maintainer-project rhetoric comes in.
      Calling the key people in this scenario (you, and that other person who
      is using your code) "maintainer" and "contributor", and the software you
      wrote a "project", is highly suggestive; it implies a few things that,
      while not true, create big expectations

  - title: How NAT traversal works
    url: https://tailscale.com/blog/how-nat-traversal-works/
    by: Tailscale
    description: |-
      A systematic review of firewall hole punching (with and without NAT
      and/or CGNAT in between). Tailscale uses that to build their VPN mesh but
      the article is applicable to any P2P communication over UDP.

  - title: ToolJet - low code CRUD app builder
    url: https://docs.tooljet.com/docs/
    description: |-
      ToolJet (AGPLv3) allows hand-crafting SQL queries and applying
      Javascript transformations to process the data.
      That's a nice feature many competitors are lacking.

      I did not try ToolJet yet. Bookmarking to return to this later.

      Also consider:

      - [Baserow](https://baserow.io/) (MIT Expat + EULA for some components)
      - [AppSmith](https://www.appsmith.com/) (Apache-2.0)
      - [Budibase](https://budibase.com/) (GPLv3 mostly)
      - [Lowdefy](https://github.com/lowdefy/lowdefy) (Apache-2.0)


- period: 2022-07
  links:

  - title: USB WiFi adapters in Linux
    url: https://github.com/morrownr/USB-WiFi/blob/main/home/USB_WiFi_Chipsets.md
    description: |-
      To summarize: Drivers are a big problem.
      In-tree kernel support is even bigger problem.

      2.4GHz recommendation seems to be Ralink rt5370,
      for 5GHz there are reports of success with mt7612u, mt7610u

      Beware: mt7601u on Linux does not support AP mode

      See also: <https://elinux.org/RPi_USB_Wi-Fi_Adapters>

  - title: On github as a social network
    by: Eric Bower
    url: https://erock.io/2022/06/03/github-as-social-network.html
    description: |-
      Why do I get so excited when I receive stars on my projects hosted on
      github? I am constantly trying to come up with new projects to build, but
      do I actually want to build them? Or do I just want social currency? I’m
      not sure I can tell the difference anymore.

      Github isn’t just a code repository, it’s a social networking site.

  - title: Software freedom isn’t about licenses – it’s about power
    by: Alyssa Rosenzweig
    url: https://rosenzweig.io/blog/software-freedom-isnt-about-licenses-its-about-power.html
    description: |-
      Licensing does matter; user autonomy is lost with subscription models,
      revocable licenses, binary-only software, and onerous legal clauses. Yet
      these issues pertinent to desktop software do not scratch the surface of
      today’s digital power dynamics.

      Today, companies exert power over their users by tracking, selling data,
      psychological manipulation, intrusive advertising, planned obsolescence,
      and hostile Digital “Rights” Management (DRM) software. These issues
      affect every digital user, technically inclined or otherwise, on desktops
      and smartphones alike.


- period: 2022-06
  links:

  - title: Incarceration in Real Numbers
    url: https://mkorostoff.github.io/incarceration-in-real-numbers/
    description: |-
      An infographic showing just how disproportional incarceration is in the USA.

  - title: >-
      "Idle chitchat" vs "smalltalk"
    url: https://news.ycombinator.com/item?id=31880345
    description: |-
      It took me probably 7 years after moving out of my parent’s place to
      learn that “smalltalk” and “idle chitchat” are not necessarily the same
      thing [...]

      In my taxonomy, “idle chitchat” is talking about things. “Smalltalk” is
      learning about each other. “The weather sure is nice today, isn’t it?” =>
      idle chitchat. You’re not likely to understand a person from that
      starting point, except that “wow look, we both like the sun”. “Where are
      you from? What brings you here?” => smalltalk. You’re encouraging the
      person to reveal some small amounts of information about themselves which
      you can use to probe further and hopefully find something fascinating [...]

      Now I take conversations with strangers (or anyone really) as a sport, as
      a challenge. “How can I use these precious moments we strangers share to
      discover something new? To leave one of us pondering something novel
      later in the evening” [...]

      _A comment from [Hacker News thread](https://news.ycombinator.com/item?id=31859072)_

  - title: 13 Propositions on an Internet for a “Burning World”
    url: https://pure.mpg.de/rest/items/item_3390006_1/component/file_3390007/content
    description: |-
      However, up until then, we live in a burning world, i.e., one evaporating
      under the human-made climate emergency and countless other shifts we find
      ourselves in at the moment. The Internet of today will certainly neither
      be sustainable nor resilient in the future we are heading towards.

      Tobias Fiebig and Doris Aschenbrenner wrote down these
      thoughts in a paper in the form of “13 propositions”, which will appear
      in the proceedings of the joint workshops on “Technologies, Applications,
      and Uses of a Responsible Internet” and “Building Greener Internet”.

      _Also published in a series of
      [blog posts](https://doing-stupid-things.as59645.net/burning/world/resillience/2022/06/27/propositions-part-1.html)_

  - title: Notes on the small web
    url: https://felix.plesoianu.ro/web/in-the-small.html
    description: |-
      There still exists a web like the one I browsed when I was a teenager.
      It's just not as visible anymore with all the loud giants grabbing most
      of attention first.


- period: 2022-05
  links:

  - title: Marginalia Search
    url: https://search.marginalia.nu/
    description: |-
      Remember when you used to explore the Internet, when you used to discover
      cool little websites made by people and it wasn't just a bunch of low
      effort content mill listicles and blog spam? I want to show you that the
      Internet you used to go exploring is still very much there. There are
      still tons of small personal websites, and a wealth of long form text
      from both the past and the present. So it's a search engine. It's perhaps
      not the greatest at finding what you already knew was there. Instead it
      is designed to help you find some things you didn't even know you were
      looking for.

  - title: Beej's Guide to Unix IPC
    url: https://beej.us/guide/bgipc/html/multi/index.html
    description: |-
      These documents are meant to springboard the aforementioned user into the
      realm of IPC by delivering a concise overview of various IPC techniques.
      This is not the definitive set of documents that cover this subject, by
      any means.  Like I said, it is designed to simply give you a foothold in
      this, the exciting world of IPC.

  - title: Google Chrome loses all saved passwords on Linux
    url: https://bugs.chromium.org/p/chromium/issues/detail?id=1251355
    description: |-
      A bug from 2021 that affects about 5% of Linux Chrome installations.
      Password sync errors out when it encounters just one mangled row in SQLite
      database. Check if you're affected by this error: `chrome://sync-internals/`
      (look for red/green row for 'Passwords' on the right side of screen),
      workaround: enable `chrome://flags/#clean-undecryptable-passwords`, then
      toggle sync off/on.

  - title: Science Abridged Beyond the Point of Usefulness
    url: https://www.smbc-comics.com/covid/files/miniSciWebv6.pdf
    description: |-
      Aristotle said a bunch of stuff that was wrong. Galileo and Newton fixed
      things up. Then Einstein broke everything again. Now, we’ve basically got it
      all worked out, except for small stuff, big stuff, hot stuff, cold stuff,
      fast stuff, heavy stuff, dark stuff, turbulence, and the concept of time.
      _(The book is licensed under CC-BY-NC-3.0)_

  - title: Cirros Linux
    url: https://github.com/cirros-dev/cirros
    description: |-
      _(Via [OpenStack images](https://docs.openstack.org/image-guide/obtain-images.html))_ -
      A minimal Linux distribution that was designed for use as a test image on
      clouds such as OpenStack Compute. Comes with cloud-init out of the box and
      supports insecure login by default (user: `cirros`, password: `gocubsgo`)


- period: 2022-04
  links:

  - title: Caroline
    url: https://jonathanalland.com/caroline.html
    description: A short story about friendship, imagination and growing up. Well
      written. Sad.


- period: 2022-02
  links:

  - title: Dave Gauer's Notebook System
    url: http://ratfactor.com/notes
    description: |-
      Looking back at ten years of logging each day into paper notebooks,
      transcribed into text files later (with vim plugins and shell scripts for
      automation)


- period: 2022-01
  links:

  - title: Extrepo
    url: https://grep.be/blog/en/computer/debian/Announcing_extrepo/
    description: |-
      Manage Debian external repositories in a safe manner. Google Chrome and
      GitLab runner are already added into [repository database](https://salsa.debian.org/extrepo-team/extrepo-data)

  - title: |-
      GitHub stars history for my
        projects
    url: https://star-history.com/#sio/Makefile.venv&sio/LibPQ&sio/bash-complete-partial-path&Date

  - title: A Minimum Viable Computer, or Linux for $15
    url: https://bbenchoff.github.io/pages/LinuxDevice.html
    description: |-
      A single developer designs and builds a cheap Linux handheld computer
      (Allwinner F1C100s, 533MHz, 32-64MB DDR, Buildroot)

  - title: Bufferbloat Test
    by: Waveform
    url: https://www.waveform.com/tools/bufferbloat

  - title: Constraint Programming
    url: https://en.wikipedia.org/wiki/Constraint_programming
    description: |-
      A concept that might be useful for some programming projects. There are
      several known algorithms with good opensource implementations, no need to
      attempt to solve this alone.


- period: 2021-11
  links:

  - title: The Gradual Extinction of Softness
    by: Chantha Nguon with Kim Green
    url: https://hippocampusmagazine.com/2021/11/the-gradual-extinction-of-softness-by-chantha-nguon-with-kim-green/
    description: |-
      An essay about first hand experience of
      Kambodian revolution (Khmer Rouge) and fleeing to Saigon. Going from a
      middle class 9-year old girl to a woman in a refugee camp to a founder of
      Women's Development Centre back in Cambodia.

  - title: b4cksp4ce
    url: https://0x08.in/
    description: A hackspace in St. Petersburg

  - title: Bird flew from Alaska to Australia non-stop, 8,100 miles in 239 hours
    url: https://www.audubon.org/news/these-mighty-shorebirds-keep-breaking-flight-records-and-you-can-follow-along
    description: |-
      Amazing that our state of the art technology is a fragile device that can
      fly for 30 minutes, while this ancient entity can fly nonstop, deriving
      energy from bugs and water, fly through storms, self repair any damage, has
      self navigation and local avoidance, and even can self replicate
      [(more comments)](https://news.ycombinator.com/item?id=29225729)

  - title: A philosophy for productive instant messaging
    url: https://drewdevault.com/2021/11/24/A-philosophy-for-instant-messaging.html
    description: |-
      An approach to instant messaging I agree with. Will probably link to this if
      topics comes up


- period: 2021-10
  links:

  - title: Terminal Server on a Budget
    url: https://blog.lasseter.org/posts/2020/07/terminal-server-on-a-budget/
    description: |-
      Using `conserver` for out-of-band (OOB) management of whitebox servers via
      serial console. See also:

        - [Conserver](https://www.conserver.com/)
        - [Zonker's Greater Scroll of Console Knowledge](https://www.conserver.com/consoles/)
        - [Serial Console Server for the Poor](https://blog.zugschlus.de/archives/707-Serial-Console-Server-for-the-Poor-I.html) -
          udev rules
        - Using serial for out-of-band access and OS reinstallation:
          [FreeBSD/Ubuntu](https://adventurist.me/posts/00308),
          [dualboot](https://adventurist.me/posts/00307)


- period: 2021-09
  links:

  - title: Teleport Access Plane
    url: https://goteleport.com/
    description: |-
      Certificate authority and access plane for SSH, kubernetes, web apps etc.
      Issues short-lived certificates after web based authentication. Supports
      session recording, access requests, live session view


- period: 2021-08
  links:

  - title: LCD Scaler Board
    url: https://www.display-solution.com/en/lcd-panel-control-boards/hdmi-dp-lcd-tft-scaler-board/
    description: |-
      Turn any laptop screen into a proper monitor with a simple cheap board.
      Inputs: DC power, HDMI/VGA signal. Outputs: LVDS, backlight.


- period: 2021-07
  links:

  - title: SAS2Flash Utility
    url: https://docs.broadcom.com/doc/12355769
    description: |-
      Quick reference guide for flashing LSI SAS controllers (SAS 2008, SAS 2308)

  - title: Virtualization Best Practices
    url: https://documentation.suse.com/sles/15-SP1/pdf/article-vt-best-practices_color_en.pdf
    description: |-
      A guide from SUSE documentation. Good explanations of Kernel Samepage
      Merging (KSM), memballoon, hugepages plus sane checklists for Windows guest
      configuration.

  - title: Linux routing for multiple uplinks/providers
    url: https://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html
    description: A straightforward explanation of dual WAN setup on a Linux router

  - title: 'Salary Negotiation: Make More Money, Be More Valued'
    url: https://www.kalzumeus.com/2012/01/23/salary-negotiation/


- period: 2021-06
  links:

  - title: Which Azure VMs support nested virtualization
    url: https://docs.microsoft.com/en-us/azure/virtual-machines/acu
    description: |-
      Check this list for instances marked with `***` to indicate support for
      nested virtualization. Best fit for my purposes are `E4ds_v4`, `D4ds_v4`, `E4s_v3`
      (D4 means general purpose with 4 vCPU, E4 offers extended memory with 4vCPU)

  - title: Inserting cage nuts in server rack without a tool
    url: https://www.reddit.com/r/homelab/comments/nyus92
    description: |-
      Use two screwdrivers to save your fingers even if you don't have the special tool

  - title: How to run X server using xserver-xorg-video-dummy driver
    url: https://techoverflow.net/2019/02/23/how-to-run-x-server-using-xserver-xorg-video-dummy-driver-on-ubuntu/
    description: |-
      Sometimes you need to use X server on a machine without a video card. Dummy
      driver helps in such cases


- period: 2021-04
  links:

  - title: Surprisingly Slow
    url: https://gregoryszorc.com/blog/2021/04/06/surprisingly-slow/
    description: |-
      A writeup on possible performance bottlenecks with modern computing:

        - Automated environment detection
        - New process overhead
        - Closing file handles on Windows
        - Writing to Terminals
        - Thermal throttling / ACPI C-state, P-state
        - Interpreter overhead
        - Storage I/O
        - Unnecessary compression (zlib vs zstandard vs no compression)
        - Old baseline for x86_64 binaries
        - Inefficiend diff implementations (sometimes lower algorithm complexity
          does not result in faster runtimes)

  - title: Why Is Payroll Hard
    url: http://wiki.c2.com/?WhyIsPayrollHard
    description: A real world description of why business logic is almost never algorithmic


- period: 2021-03
  links:

  - title: Wealth shown to scale
    url: https://mkorostoff.github.io/1-pixel-wealth/
    description: |-
      A comparison infografic with 1px = $1000 showing the scale of Jeff Bezo's
      fortune and that of top 400 Americans.

  - title: Raspberry Pi Cluster
    url: https://darrylcauldwell.github.io/post/homelab-pi/#finished-rack
    description: Laser cut aluminium case for RasPi cluster


- period: 2021-02
  links:

  - title: Girl & Computer
    url: https://rmurphey.medium.com/girl-computer-31ecd328bc53
    description: |-
      A woman reminiscing about all the events leading to her working full time as
      a programmer, starting with her parents buying a computer in 1982, when she
      was a 5 year girl.

  - title: 'Do-nothing scripting: the key to gradual automation'
    url: https://blog.danslimmon.com/2019/07/15/do-nothing-scripting-the-key-to-gradual-automation/
    description: |-
      A good idea on gradual introduction on automation into
      checklist/runbook-style workflows

  - title: On the design on text editors
    url: https://arxiv.org/pdf/2008.06030.pdf
    description: |-
      A short research paper that highlights numerous possibilities of
      text/code editor improvement with modern technology.


- period: 2020-11
  links:

  - title: Can EARLIER be used in DAX measures?
    url: https://javierguillen.wordpress.com/2012/02/06/can-earlier-be-used-in-dax-measures/
    description: A workaround to create a row context when calculating DAX measures.


- period: 2020-10
  links:

  - title: OpenBSD Home Router
    url: https://0xc45.com/blog/openbsd-home-router/
    description: 'A guide to building a home router from scratch: firewall, dhcp, dns'

  - title: PXE booting a Raspberry Pi 4
    url: https://riscj.dev/projects/rpirack/posts/01.html
    description: Hand-on guide to setting up PXE boot for multiple clients


- period: 2020-08
  links:

  - title: What to do with a lot of on-prem compute?
    url: https://www.reddit.com/r/homelab/comments/iel5gz/
    description: |-
      A group of people bought several thousand dollars worth of compute equipment
      and just now are thinking about how to create a profitable business out of it.

  - title: Tunshell
    url: https://github.com/TimeToogo/tunshell
    description: |-
      Easy remote shell for inaccessible hosts (e.g. double-NATed)

  - title: Ventoy
    url: https://www.ventoy.net/
    description: Boot multiple live ISOs from a single USB drive


- period: 2020-07
  links:

  - title: 'TinyPilot: Build a KVM Over IP for Under $100'
    url: https://mtlynch.io/tinypilot/
    description: |-
      Use Raspberry Pi to emulate mouse/keyboard via USB OTG port and to capture
      and broadcast video signal with HDMI-USB dongle.

  - title: |-
      Declassified writings of German generals written for training of US military
      immediately after World War II
    by: Center for Military History
    url: https://history.army.mil/catalog/browse/title.html
    description: |-
      - [Warfare in the Far North](https://history.army.mil/html/books/104/104-24/index.html)
        - [Military Improvisations in the Russian Campaign](https://history.army.mil/catalog/pubs/104/104-1.html)
        - [Effects of Climate on Combat in European Russia](https://history.army.mil/html/books/104/104-6/index.html)

  - title: Myth of the clean Wehrmacht
    url: https://en.wikipedia.org/wiki/Myth_of_the_clean_Wehrmacht


- period: 2020-06
  links:

  - title: Изготовление печатной платы с холодным переносом тонера
    url: http://myowndevice.ru/index.php/theory/item/12-delaem-pechatnuyu-platu
    description: |-
      Перенос тонера с помощью ацетона (1 часть ацетона, 2 части жидкости для
      снятия лака без ацетона), травление перекисью водорода и лимонной кислотой.


- period: 2020-05
  links:

  - title: Systemd service hardening
    url: https://github.com/alegrey91/systemd-service-hardening
    description: |-
      A short guide on how to use `systemd-analyze security` and how to harden
      your systemd units

  - title: Systemd, 10 years later
    url: https://blog.darknedgy.net/technology/2020/05/02/0/
    description: A large essay on the history and internals of systemd


- period: 2020-04
  links:

  - title: Enabling Hyper-V enlightenments with KVM
    url: https://blog.wikichoon.com/2014/07/enabling-hyper-v-enlightenments-with-kvm.html
    description: |-
      KVM offers some special features that make Windows guests run faster. See
      also: [synic, stimer](https://bugzilla.redhat.com/show_bug.cgi?id=1610461),
      [hpet, hypervclock](https://www.reddit.com/r/VFIO/comments/80p1q7)

  - title: 'Endlessh: an SSH Tarpit'
    url: https://nullprogram.com/blog/2019/03/22/
    description: |-
      Delay incoming SSH connections for weeks to trap attacker's resources.
      Implemented in C with a proof of concept draft in asynchronous Python.
      Also features a draft of HTTP tarpit.


- period: 2020-03
  links:

  - title: A half-hour to learn Rust
    url: https://fasterthanli.me/blog/2020/a-half-hour-to-learn-rust/
    description: |-
      An introduction to Rust that is enough to read and understand the code you
      see online

  - title: Thin Clients Hardware database (ParkyTowers)
    by: David Parkinson
    url: https://www.parkytowers.me.uk/thin/
    description: |-
      A thorough database of thin client hardware, with detailed photos of
      internal layout, description of extension capabilities and Linux support


- period: 2020-02
  links:

  - title: Why are we so bad at software engineering?
    url: https://www.bitlog.com/2020/02/12/why-are-we-so-bad-at-software-engineering/
    description: |-
      Our industry’s mindset grew in an environment where failure is cheap and we
      are incentivized to move quickly. Our processes are poorly applied when the
      cost of a redo is high or a redo is impossible.

  - title: Docker and the PID 1 zombie reaping problem
    url: https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/amp/
    description: |-
      A good explanation of why PID 1 has extra responsibilities (cleaning up adopted
      defunct processes), plus a working example of simple init process written in
      Python

  - title: Rethinking PID 1
    by: Lennart Poettering
    url: http://0pointer.de/blog/projects/systemd.html
    description:  The article that started systemd era

  - title: Testing your Ansible roles with Molecule
    by: Jeff Geerling
    url: https://www.jeffgeerling.com/blog/2018/testing-your-ansible-roles-molecule
    description: Overview of automated testing for Ansible roles

  - title: Using molecule with GitLab CI
    url: https://univers-libre.net/posts/ansible-molecule-gitlab-ci.html
    description: Hands-on example of implementing Molecule tests in GitLab CI

  - title: Continuous Infrastructure with Ansible, Molecule & TravisCI
    url: https://blog.codecentric.de/en/2018/12/continuous-infrastructure-ansible-molecule-travisci/
    description: 'A three-part series of blog posts on Molecule: scenarios, drivers, linters.'


- period: 2020-01
  links:

  - title: A philosophy of project governance
    by: Drew DeVault
    url: https://drewdevault.com/2020/01/17/Effective-project-governance.html
    description: |-
      Reflections on software projects being intrinsically social systems that can
      not be programmed. Good arguments on why Code of Conduct must not be
      elevated to the position of highest authority.


- period: 2019-11
  links:

  - title: Rate limiting algorithms
    url: https://en.wikipedia.org/wiki/Rate_limiting
    description: |-
      Multiple approaches to implementing rate limits in your code.

        - [Token bucket](https://en.wikipedia.org/wiki/Token_bucket), also: in use with Python
          [aiohttp](https://quentin.pradet.me/blog/how-do-you-rate-limit-calls-with-aiohttp.html)
        - [Leaky bucket](https://en.wikipedia.org/wiki/Leaky_bucket)
        - Fixed window counter
        - Sliding window log
        - [Sliding window counter](https://medium.com/figma-design/an-alternative-approach-to-rate-limiting-f8a06cf7c94c)


- period: 2019-10
  links:

  - title: Detecting the use of "curl | bash" server side
    url: https://www.idontplaydarts.com/2016/04/detecting-curl-pipe-bash-server-side/
    description: |-
      Piping curl to shell may be detected via HTTP fetching delays even if User
      Agent is masked. Requires lots of null-byte padding though.

  - title: Patch workflow with Mutt
    by: Greg Kroah-Hartman
    url: http://kroah.com/log/blog/2019/08/14/patch-workflow-with-mutt-2019/
    description: |-
      Detailed description of email based kernel dev
      workflow. Notable references:
      [isync/mbsync](http://isync.sourceforge.net/),
      [aerc](https://aerc-mail.org/)

  - title: Noto Color Emoji Font
    url: https://www.google.com/get/noto/#emoji-zsye-color
    description: |-
      Add this to `~/.fonts` to enable emoji rendering in Debian 9. Available in
      Debian repos for Buster+ (10+)


- period: 2019-08
  links:

  - title: Software Usability II, Tom Davis
    url: http://www.art.net/%7Ehopkins/Don/unix-haters/tirix/embarrassing-memo.html
    description: |-
      Internal SGI memo (1993) regarding performance issues in their latest
      release. The problems highlighted there are not unique to that company or
      that time period, they frequently appear in all large software development
      projects nowadays. *This article is part of Unix Haters Handbook*.

  - title: Packaging Python projects
    url: https://hynek.me/articles/testing-packaging/
    description: |-
      Turns out there is a technical reason for putting Python code under `src/`
      directory in your repo. It makes easier to spot errors in `setup.cfg` and
      `MANIFEST.in`.
      See also:
      [Packaging a Python library](https://blog.ionelmc.ro/2014/05/25/python-packaging/#the-structure)

  - title: C Is Not a Low-level Language
    url: https://queue.acm.org/detail.cfm?id=3212479
    description: |-
      C was a good low-level abstraction in the era of PDP-11 but it is less so
      now. Parallel programming should not be hard, future hardware could make it
      better by dropping some C compatibility.


- period: 2019-07
  links:

  - title: Consider Using Asciidoctor for Your Next Presentation
    url: https://matklad.github.io/2019/05/19/consider-using-asciidoctor-for-your-next-presentation.html
    description: |-
      Asciidoc is a nice format to write documentation, this is what it can do for
      presentations.

  - title: Nifty Assignments
    by: Stanford University
    url: http://nifty.stanford.edu/
    description: |-
      A collection of unusual
      and interesting assignments for learning programming

  - title: RISC Is Fundamentally Unscalable
    url: https://erikmcclure.com/blog/risc-is-fundamentally-unscalable/
    description: |-
      Overview of upcoming issues in microprocessor design when current scaling
      techniques will stop working. Wow moment: the speed of light is now a
      limiting factor when designing CPUs. Includes some hints that VLIW
      architecture might be the future (see: Intel Itanium project)


- period: 2019-06
  links:

  - title: Мошенники и ЭЦП
    url: https://habr.com/ru/post/453596/
    description: |-
      Использование поддельной электронно-цифровой подписи для мошенничества
      (создание юридических лиц, сделки с недвижимостью)

  - title: 'A belief in meritocracy is not only false: it’s bad for you'
    url: https://bigthink.com/politics-current-affairs/a-belief-in-meritocracy-is-not-only-false-its-bad-for-you
