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:
- Specify the attributes in your relation.
- Enter the functional dependencies in your relation.
- Check that the tool parses your functional dependencies correctly.
- Review the calculated superkeys for your relation.
- Identify the candidate keys (minimal superkeys).
Relation attributes
Parsed attributes: {}
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.
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.
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:
- GDB starts or attaches to a process that you want to debug.
- 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.
Post Exploit Linux Techniques
These are some tricks that help me solve Hack The Box machines.
Email Infrastructure and SMTP
Here are interesting things I’ve come across when learning more about email topics
Things about DNS
This article contains interesting things that I’ve come across while learning more about DNS.
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.
Computer Networking Topics
Here are some keywords I’ve come across when studying computer networking topics.
Information Security Keywords
Here are some keywords I’ve come across when studying information security topics.
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.
Nix Tricks
Here you can find useful Nix code snippets.
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.
Downloading things from YouTube
Here are some notes on how to download things from YouTube using yt-dlp (PyPI link).
How I configure BorgBackup and borgmatic
This article outlines how I configure BorgBackup and borgmatic on my machines.