Digital Garden

I’m trying out a new thing here. Here I just ramble about random things, without having to publish a polished blog post every time.

August 2025

Candidate Keys Calculator

This learning tool shows you how you can derive superkeys and candidate keys from functional dependencies. This is useful for when you want to determine the specific normal form of a relation.

How to use

Here's how to use the candidate key calculator:

  1. Specify the attributes in your relation.
  2. Enter the functional dependencies in your relation.
  3. Check that the tool parses your functional dependencies correctly.
  4. Review the calculated superkeys for your relation.
  5. Identify the candidate keys (minimal superkeys).

Relation attributes

    Parsed attributes: {}

    Read More

    July 2025

    Nth roots of unity

    Here's a tool to calculate and visualize the nth roots of unity. I've taken the formula from Judson's Abstract Algebra, page 52 in the chapter on cyclic groups. Judson defines the nth roots of unity as the complex numbers \(z\) that satisfy the equation \(z^n=1\).

    Further, Theorem 4.25 shows that for \(z^n=1\), the nth roots of unity are $$z=\operatorname{cis}\left(\frac{2k\pi}{n}\right)$$ for \(k=0,1,\dots,n-1\). That means for \(n\), there are \(n\) roots.

    Read More

    June 2025

    Echidna tricks

    Here are some useful tricks for getting the best out of Echidna.

    Echidna is a fuzzing tool for smart contracts written in Solidity. Solidity smart contracts primarily work on the Ethereum blockchain. Some smart contracts are responsible for managing large amounts of cryptocurrency. With Echidna you can evaluate the security of smart contracts.

    Compared to code scanners and formal methods, Echidna is good at finding transactions that can trigger unintended behavior in smart contracts. Since Echidna is a coverage-guided fuzzer, it’s also good at finding ways to hit the entire code surface of a smart contract.

    Read More

    February 2025

    GDB tricks

    Compile static gdbserver for MIPS with Nix

    I’ve tested the following instructions using GDB 15.2 and NixOS 24.11.

    About gdbserver

    When you run GDB to debug a process, two things happen:

    1. GDB starts or attaches to a process that you want to debug.
    2. GDB provides you a user interface so that you can control and inspect that process.

    The GDB user interface itself typically runs on your own machine. You can start or attach to processes even outside of your own machine. GDB provides a program called gdbserver for this task. gdbserver manages process execution without providing a user interface itself. GDB then attaches to gdbserver over the network using a TCP socket.

    Read More

    January 2025

    Post Exploit Linux Techniques

    These are some tricks that help me solve Hack The Box machines.

    Read More

    January 2025

    Email Infrastructure and SMTP

    Here are interesting things I’ve come across when learning more about email topics

    Read More

    January 2025

    Things about DNS

    This article contains interesting things that I’ve come across while learning more about DNS.

    Read More

    September 2024

    Attic on Nix Darwin

    Here are some snippets of code required to configure and run attic on macOS with nix-darwin, and use it as an optional cache.

    Read More

    August 2024

    Computer Networking Topics

    Here are some keywords I’ve come across when studying computer networking topics.

    Read More

    August 2024

    Information Security Keywords

    Here are some keywords I’ve come across when studying information security topics.

    Read More

    August 2024

    UML Diagrams I have Known and Loved

    Here are my notes on the useful parts of UML. Creating diagrams is an important part of technical documentation.

    Read More

    January 2024

    Nix Tricks

    Here you can find useful Nix code snippets.

    Read More

    November 2023

    Notes on learning Alloy

    Alloy 6 introduces an easier way of expressing temporal logic. With temporal logic you can model possible state transitions and precisely define operations on data structures.

    Read More

    October 2023

    Downloading things from YouTube

    Read More

    October 2023

    How I configure BorgBackup and borgmatic

    This article outlines how I configure BorgBackup and borgmatic on my machines.

    Read More

    September 2023

    Opt-Out Telemetry Shit Show

    Where software you trust spies on you because everyone else does

    Read More