NixNixOSNotesTroubleshooting
diff --git a/pagefind/fragment/en-us_45b0836.pf_fragment b/pagefind/fragment/en-us_45b0836.pf_fragment
new file mode 100644
index 00000000..1e32ad6d
Binary files /dev/null and b/pagefind/fragment/en-us_45b0836.pf_fragment differ
diff --git a/pagefind/fragment/en-us_b4aae26.pf_fragment b/pagefind/fragment/en-us_b4aae26.pf_fragment
deleted file mode 100644
index 5998a554..00000000
Binary files a/pagefind/fragment/en-us_b4aae26.pf_fragment and /dev/null differ
diff --git a/pagefind/index/en-us_432dc71.pf_index b/pagefind/index/en-us_432dc71.pf_index
new file mode 100644
index 00000000..e309fe71
Binary files /dev/null and b/pagefind/index/en-us_432dc71.pf_index differ
diff --git a/pagefind/index/en-us_49a388c.pf_index b/pagefind/index/en-us_49a388c.pf_index
new file mode 100644
index 00000000..33797003
Binary files /dev/null and b/pagefind/index/en-us_49a388c.pf_index differ
diff --git a/pagefind/index/en-us_583c3e3.pf_index b/pagefind/index/en-us_583c3e3.pf_index
deleted file mode 100644
index ec153470..00000000
Binary files a/pagefind/index/en-us_583c3e3.pf_index and /dev/null differ
diff --git a/pagefind/index/en-us_681d237.pf_index b/pagefind/index/en-us_681d237.pf_index
deleted file mode 100644
index 64ab8973..00000000
Binary files a/pagefind/index/en-us_681d237.pf_index and /dev/null differ
diff --git a/pagefind/index/en-us_68c9511.pf_index b/pagefind/index/en-us_68c9511.pf_index
new file mode 100644
index 00000000..df887f20
Binary files /dev/null and b/pagefind/index/en-us_68c9511.pf_index differ
diff --git a/pagefind/index/en-us_94ea874.pf_index b/pagefind/index/en-us_94ea874.pf_index
deleted file mode 100644
index 32410346..00000000
Binary files a/pagefind/index/en-us_94ea874.pf_index and /dev/null differ
diff --git a/pagefind/index/en-us_981287f.pf_index b/pagefind/index/en-us_981287f.pf_index
deleted file mode 100644
index 4d1d251f..00000000
Binary files a/pagefind/index/en-us_981287f.pf_index and /dev/null differ
diff --git a/pagefind/index/en-us_afd81dc.pf_index b/pagefind/index/en-us_afd81dc.pf_index
new file mode 100644
index 00000000..f06359a8
Binary files /dev/null and b/pagefind/index/en-us_afd81dc.pf_index differ
diff --git a/pagefind/index/en-us_e80832b.pf_index b/pagefind/index/en-us_e80832b.pf_index
deleted file mode 100644
index cd6c87b3..00000000
Binary files a/pagefind/index/en-us_e80832b.pf_index and /dev/null differ
diff --git a/pagefind/index/en-us_f6f0e57.pf_index b/pagefind/index/en-us_f6f0e57.pf_index
deleted file mode 100644
index ddd2da3c..00000000
Binary files a/pagefind/index/en-us_f6f0e57.pf_index and /dev/null differ
diff --git a/pagefind/index/en-us_f8dc361.pf_index b/pagefind/index/en-us_f8dc361.pf_index
new file mode 100644
index 00000000..f48badbd
Binary files /dev/null and b/pagefind/index/en-us_f8dc361.pf_index differ
diff --git a/pagefind/index/en-us_fce5781.pf_index b/pagefind/index/en-us_fce5781.pf_index
new file mode 100644
index 00000000..1c361f25
Binary files /dev/null and b/pagefind/index/en-us_fce5781.pf_index differ
diff --git a/pagefind/pagefind-entry.json b/pagefind/pagefind-entry.json
index e7e8c27b..5876003e 100644
--- a/pagefind/pagefind-entry.json
+++ b/pagefind/pagefind-entry.json
@@ -1 +1 @@
-{"version":"1.0.3","languages":{"en-us":{"hash":"en-us_d717ded6be9d8","wasm":"en-us","page_count":58}}}
\ No newline at end of file
+{"version":"1.0.3","languages":{"en-us":{"hash":"en-us_7676eaf26e26a","wasm":"en-us","page_count":58}}}
\ No newline at end of file
diff --git a/pagefind/pagefind.en-us_7676eaf26e26a.pf_meta b/pagefind/pagefind.en-us_7676eaf26e26a.pf_meta
new file mode 100644
index 00000000..04439328
Binary files /dev/null and b/pagefind/pagefind.en-us_7676eaf26e26a.pf_meta differ
diff --git a/pagefind/pagefind.en-us_d717ded6be9d8.pf_meta b/pagefind/pagefind.en-us_d717ded6be9d8.pf_meta
deleted file mode 100644
index 1a7d698c..00000000
Binary files a/pagefind/pagefind.en-us_d717ded6be9d8.pf_meta and /dev/null differ
diff --git a/post/algebraic-python-enums/index.html b/post/algebraic-python-enums/index.html
index e0a2ba95..0cacafc0 100644
--- a/post/algebraic-python-enums/index.html
+++ b/post/algebraic-python-enums/index.html
@@ -1,6 +1,8 @@
Algebraic Python Enums - lavafroth
Algebraic Python Enums
As much as I like rust for its ergonomic features, University has forced me to use Python for the past couple of months, especially because of the hype for machine learning and data science.
One of the biggest things that I missed from the rust experience was enumerable data types whose variants can wrap around different datatypes.
Fortunately, since Python 3.8, creating structs has been a breeze using the dataclass decorator. There’s even support for structural match expressions, like in rust, in recent versions of Python. https://peps.python.org/pep-0636/
To that end, creating the equivalent to Rust’s enum types involves Python union types.
from dataclasses import dataclass
+Fortunately, since Python 3.8, creating structs has been a breeze using the dataclass decorator. There’s even support for structural match expressions, like in rust, in recent versions of Python. https://peps.python.org/pep-0636/'>
Algebraic Python Enums
As much as I like rust for its ergonomic features, University has forced me to use Python for the past couple of months, especially because of the hype for machine learning and data science.
One of the biggest things that I missed from the rust experience was enumerable data types whose variants can wrap around different datatypes.
Fortunately, since Python 3.8, creating structs has been a breeze using the dataclass decorator. There’s even support for structural match expressions, like in rust, in recent versions of Python. https://peps.python.org/pep-0636/
To that end, creating the equivalent to Rust’s enum types involves Python union types.
First draft
# glass_enum.py
+
+from dataclasses import dataclass
@dataclassclassEmpty:
@@ -11,11 +13,76 @@ Fortunately, since Python 3.8, creating structs has been a breeze using the data
drink: str
Glass = Empty | Full
-
This allows us to define functions that ingest the Glass datatype.
defreport_drink(glass: Glass):
+
This allows us to define functions that ingest the Glass datatype.
defreport_drink(glass: Glass) -> str:
match glass:
case Empty:
return"Whoops, looks like you've finished your drink!"case Full(drink):
returnf"Ah a {drink}, what a fine taste!"
-
The only downside to this is that there’s no namespaceing of these union types and as such, methods cannot be defined on the Union of the different variants.
In the case of our concrete example, we can’t add methods to the Glass type.
Since there is no namespacing, we also can’t instantiate variants under the Glass namespace. The following code does not work.
dr_pepper = Glass.Full("Dr. Pepper")
-
This can be partially solved by putting the entire enumerable type inside a module.
So now we can access the variants as glass_enum.Empty and glass_enum.Full.
Even if we use module level namespacing, it’s simply not possible to define any message on a union type in Python.
Since there is no namespacing, we also can’t instantiate variants under the Glass namespace. The following code does not work.
dr_pepper = Glass.Full("Dr. Pepper")
+
This can be partially solved by putting the entire enumerable type inside a module.
+Here we have saved the file as glass_enum.py. From a different module we can
+access the variants as glass_enum.Empty and glass_enum.Full.
That’s all there is to the magic! Now we can simply add this decorator above the previous class declaration
+and the variants like Glass.Empty and Glass.Full would be of the type Glass.
from dataclasses import dataclass
+
+@AlgebraicEnum
+classGlass:
+@dataclass
+classEmpty:
+pass
+
+@dataclass
+classFull:
+ drink: str
+
+defreport_drink(self) -> str:
+match self:
+case Glass.Empty:
+return"Whoops, looks like you've finished your drink!"
+case Glass.Full(drink):
+returnf"Ah a {drink}, what a fine taste!"
+
+defis_empty(self) -> str:
+match self:
+case Glass.Empty:
+returnTrue
+returnFalse
+
As a bonus, the variants will also inherit any methods defined on the Glass type.
Note how the report_drink method accepts a self of type Glass and the match arms
+compare it with Glass.Empty and Glass.Full.
These methods get automatically called via the method resolution order chain due to the inheritance.
Closing thoughts
Those 6 lines are the bare minimum of what you can do right now to have well organized and namespaced algebraic enums in Python
+which are somewhat comparable to those in Rust. These enums also play nicely with static type checkers
+and goto-definitions will also lead you to the correct class defining a variant or the enum itself.
I have packaged this decorator with a couple more typing restrictions into a library at github:lavafroth/ape.
I hope you enjoyed this foray into contorting Python.
NixOS Notes to Self→
\ No newline at end of file
diff --git a/post/index.html b/post/index.html
index 727bf87e..4418468a 100644
--- a/post/index.html
+++ b/post/index.html
@@ -1,4 +1,8 @@
-Posts - lavafroth
NixNixOSNotesTroubleshooting
diff --git a/sitemap.xml b/sitemap.xml
index b271d173..0f7fd743 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-https://lavafroth.is-a.dev/post/algebraic-python-enums/2025-11-02T19:08:46+05:30https://lavafroth.is-a.dev/2025-11-02T19:08:46+05:30https://lavafroth.is-a.dev/post/2025-11-02T19:08:46+05:30https://lavafroth.is-a.dev/skta4v7n8h8/2025-10-31T20:24:35+05:30https://lavafroth.is-a.dev/jfgp3d7rrx0/2025-10-28T16:09:00+05:30https://lavafroth.is-a.dev/ilrlmvakdlx9uwodtocdbg/2025-10-03T16:04:18+05:30https://lavafroth.is-a.dev/tags/nix/2025-09-14T18:31:52+05:30https://lavafroth.is-a.dev/tags/nixos/2025-09-14T18:31:52+05:30https://lavafroth.is-a.dev/post/nixos-notes-to-self/2025-09-14T18:31:52+05:30https://lavafroth.is-a.dev/tags/notes/2025-09-14T18:31:52+05:30https://lavafroth.is-a.dev/tags/2025-09-14T18:31:52+05:30https://lavafroth.is-a.dev/tags/troubleshooting/2025-09-14T18:31:52+05:30https://lavafroth.is-a.dev/privacy/2025-08-30T09:00:14+05:30https://lavafroth.is-a.dev/tags/e/os/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/tags/android/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/tags/custom-rom/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/post/changing-recents-provider-on-eos/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/tags/quickstep/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/tags/quickswitch/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/art/sparkles/2025-07-15T11:52:20+05:30https://lavafroth.is-a.dev/art/2025-07-15T11:52:20+05:30https://lavafroth.is-a.dev/post/detecting-stripped-go-binaries/2025-06-13T08:39:58+05:30https://lavafroth.is-a.dev/tags/go/2025-06-13T08:39:58+05:30https://lavafroth.is-a.dev/tags/reverse-engieering/2025-06-13T08:39:58+05:30https://lavafroth.is-a.dev/tags/til/2025-06-13T08:39:58+05:30https://lavafroth.is-a.dev/tags/ai/2025-04-03T15:56:04+05:30https://lavafroth.is-a.dev/tags/copilot/2025-04-03T15:56:04+05:30https://lavafroth.is-a.dev/tags/llm/2025-04-03T15:56:04+05:30https://lavafroth.is-a.dev/post/do-you-really-need-a-copilot/2025-04-03T15:56:04+05:30https://lavafroth.is-a.dev/tags/rant/2025-04-03T15:56:04+05:30https://lavafroth.is-a.dev/tags/bioinformatics/2025-02-14T09:40:11+05:30https://lavafroth.is-a.dev/tags/dna/2025-02-14T09:40:11+05:30https://lavafroth.is-a.dev/post/in-search-of-the-smallest-dna-compl/2025-02-14T09:40:11+05:30https://lavafroth.is-a.dev/tags/linear-algebra/2025-02-14T09:40:11+05:30https://lavafroth.is-a.dev/tags/remainder-theorem/2025-02-14T09:40:11+05:30https://lavafroth.is-a.dev/tags/3d/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/animation/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/post/project-mana-demo/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/glsl/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/manim/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/threejs/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/webgl/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/bash/2025-01-05T11:55:52+05:30https://lavafroth.is-a.dev/tags/ctf/2025-01-05T11:55:52+05:30https://lavafroth.is-a.dev/tags/picoctf/2025-01-05T11:55:52+05:30https://lavafroth.is-a.dev/post/picoctf-sansalpha-writeup/2025-01-05T11:55:52+05:30https://lavafroth.is-a.dev/tags/python/2025-01-05T11:55:52+05:30https://lavafroth.is-a.dev/tags/sandbox-escape/2025-01-05T11:55:52+05:30https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/2025-01-04T10:04:37+05:30https://lavafroth.is-a.dev/tags/automation/2025-01-04T10:04:37+05:30https://lavafroth.is-a.dev/tags/home-server/2025-01-04T10:04:37+05:30https://lavafroth.is-a.dev/tags/jellyfin/2025-01-04T10:04:37+05:30https://lavafroth.is-a.dev/tags/photoprism/2025-01-04T10:04:37+05:30https://lavafroth.is-a.dev/tags/lanzaboote/2024-12-20T12:26:10+05:30https://lavafroth.is-a.dev/post/nixos-secureboot-shenanigans/2024-12-20T12:26:10+05:30https://lavafroth.is-a.dev/tags/sbctl/2024-12-20T12:26:10+05:30https://lavafroth.is-a.dev/tags/secureboot/2024-12-20T12:26:10+05:30https://lavafroth.is-a.dev/tags/ebnf/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/tags/google-summer-of-code/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/tags/rust/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/tags/swhkd/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/tags/waycrate/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/tags/wayland/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/post/the-gsoc-grand-finale/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/tags/cuda/2024-08-10T08:18:30+05:30https://lavafroth.is-a.dev/tags/machine-learning/2024-08-10T08:18:30+05:30https://lavafroth.is-a.dev/tags/nvidia/2024-08-10T08:18:30+05:30https://lavafroth.is-a.dev/post/cuda-on-nixos-without-sacrificing-ones-sanity/2024-08-10T08:18:30+05:30https://lavafroth.is-a.dev/tags/workflow/2024-08-10T08:18:30+05:30https://lavafroth.is-a.dev/art/amateur-blender-sculpture/2024-08-03T17:50:00+05:30https://lavafroth.is-a.dev/post/how-i-use-swhkd-in-my-workflow/2024-08-01T17:17:31+05:30https://lavafroth.is-a.dev/tags/video-editing/2024-08-01T17:17:31+05:30https://lavafroth.is-a.dev/post/polishing-and-bugfix-week/2024-07-29T13:46:41+05:30https://lavafroth.is-a.dev/post/humans-suck-at-command-sanitization/2024-07-17T07:55:34+05:30https://lavafroth.is-a.dev/post/preventing-infinite-recursions-from-eating-your-lunch/2024-07-04T09:57:01+05:30https://lavafroth.is-a.dev/post/test-driven-development-the-pinnacle-of-engineering/2024-06-24T08:45:49+05:30https://lavafroth.is-a.dev/art/drowning/2024-06-18T09:30:00+05:30https://lavafroth.is-a.dev/art/thiserror/2024-06-18T09:30:00+05:30https://lavafroth.is-a.dev/post/modes-unbinds-and-other-ensembled-parser-patterns/2024-06-10T08:27:06+05:30https://lavafroth.is-a.dev/post/i-solemnly-swear-to-never-buy-a-gaming-laptop-again/2024-06-07T17:01:01+05:30https://lavafroth.is-a.dev/tags/kernel-modules/2024-06-07T17:01:01+05:30https://lavafroth.is-a.dev/tags/laptops/2024-06-07T17:01:01+05:30https://lavafroth.is-a.dev/tags/linux/2024-06-07T17:01:01+05:30https://lavafroth.is-a.dev/post/modeling-more-realistic-keybinds-with-modifiers/2024-06-05T10:26:13+05:30https://lavafroth.is-a.dev/post/edge-cases-you-shall-not-pass/2024-06-03T08:18:19+05:30https://lavafroth.is-a.dev/post/timing-is-key/2024-05-29T21:18:22+05:30https://lavafroth.is-a.dev/post/keep-the-keys-clackin/2024-05-27T08:59:29+05:30https://lavafroth.is-a.dev/post/2-afternoons-2-languages-2-tuis/2024-05-23T18:37:47+05:30https://lavafroth.is-a.dev/tags/terminal/2024-05-23T18:37:47+05:30https://lavafroth.is-a.dev/tags/ui/2024-05-23T18:37:47+05:30https://lavafroth.is-a.dev/tags/youtube/2024-05-23T18:37:47+05:30https://lavafroth.is-a.dev/post/a-sweet-little-config-parser/2024-05-17T07:52:44+05:30https://lavafroth.is-a.dev/post/wayland-tools-rock/2024-05-17T07:52:44+05:30https://lavafroth.is-a.dev/tags/meta/2024-03-10T08:47:08+05:30https://lavafroth.is-a.dev/post/android-phone-for-webcam-nixos/2024-03-10T08:47:08+05:30https://lavafroth.is-a.dev/art/wip-animation/2024-01-19T09:30:00+05:30https://lavafroth.is-a.dev/tags/binary-exploitation/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/ci-exploitation/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/cloud-security/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/cryptography/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/dmarc/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/post/kringlecon-2023-writeup/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/reverse-engineering/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/web/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/post/abstracting-structured-patterns-in-concurrent-programming/2023-12-06T10:58:10+05:30https://lavafroth.is-a.dev/tags/concurrency/2023-12-06T10:58:10+05:30https://lavafroth.is-a.dev/tags/amateursctf/2023-09-07T07:03:27+05:30https://lavafroth.is-a.dev/post/headache-reverse-engineering-amateursctf-2023/2023-09-07T07:03:27+05:30https://lavafroth.is-a.dev/post/compact-xor-crypto-challenge-amateursctf-2023/2023-08-24T18:05:59+05:30https://lavafroth.is-a.dev/post/volcano-reverse-engineering-amateursctf-2023/2023-07-21T18:29:59+05:30https://lavafroth.is-a.dev/tags/cookies/2023-07-19T07:53:17+05:30https://lavafroth.is-a.dev/post/wait-an-eternity-web-challenge-amateursctf-2023/2023-07-19T07:53:17+05:30https://lavafroth.is-a.dev/post/i-switched-to-nixos/2023-07-08T09:29:34+05:30https://lavafroth.is-a.dev/post/picoctf-binary-exploitation-twosum/2023-04-10T08:44:28+05:30https://lavafroth.is-a.dev/tags/java/2023-03-18T07:10:17+05:30https://lavafroth.is-a.dev/post/picoctf-web-java-code-analysis/2023-03-18T07:10:17+05:30https://lavafroth.is-a.dev/tags/jwt/2023-03-18T07:10:17+05:30https://lavafroth.is-a.dev/tags/image-reconstruction/2023-03-03T09:47:54+05:30https://lavafroth.is-a.dev/post/picoctf-web-java-script-kiddie-2/2023-03-03T09:47:54+05:30https://lavafroth.is-a.dev/tags/javascript/2023-03-03T09:47:54+05:30https://lavafroth.is-a.dev/post/picoctf-web-some-assembly-required-3/2023-02-09T16:39:08+05:30https://lavafroth.is-a.dev/tags/webassembly/2023-02-09T16:39:08+05:30https://lavafroth.is-a.dev/post/kringlecon-2022-writeup/2023-01-09T10:36:35+05:30https://lavafroth.is-a.dev/tags/powershell/2023-01-09T10:36:35+05:30https://lavafroth.is-a.dev/tags/wireshark/2023-01-09T10:36:35+05:30https://lavafroth.is-a.dev/post/picoctf-cryptography-pixelated/2022-11-22T09:25:20+05:30https://lavafroth.is-a.dev/tags/visual-cryptography/2022-11-22T09:25:20+05:30https://lavafroth.is-a.dev/tags/ast/2022-08-19T10:04:36+05:30https://lavafroth.is-a.dev/tags/google-ctf/2022-08-19T10:04:36+05:30https://lavafroth.is-a.dev/post/google-ctf-2022-treebox/2022-08-19T10:04:36+05:30https://lavafroth.is-a.dev/tags/elf/2022-08-19T09:57:34+05:30https://lavafroth.is-a.dev/post/r0-i-saw-a-little-elf/2022-08-19T09:57:34+05:30https://lavafroth.is-a.dev/tags/ringzer0/2022-08-19T09:57:34+05:30https://lavafroth.is-a.dev/tags/web-parsing/2022-08-19T09:57:34+05:30https://lavafroth.is-a.dev/post/r0-hash-me-reloaded/2022-08-19T09:57:15+05:30https://lavafroth.is-a.dev/post/r0-hash-me-please/2022-08-19T09:57:00+05:30https://lavafroth.is-a.dev/tags/nushell/2022-08-02T09:26:51+05:30https://lavafroth.is-a.dev/post/oh-my-god-they-killed-kenny/2022-08-02T09:26:51+05:30https://lavafroth.is-a.dev/tags/south-park/2022-08-02T09:26:51+05:30https://lavafroth.is-a.dev/tags/streaming/2022-08-02T09:26:51+05:30https://lavafroth.is-a.dev/post/ringzer0ctf-bash-jail3/2022-07-24T12:29:56+05:30https://lavafroth.is-a.dev/post/ringzer0ctf-bash-jail2/2022-07-24T12:28:56+05:30https://lavafroth.is-a.dev/post/ringzer0ctf-bash-jail1/2022-07-24T12:27:56+05:30https://lavafroth.is-a.dev/about/2022-07-23T19:11:10+05:30https://lavafroth.is-a.dev/art/tyler-joseph-portrait/2022-07-23T19:07:32+05:30https://lavafroth.is-a.dev/art/shes-a-rebel/2022-04-17T17:01:44+05:30https://lavafroth.is-a.dev/tags/forensics/2022-03-18T07:10:17+05:30https://lavafroth.is-a.dev/post/picoctf-forensics-operation-oni-operation-orchid/2022-03-18T07:10:17+05:30https://lavafroth.is-a.dev/tags/the-sleuth-kit/2022-03-18T07:10:17+05:30https://lavafroth.is-a.dev/tags/authentication-bypass/2022-02-22T14:49:34+05:30https://lavafroth.is-a.dev/post/picoctf-web-challenge-jauth/2022-02-22T14:49:34+05:30https://lavafroth.is-a.dev/post/liberating-14gib-of-space/2022-02-21T13:15:26+05:30https://lavafroth.is-a.dev/tags/windows/2022-02-21T13:15:26+05:30https://lavafroth.is-a.dev/tags/jinja2/2022-02-21T09:24:30+05:30https://lavafroth.is-a.dev/post/picoctf-web-challenge-notepad/2022-02-21T09:24:30+05:30https://lavafroth.is-a.dev/tags/path-traversal/2022-02-21T09:24:30+05:30https://lavafroth.is-a.dev/post/gadgeting-in-python-jails/2021-12-09T09:52:29+05:30https://lavafroth.is-a.dev/project_mana/
\ No newline at end of file
+https://lavafroth.is-a.dev/tags/algebraic-data-types/2025-11-02T19:08:46+05:30https://lavafroth.is-a.dev/post/algebraic-python-enums/2025-11-02T19:08:46+05:30https://lavafroth.is-a.dev/tags/decorators/2025-11-02T19:08:46+05:30https://lavafroth.is-a.dev/2025-11-02T19:08:46+05:30https://lavafroth.is-a.dev/post/2025-11-02T19:08:46+05:30https://lavafroth.is-a.dev/tags/python/2025-11-02T19:08:46+05:30https://lavafroth.is-a.dev/tags/rust/2025-11-02T19:08:46+05:30https://lavafroth.is-a.dev/tags/2025-11-02T19:08:46+05:30https://lavafroth.is-a.dev/skta4v7n8h8/2025-10-31T20:24:35+05:30https://lavafroth.is-a.dev/jfgp3d7rrx0/2025-10-28T16:09:00+05:30https://lavafroth.is-a.dev/ilrlmvakdlx9uwodtocdbg/2025-10-03T16:04:18+05:30https://lavafroth.is-a.dev/tags/nix/2025-09-14T18:31:52+05:30https://lavafroth.is-a.dev/tags/nixos/2025-09-14T18:31:52+05:30https://lavafroth.is-a.dev/post/nixos-notes-to-self/2025-09-14T18:31:52+05:30https://lavafroth.is-a.dev/tags/notes/2025-09-14T18:31:52+05:30https://lavafroth.is-a.dev/tags/troubleshooting/2025-09-14T18:31:52+05:30https://lavafroth.is-a.dev/privacy/2025-08-30T09:00:14+05:30https://lavafroth.is-a.dev/tags/e/os/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/tags/android/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/tags/custom-rom/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/post/changing-recents-provider-on-eos/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/tags/quickstep/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/tags/quickswitch/2025-08-20T09:55:43+05:30https://lavafroth.is-a.dev/art/sparkles/2025-07-15T11:52:20+05:30https://lavafroth.is-a.dev/art/2025-07-15T11:52:20+05:30https://lavafroth.is-a.dev/post/detecting-stripped-go-binaries/2025-06-13T08:39:58+05:30https://lavafroth.is-a.dev/tags/go/2025-06-13T08:39:58+05:30https://lavafroth.is-a.dev/tags/reverse-engieering/2025-06-13T08:39:58+05:30https://lavafroth.is-a.dev/tags/til/2025-06-13T08:39:58+05:30https://lavafroth.is-a.dev/tags/ai/2025-04-03T15:56:04+05:30https://lavafroth.is-a.dev/tags/copilot/2025-04-03T15:56:04+05:30https://lavafroth.is-a.dev/tags/llm/2025-04-03T15:56:04+05:30https://lavafroth.is-a.dev/post/do-you-really-need-a-copilot/2025-04-03T15:56:04+05:30https://lavafroth.is-a.dev/tags/rant/2025-04-03T15:56:04+05:30https://lavafroth.is-a.dev/tags/bioinformatics/2025-02-14T09:40:11+05:30https://lavafroth.is-a.dev/tags/dna/2025-02-14T09:40:11+05:30https://lavafroth.is-a.dev/post/in-search-of-the-smallest-dna-compl/2025-02-14T09:40:11+05:30https://lavafroth.is-a.dev/tags/linear-algebra/2025-02-14T09:40:11+05:30https://lavafroth.is-a.dev/tags/remainder-theorem/2025-02-14T09:40:11+05:30https://lavafroth.is-a.dev/tags/3d/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/animation/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/post/project-mana-demo/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/glsl/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/manim/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/threejs/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/webgl/2025-01-20T19:41:51+05:30https://lavafroth.is-a.dev/tags/bash/2025-01-05T11:55:52+05:30https://lavafroth.is-a.dev/tags/ctf/2025-01-05T11:55:52+05:30https://lavafroth.is-a.dev/tags/picoctf/2025-01-05T11:55:52+05:30https://lavafroth.is-a.dev/post/picoctf-sansalpha-writeup/2025-01-05T11:55:52+05:30https://lavafroth.is-a.dev/tags/sandbox-escape/2025-01-05T11:55:52+05:30https://lavafroth.is-a.dev/post/a-tale-of-a-frugal-home-server/2025-01-04T10:04:37+05:30https://lavafroth.is-a.dev/tags/automation/2025-01-04T10:04:37+05:30https://lavafroth.is-a.dev/tags/home-server/2025-01-04T10:04:37+05:30https://lavafroth.is-a.dev/tags/jellyfin/2025-01-04T10:04:37+05:30https://lavafroth.is-a.dev/tags/photoprism/2025-01-04T10:04:37+05:30https://lavafroth.is-a.dev/tags/lanzaboote/2024-12-20T12:26:10+05:30https://lavafroth.is-a.dev/post/nixos-secureboot-shenanigans/2024-12-20T12:26:10+05:30https://lavafroth.is-a.dev/tags/sbctl/2024-12-20T12:26:10+05:30https://lavafroth.is-a.dev/tags/secureboot/2024-12-20T12:26:10+05:30https://lavafroth.is-a.dev/tags/ebnf/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/tags/google-summer-of-code/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/tags/swhkd/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/tags/waycrate/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/tags/wayland/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/post/the-gsoc-grand-finale/2024-08-24T10:28:50+05:30https://lavafroth.is-a.dev/tags/cuda/2024-08-10T08:18:30+05:30https://lavafroth.is-a.dev/tags/machine-learning/2024-08-10T08:18:30+05:30https://lavafroth.is-a.dev/tags/nvidia/2024-08-10T08:18:30+05:30https://lavafroth.is-a.dev/post/cuda-on-nixos-without-sacrificing-ones-sanity/2024-08-10T08:18:30+05:30https://lavafroth.is-a.dev/tags/workflow/2024-08-10T08:18:30+05:30https://lavafroth.is-a.dev/art/amateur-blender-sculpture/2024-08-03T17:50:00+05:30https://lavafroth.is-a.dev/post/how-i-use-swhkd-in-my-workflow/2024-08-01T17:17:31+05:30https://lavafroth.is-a.dev/tags/video-editing/2024-08-01T17:17:31+05:30https://lavafroth.is-a.dev/post/polishing-and-bugfix-week/2024-07-29T13:46:41+05:30https://lavafroth.is-a.dev/post/humans-suck-at-command-sanitization/2024-07-17T07:55:34+05:30https://lavafroth.is-a.dev/post/preventing-infinite-recursions-from-eating-your-lunch/2024-07-04T09:57:01+05:30https://lavafroth.is-a.dev/post/test-driven-development-the-pinnacle-of-engineering/2024-06-24T08:45:49+05:30https://lavafroth.is-a.dev/art/drowning/2024-06-18T09:30:00+05:30https://lavafroth.is-a.dev/art/thiserror/2024-06-18T09:30:00+05:30https://lavafroth.is-a.dev/post/modes-unbinds-and-other-ensembled-parser-patterns/2024-06-10T08:27:06+05:30https://lavafroth.is-a.dev/post/i-solemnly-swear-to-never-buy-a-gaming-laptop-again/2024-06-07T17:01:01+05:30https://lavafroth.is-a.dev/tags/kernel-modules/2024-06-07T17:01:01+05:30https://lavafroth.is-a.dev/tags/laptops/2024-06-07T17:01:01+05:30https://lavafroth.is-a.dev/tags/linux/2024-06-07T17:01:01+05:30https://lavafroth.is-a.dev/post/modeling-more-realistic-keybinds-with-modifiers/2024-06-05T10:26:13+05:30https://lavafroth.is-a.dev/post/edge-cases-you-shall-not-pass/2024-06-03T08:18:19+05:30https://lavafroth.is-a.dev/post/timing-is-key/2024-05-29T21:18:22+05:30https://lavafroth.is-a.dev/post/keep-the-keys-clackin/2024-05-27T08:59:29+05:30https://lavafroth.is-a.dev/post/2-afternoons-2-languages-2-tuis/2024-05-23T18:37:47+05:30https://lavafroth.is-a.dev/tags/terminal/2024-05-23T18:37:47+05:30https://lavafroth.is-a.dev/tags/ui/2024-05-23T18:37:47+05:30https://lavafroth.is-a.dev/tags/youtube/2024-05-23T18:37:47+05:30https://lavafroth.is-a.dev/post/a-sweet-little-config-parser/2024-05-17T07:52:44+05:30https://lavafroth.is-a.dev/post/wayland-tools-rock/2024-05-17T07:52:44+05:30https://lavafroth.is-a.dev/tags/meta/2024-03-10T08:47:08+05:30https://lavafroth.is-a.dev/post/android-phone-for-webcam-nixos/2024-03-10T08:47:08+05:30https://lavafroth.is-a.dev/art/wip-animation/2024-01-19T09:30:00+05:30https://lavafroth.is-a.dev/tags/binary-exploitation/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/ci-exploitation/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/cloud-security/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/cryptography/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/dmarc/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/post/kringlecon-2023-writeup/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/reverse-engineering/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/tags/web/2024-01-10T19:51:32+05:30https://lavafroth.is-a.dev/post/abstracting-structured-patterns-in-concurrent-programming/2023-12-06T10:58:10+05:30https://lavafroth.is-a.dev/tags/concurrency/2023-12-06T10:58:10+05:30https://lavafroth.is-a.dev/tags/amateursctf/2023-09-07T07:03:27+05:30https://lavafroth.is-a.dev/post/headache-reverse-engineering-amateursctf-2023/2023-09-07T07:03:27+05:30https://lavafroth.is-a.dev/post/compact-xor-crypto-challenge-amateursctf-2023/2023-08-24T18:05:59+05:30https://lavafroth.is-a.dev/post/volcano-reverse-engineering-amateursctf-2023/2023-07-21T18:29:59+05:30https://lavafroth.is-a.dev/tags/cookies/2023-07-19T07:53:17+05:30https://lavafroth.is-a.dev/post/wait-an-eternity-web-challenge-amateursctf-2023/2023-07-19T07:53:17+05:30https://lavafroth.is-a.dev/post/i-switched-to-nixos/2023-07-08T09:29:34+05:30https://lavafroth.is-a.dev/post/picoctf-binary-exploitation-twosum/2023-04-10T08:44:28+05:30https://lavafroth.is-a.dev/tags/java/2023-03-18T07:10:17+05:30https://lavafroth.is-a.dev/post/picoctf-web-java-code-analysis/2023-03-18T07:10:17+05:30https://lavafroth.is-a.dev/tags/jwt/2023-03-18T07:10:17+05:30https://lavafroth.is-a.dev/tags/image-reconstruction/2023-03-03T09:47:54+05:30https://lavafroth.is-a.dev/post/picoctf-web-java-script-kiddie-2/2023-03-03T09:47:54+05:30https://lavafroth.is-a.dev/tags/javascript/2023-03-03T09:47:54+05:30https://lavafroth.is-a.dev/post/picoctf-web-some-assembly-required-3/2023-02-09T16:39:08+05:30https://lavafroth.is-a.dev/tags/webassembly/2023-02-09T16:39:08+05:30https://lavafroth.is-a.dev/post/kringlecon-2022-writeup/2023-01-09T10:36:35+05:30https://lavafroth.is-a.dev/tags/powershell/2023-01-09T10:36:35+05:30https://lavafroth.is-a.dev/tags/wireshark/2023-01-09T10:36:35+05:30https://lavafroth.is-a.dev/post/picoctf-cryptography-pixelated/2022-11-22T09:25:20+05:30https://lavafroth.is-a.dev/tags/visual-cryptography/2022-11-22T09:25:20+05:30https://lavafroth.is-a.dev/tags/ast/2022-08-19T10:04:36+05:30https://lavafroth.is-a.dev/tags/google-ctf/2022-08-19T10:04:36+05:30https://lavafroth.is-a.dev/post/google-ctf-2022-treebox/2022-08-19T10:04:36+05:30https://lavafroth.is-a.dev/tags/elf/2022-08-19T09:57:34+05:30https://lavafroth.is-a.dev/post/r0-i-saw-a-little-elf/2022-08-19T09:57:34+05:30https://lavafroth.is-a.dev/tags/ringzer0/2022-08-19T09:57:34+05:30https://lavafroth.is-a.dev/tags/web-parsing/2022-08-19T09:57:34+05:30https://lavafroth.is-a.dev/post/r0-hash-me-reloaded/2022-08-19T09:57:15+05:30https://lavafroth.is-a.dev/post/r0-hash-me-please/2022-08-19T09:57:00+05:30https://lavafroth.is-a.dev/tags/nushell/2022-08-02T09:26:51+05:30https://lavafroth.is-a.dev/post/oh-my-god-they-killed-kenny/2022-08-02T09:26:51+05:30https://lavafroth.is-a.dev/tags/south-park/2022-08-02T09:26:51+05:30https://lavafroth.is-a.dev/tags/streaming/2022-08-02T09:26:51+05:30https://lavafroth.is-a.dev/post/ringzer0ctf-bash-jail3/2022-07-24T12:29:56+05:30https://lavafroth.is-a.dev/post/ringzer0ctf-bash-jail2/2022-07-24T12:28:56+05:30https://lavafroth.is-a.dev/post/ringzer0ctf-bash-jail1/2022-07-24T12:27:56+05:30https://lavafroth.is-a.dev/about/2022-07-23T19:11:10+05:30https://lavafroth.is-a.dev/art/tyler-joseph-portrait/2022-07-23T19:07:32+05:30https://lavafroth.is-a.dev/art/shes-a-rebel/2022-04-17T17:01:44+05:30https://lavafroth.is-a.dev/tags/forensics/2022-03-18T07:10:17+05:30https://lavafroth.is-a.dev/post/picoctf-forensics-operation-oni-operation-orchid/2022-03-18T07:10:17+05:30https://lavafroth.is-a.dev/tags/the-sleuth-kit/2022-03-18T07:10:17+05:30https://lavafroth.is-a.dev/tags/authentication-bypass/2022-02-22T14:49:34+05:30https://lavafroth.is-a.dev/post/picoctf-web-challenge-jauth/2022-02-22T14:49:34+05:30https://lavafroth.is-a.dev/post/liberating-14gib-of-space/2022-02-21T13:15:26+05:30https://lavafroth.is-a.dev/tags/windows/2022-02-21T13:15:26+05:30https://lavafroth.is-a.dev/tags/jinja2/2022-02-21T09:24:30+05:30https://lavafroth.is-a.dev/post/picoctf-web-challenge-notepad/2022-02-21T09:24:30+05:30https://lavafroth.is-a.dev/tags/path-traversal/2022-02-21T09:24:30+05:30https://lavafroth.is-a.dev/post/gadgeting-in-python-jails/2021-12-09T09:52:29+05:30https://lavafroth.is-a.dev/project_mana/
\ No newline at end of file
diff --git a/tags/algebraic-data-types/index.html b/tags/algebraic-data-types/index.html
new file mode 100644
index 00000000..5c620dbe
--- /dev/null
+++ b/tags/algebraic-data-types/index.html
@@ -0,0 +1,5 @@
+Algebraic Data Types - lavafroth
Python
+Decorators
+Rust
+Algebraic Data Types
+
\ No newline at end of file
diff --git a/tags/algebraic-data-types/index.xml b/tags/algebraic-data-types/index.xml
new file mode 100644
index 00000000..b44de523
--- /dev/null
+++ b/tags/algebraic-data-types/index.xml
@@ -0,0 +1,3 @@
+Algebraic Data Types on lavafrothhttps://lavafroth.is-a.dev/tags/algebraic-data-types/Recent content in Algebraic Data Types on lavafrothHugoen-usSun, 02 Nov 2025 19:08:46 +0530Algebraic Python Enumshttps://lavafroth.is-a.dev/post/algebraic-python-enums/Sun, 02 Nov 2025 19:08:46 +0530https://lavafroth.is-a.dev/post/algebraic-python-enums/<p>As much as I like rust for its ergonomic features, University has forced me to use Python for the past couple of months, especially because of the hype for machine learning and data science.</p>
+<p>One of the biggest things that I missed from the rust experience was enumerable data types whose variants can wrap around different datatypes.</p>
+<p>Fortunately, since Python 3.8, creating structs has been a breeze using the dataclass decorator. There’s even support for structural match expressions, like in rust, in recent versions of Python. <a href="https://peps.python.org/pep-0636/">https://peps.python.org/pep-0636/</a></p>
\ No newline at end of file
diff --git a/tags/algebraic-data-types/page/1/index.html b/tags/algebraic-data-types/page/1/index.html
new file mode 100644
index 00000000..bde6c9b4
--- /dev/null
+++ b/tags/algebraic-data-types/page/1/index.html
@@ -0,0 +1 @@
+https://lavafroth.is-a.dev/tags/algebraic-data-types/
\ No newline at end of file
diff --git a/tags/decorators/index.html b/tags/decorators/index.html
new file mode 100644
index 00000000..c676fe2e
--- /dev/null
+++ b/tags/decorators/index.html
@@ -0,0 +1,5 @@
+Decorators - lavafroth
Python
+Decorators
+Rust
+Algebraic Data Types
+
\ No newline at end of file
diff --git a/tags/decorators/index.xml b/tags/decorators/index.xml
new file mode 100644
index 00000000..864cca3e
--- /dev/null
+++ b/tags/decorators/index.xml
@@ -0,0 +1,3 @@
+Decorators on lavafrothhttps://lavafroth.is-a.dev/tags/decorators/Recent content in Decorators on lavafrothHugoen-usSun, 02 Nov 2025 19:08:46 +0530Algebraic Python Enumshttps://lavafroth.is-a.dev/post/algebraic-python-enums/Sun, 02 Nov 2025 19:08:46 +0530https://lavafroth.is-a.dev/post/algebraic-python-enums/<p>As much as I like rust for its ergonomic features, University has forced me to use Python for the past couple of months, especially because of the hype for machine learning and data science.</p>
+<p>One of the biggest things that I missed from the rust experience was enumerable data types whose variants can wrap around different datatypes.</p>
+<p>Fortunately, since Python 3.8, creating structs has been a breeze using the dataclass decorator. There’s even support for structural match expressions, like in rust, in recent versions of Python. <a href="https://peps.python.org/pep-0636/">https://peps.python.org/pep-0636/</a></p>
\ No newline at end of file
diff --git a/tags/decorators/page/1/index.html b/tags/decorators/page/1/index.html
new file mode 100644
index 00000000..9bef7b96
--- /dev/null
+++ b/tags/decorators/page/1/index.html
@@ -0,0 +1 @@
+https://lavafroth.is-a.dev/tags/decorators/
\ No newline at end of file
diff --git a/tags/index.xml b/tags/index.xml
index 39f27f8a..5708182f 100644
--- a/tags/index.xml
+++ b/tags/index.xml
@@ -1 +1 @@
-Tags on lavafrothhttps://lavafroth.is-a.dev/tags/Recent content in Tags on lavafrothHugoen-usSun, 14 Sep 2025 18:31:52 +0530Nixhttps://lavafroth.is-a.dev/tags/nix/Sun, 14 Sep 2025 18:31:52 +0530https://lavafroth.is-a.dev/tags/nix/NixOShttps://lavafroth.is-a.dev/tags/nixos/Sun, 14 Sep 2025 18:31:52 +0530https://lavafroth.is-a.dev/tags/nixos/Noteshttps://lavafroth.is-a.dev/tags/notes/Sun, 14 Sep 2025 18:31:52 +0530https://lavafroth.is-a.dev/tags/notes/Troubleshootinghttps://lavafroth.is-a.dev/tags/troubleshooting/Sun, 14 Sep 2025 18:31:52 +0530https://lavafroth.is-a.dev/tags/troubleshooting//E/OShttps://lavafroth.is-a.dev/tags/e/os/Wed, 20 Aug 2025 09:55:43 +0530https://lavafroth.is-a.dev/tags/e/os/Androidhttps://lavafroth.is-a.dev/tags/android/Wed, 20 Aug 2025 09:55:43 +0530https://lavafroth.is-a.dev/tags/android/Custom ROMhttps://lavafroth.is-a.dev/tags/custom-rom/Wed, 20 Aug 2025 09:55:43 +0530https://lavafroth.is-a.dev/tags/custom-rom/QuickStephttps://lavafroth.is-a.dev/tags/quickstep/Wed, 20 Aug 2025 09:55:43 +0530https://lavafroth.is-a.dev/tags/quickstep/QuickSwitchhttps://lavafroth.is-a.dev/tags/quickswitch/Wed, 20 Aug 2025 09:55:43 +0530https://lavafroth.is-a.dev/tags/quickswitch/Gohttps://lavafroth.is-a.dev/tags/go/Fri, 13 Jun 2025 08:39:58 +0530https://lavafroth.is-a.dev/tags/go/Reverse Engieeringhttps://lavafroth.is-a.dev/tags/reverse-engieering/Fri, 13 Jun 2025 08:39:58 +0530https://lavafroth.is-a.dev/tags/reverse-engieering/TILhttps://lavafroth.is-a.dev/tags/til/Fri, 13 Jun 2025 08:39:58 +0530https://lavafroth.is-a.dev/tags/til/AIhttps://lavafroth.is-a.dev/tags/ai/Thu, 03 Apr 2025 15:56:04 +0530https://lavafroth.is-a.dev/tags/ai/Copilothttps://lavafroth.is-a.dev/tags/copilot/Thu, 03 Apr 2025 15:56:04 +0530https://lavafroth.is-a.dev/tags/copilot/LLMhttps://lavafroth.is-a.dev/tags/llm/Thu, 03 Apr 2025 15:56:04 +0530https://lavafroth.is-a.dev/tags/llm/Ranthttps://lavafroth.is-a.dev/tags/rant/Thu, 03 Apr 2025 15:56:04 +0530https://lavafroth.is-a.dev/tags/rant/Bioinformaticshttps://lavafroth.is-a.dev/tags/bioinformatics/Fri, 14 Feb 2025 09:40:11 +0530https://lavafroth.is-a.dev/tags/bioinformatics/DNAhttps://lavafroth.is-a.dev/tags/dna/Fri, 14 Feb 2025 09:40:11 +0530https://lavafroth.is-a.dev/tags/dna/Linear Algebrahttps://lavafroth.is-a.dev/tags/linear-algebra/Fri, 14 Feb 2025 09:40:11 +0530https://lavafroth.is-a.dev/tags/linear-algebra/Remainder Theoremhttps://lavafroth.is-a.dev/tags/remainder-theorem/Fri, 14 Feb 2025 09:40:11 +0530https://lavafroth.is-a.dev/tags/remainder-theorem/3Dhttps://lavafroth.is-a.dev/tags/3d/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/3d/Animationhttps://lavafroth.is-a.dev/tags/animation/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/animation/GLSLhttps://lavafroth.is-a.dev/tags/glsl/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/glsl/Manimhttps://lavafroth.is-a.dev/tags/manim/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/manim/ThreeJShttps://lavafroth.is-a.dev/tags/threejs/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/threejs/WebGLhttps://lavafroth.is-a.dev/tags/webgl/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/webgl/Bashhttps://lavafroth.is-a.dev/tags/bash/Sun, 05 Jan 2025 11:55:52 +0530https://lavafroth.is-a.dev/tags/bash/CTFhttps://lavafroth.is-a.dev/tags/ctf/Sun, 05 Jan 2025 11:55:52 +0530https://lavafroth.is-a.dev/tags/ctf/PicoCTFhttps://lavafroth.is-a.dev/tags/picoctf/Sun, 05 Jan 2025 11:55:52 +0530https://lavafroth.is-a.dev/tags/picoctf/Pythonhttps://lavafroth.is-a.dev/tags/python/Sun, 05 Jan 2025 11:55:52 +0530https://lavafroth.is-a.dev/tags/python/Sandbox Escapehttps://lavafroth.is-a.dev/tags/sandbox-escape/Sun, 05 Jan 2025 11:55:52 +0530https://lavafroth.is-a.dev/tags/sandbox-escape/Automationhttps://lavafroth.is-a.dev/tags/automation/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/tags/automation/Home Serverhttps://lavafroth.is-a.dev/tags/home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/tags/home-server/Jellyfinhttps://lavafroth.is-a.dev/tags/jellyfin/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/tags/jellyfin/Photoprismhttps://lavafroth.is-a.dev/tags/photoprism/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/tags/photoprism/Lanzabootehttps://lavafroth.is-a.dev/tags/lanzaboote/Fri, 20 Dec 2024 12:26:10 +0530https://lavafroth.is-a.dev/tags/lanzaboote/Sbctlhttps://lavafroth.is-a.dev/tags/sbctl/Fri, 20 Dec 2024 12:26:10 +0530https://lavafroth.is-a.dev/tags/sbctl/Secureboothttps://lavafroth.is-a.dev/tags/secureboot/Fri, 20 Dec 2024 12:26:10 +0530https://lavafroth.is-a.dev/tags/secureboot/EBNFhttps://lavafroth.is-a.dev/tags/ebnf/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/tags/ebnf/Google Summer of Codehttps://lavafroth.is-a.dev/tags/google-summer-of-code/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/tags/google-summer-of-code/Rusthttps://lavafroth.is-a.dev/tags/rust/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/tags/rust/SWHKDhttps://lavafroth.is-a.dev/tags/swhkd/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/tags/swhkd/Waycratehttps://lavafroth.is-a.dev/tags/waycrate/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/tags/waycrate/Waylandhttps://lavafroth.is-a.dev/tags/wayland/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/tags/wayland/CUDAhttps://lavafroth.is-a.dev/tags/cuda/Sat, 10 Aug 2024 08:18:30 +0530https://lavafroth.is-a.dev/tags/cuda/Machine Learninghttps://lavafroth.is-a.dev/tags/machine-learning/Sat, 10 Aug 2024 08:18:30 +0530https://lavafroth.is-a.dev/tags/machine-learning/NVIDIAhttps://lavafroth.is-a.dev/tags/nvidia/Sat, 10 Aug 2024 08:18:30 +0530https://lavafroth.is-a.dev/tags/nvidia/Workflowhttps://lavafroth.is-a.dev/tags/workflow/Sat, 10 Aug 2024 08:18:30 +0530https://lavafroth.is-a.dev/tags/workflow/Video Editinghttps://lavafroth.is-a.dev/tags/video-editing/Thu, 01 Aug 2024 17:17:31 +0530https://lavafroth.is-a.dev/tags/video-editing/Kernel Moduleshttps://lavafroth.is-a.dev/tags/kernel-modules/Fri, 07 Jun 2024 17:01:01 +0530https://lavafroth.is-a.dev/tags/kernel-modules/Laptopshttps://lavafroth.is-a.dev/tags/laptops/Fri, 07 Jun 2024 17:01:01 +0530https://lavafroth.is-a.dev/tags/laptops/Linuxhttps://lavafroth.is-a.dev/tags/linux/Fri, 07 Jun 2024 17:01:01 +0530https://lavafroth.is-a.dev/tags/linux/Terminalhttps://lavafroth.is-a.dev/tags/terminal/Thu, 23 May 2024 18:37:47 +0530https://lavafroth.is-a.dev/tags/terminal/UIhttps://lavafroth.is-a.dev/tags/ui/Thu, 23 May 2024 18:37:47 +0530https://lavafroth.is-a.dev/tags/ui/YouTubehttps://lavafroth.is-a.dev/tags/youtube/Thu, 23 May 2024 18:37:47 +0530https://lavafroth.is-a.dev/tags/youtube/Metahttps://lavafroth.is-a.dev/tags/meta/Sun, 10 Mar 2024 08:47:08 +0530https://lavafroth.is-a.dev/tags/meta/Binary Exploitationhttps://lavafroth.is-a.dev/tags/binary-exploitation/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/binary-exploitation/CI Exploitationhttps://lavafroth.is-a.dev/tags/ci-exploitation/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/ci-exploitation/Cloud Securityhttps://lavafroth.is-a.dev/tags/cloud-security/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/cloud-security/Cryptographyhttps://lavafroth.is-a.dev/tags/cryptography/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/cryptography/DMARChttps://lavafroth.is-a.dev/tags/dmarc/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/dmarc/Reverse Engineeringhttps://lavafroth.is-a.dev/tags/reverse-engineering/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/reverse-engineering/Webhttps://lavafroth.is-a.dev/tags/web/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/web/Concurrencyhttps://lavafroth.is-a.dev/tags/concurrency/Wed, 06 Dec 2023 10:58:10 +0530https://lavafroth.is-a.dev/tags/concurrency/AmateursCTFhttps://lavafroth.is-a.dev/tags/amateursctf/Thu, 07 Sep 2023 07:03:27 +0530https://lavafroth.is-a.dev/tags/amateursctf/Cookieshttps://lavafroth.is-a.dev/tags/cookies/Wed, 19 Jul 2023 07:53:17 +0530https://lavafroth.is-a.dev/tags/cookies/Javahttps://lavafroth.is-a.dev/tags/java/Sat, 18 Mar 2023 07:10:17 +0530https://lavafroth.is-a.dev/tags/java/JWThttps://lavafroth.is-a.dev/tags/jwt/Sat, 18 Mar 2023 07:10:17 +0530https://lavafroth.is-a.dev/tags/jwt/Image Reconstructionhttps://lavafroth.is-a.dev/tags/image-reconstruction/Fri, 03 Mar 2023 09:47:54 +0530https://lavafroth.is-a.dev/tags/image-reconstruction/Javascripthttps://lavafroth.is-a.dev/tags/javascript/Fri, 03 Mar 2023 09:47:54 +0530https://lavafroth.is-a.dev/tags/javascript/WebAssemblyhttps://lavafroth.is-a.dev/tags/webassembly/Thu, 09 Feb 2023 16:39:08 +0530https://lavafroth.is-a.dev/tags/webassembly/Powershellhttps://lavafroth.is-a.dev/tags/powershell/Mon, 09 Jan 2023 10:36:35 +0530https://lavafroth.is-a.dev/tags/powershell/Wiresharkhttps://lavafroth.is-a.dev/tags/wireshark/Mon, 09 Jan 2023 10:36:35 +0530https://lavafroth.is-a.dev/tags/wireshark/Visual Cryptographyhttps://lavafroth.is-a.dev/tags/visual-cryptography/Tue, 22 Nov 2022 09:25:20 +0530https://lavafroth.is-a.dev/tags/visual-cryptography/ASThttps://lavafroth.is-a.dev/tags/ast/Fri, 19 Aug 2022 10:04:36 +0530https://lavafroth.is-a.dev/tags/ast/Google CTFhttps://lavafroth.is-a.dev/tags/google-ctf/Fri, 19 Aug 2022 10:04:36 +0530https://lavafroth.is-a.dev/tags/google-ctf/ELFhttps://lavafroth.is-a.dev/tags/elf/Fri, 19 Aug 2022 09:57:34 +0530https://lavafroth.is-a.dev/tags/elf/RingZer0https://lavafroth.is-a.dev/tags/ringzer0/Fri, 19 Aug 2022 09:57:34 +0530https://lavafroth.is-a.dev/tags/ringzer0/Web Parsinghttps://lavafroth.is-a.dev/tags/web-parsing/Fri, 19 Aug 2022 09:57:34 +0530https://lavafroth.is-a.dev/tags/web-parsing/Nushellhttps://lavafroth.is-a.dev/tags/nushell/Tue, 02 Aug 2022 09:26:51 +0530https://lavafroth.is-a.dev/tags/nushell/South Parkhttps://lavafroth.is-a.dev/tags/south-park/Tue, 02 Aug 2022 09:26:51 +0530https://lavafroth.is-a.dev/tags/south-park/Streaminghttps://lavafroth.is-a.dev/tags/streaming/Tue, 02 Aug 2022 09:26:51 +0530https://lavafroth.is-a.dev/tags/streaming/Forensicshttps://lavafroth.is-a.dev/tags/forensics/Fri, 18 Mar 2022 07:10:17 +0530https://lavafroth.is-a.dev/tags/forensics/The Sleuth Kithttps://lavafroth.is-a.dev/tags/the-sleuth-kit/Fri, 18 Mar 2022 07:10:17 +0530https://lavafroth.is-a.dev/tags/the-sleuth-kit/Authentication Bypasshttps://lavafroth.is-a.dev/tags/authentication-bypass/Tue, 22 Feb 2022 14:49:34 +0530https://lavafroth.is-a.dev/tags/authentication-bypass/Windowshttps://lavafroth.is-a.dev/tags/windows/Mon, 21 Feb 2022 13:15:26 +0530https://lavafroth.is-a.dev/tags/windows/Jinja2https://lavafroth.is-a.dev/tags/jinja2/Mon, 21 Feb 2022 09:24:30 +0530https://lavafroth.is-a.dev/tags/jinja2/Path Traversalhttps://lavafroth.is-a.dev/tags/path-traversal/Mon, 21 Feb 2022 09:24:30 +0530https://lavafroth.is-a.dev/tags/path-traversal/
\ No newline at end of file
+Tags on lavafrothhttps://lavafroth.is-a.dev/tags/Recent content in Tags on lavafrothHugoen-usSun, 02 Nov 2025 19:08:46 +0530Algebraic Data Typeshttps://lavafroth.is-a.dev/tags/algebraic-data-types/Sun, 02 Nov 2025 19:08:46 +0530https://lavafroth.is-a.dev/tags/algebraic-data-types/Decoratorshttps://lavafroth.is-a.dev/tags/decorators/Sun, 02 Nov 2025 19:08:46 +0530https://lavafroth.is-a.dev/tags/decorators/Pythonhttps://lavafroth.is-a.dev/tags/python/Sun, 02 Nov 2025 19:08:46 +0530https://lavafroth.is-a.dev/tags/python/Rusthttps://lavafroth.is-a.dev/tags/rust/Sun, 02 Nov 2025 19:08:46 +0530https://lavafroth.is-a.dev/tags/rust/Nixhttps://lavafroth.is-a.dev/tags/nix/Sun, 14 Sep 2025 18:31:52 +0530https://lavafroth.is-a.dev/tags/nix/NixOShttps://lavafroth.is-a.dev/tags/nixos/Sun, 14 Sep 2025 18:31:52 +0530https://lavafroth.is-a.dev/tags/nixos/Noteshttps://lavafroth.is-a.dev/tags/notes/Sun, 14 Sep 2025 18:31:52 +0530https://lavafroth.is-a.dev/tags/notes/Troubleshootinghttps://lavafroth.is-a.dev/tags/troubleshooting/Sun, 14 Sep 2025 18:31:52 +0530https://lavafroth.is-a.dev/tags/troubleshooting//E/OShttps://lavafroth.is-a.dev/tags/e/os/Wed, 20 Aug 2025 09:55:43 +0530https://lavafroth.is-a.dev/tags/e/os/Androidhttps://lavafroth.is-a.dev/tags/android/Wed, 20 Aug 2025 09:55:43 +0530https://lavafroth.is-a.dev/tags/android/Custom ROMhttps://lavafroth.is-a.dev/tags/custom-rom/Wed, 20 Aug 2025 09:55:43 +0530https://lavafroth.is-a.dev/tags/custom-rom/QuickStephttps://lavafroth.is-a.dev/tags/quickstep/Wed, 20 Aug 2025 09:55:43 +0530https://lavafroth.is-a.dev/tags/quickstep/QuickSwitchhttps://lavafroth.is-a.dev/tags/quickswitch/Wed, 20 Aug 2025 09:55:43 +0530https://lavafroth.is-a.dev/tags/quickswitch/Gohttps://lavafroth.is-a.dev/tags/go/Fri, 13 Jun 2025 08:39:58 +0530https://lavafroth.is-a.dev/tags/go/Reverse Engieeringhttps://lavafroth.is-a.dev/tags/reverse-engieering/Fri, 13 Jun 2025 08:39:58 +0530https://lavafroth.is-a.dev/tags/reverse-engieering/TILhttps://lavafroth.is-a.dev/tags/til/Fri, 13 Jun 2025 08:39:58 +0530https://lavafroth.is-a.dev/tags/til/AIhttps://lavafroth.is-a.dev/tags/ai/Thu, 03 Apr 2025 15:56:04 +0530https://lavafroth.is-a.dev/tags/ai/Copilothttps://lavafroth.is-a.dev/tags/copilot/Thu, 03 Apr 2025 15:56:04 +0530https://lavafroth.is-a.dev/tags/copilot/LLMhttps://lavafroth.is-a.dev/tags/llm/Thu, 03 Apr 2025 15:56:04 +0530https://lavafroth.is-a.dev/tags/llm/Ranthttps://lavafroth.is-a.dev/tags/rant/Thu, 03 Apr 2025 15:56:04 +0530https://lavafroth.is-a.dev/tags/rant/Bioinformaticshttps://lavafroth.is-a.dev/tags/bioinformatics/Fri, 14 Feb 2025 09:40:11 +0530https://lavafroth.is-a.dev/tags/bioinformatics/DNAhttps://lavafroth.is-a.dev/tags/dna/Fri, 14 Feb 2025 09:40:11 +0530https://lavafroth.is-a.dev/tags/dna/Linear Algebrahttps://lavafroth.is-a.dev/tags/linear-algebra/Fri, 14 Feb 2025 09:40:11 +0530https://lavafroth.is-a.dev/tags/linear-algebra/Remainder Theoremhttps://lavafroth.is-a.dev/tags/remainder-theorem/Fri, 14 Feb 2025 09:40:11 +0530https://lavafroth.is-a.dev/tags/remainder-theorem/3Dhttps://lavafroth.is-a.dev/tags/3d/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/3d/Animationhttps://lavafroth.is-a.dev/tags/animation/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/animation/GLSLhttps://lavafroth.is-a.dev/tags/glsl/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/glsl/Manimhttps://lavafroth.is-a.dev/tags/manim/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/manim/ThreeJShttps://lavafroth.is-a.dev/tags/threejs/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/threejs/WebGLhttps://lavafroth.is-a.dev/tags/webgl/Mon, 20 Jan 2025 19:41:51 +0530https://lavafroth.is-a.dev/tags/webgl/Bashhttps://lavafroth.is-a.dev/tags/bash/Sun, 05 Jan 2025 11:55:52 +0530https://lavafroth.is-a.dev/tags/bash/CTFhttps://lavafroth.is-a.dev/tags/ctf/Sun, 05 Jan 2025 11:55:52 +0530https://lavafroth.is-a.dev/tags/ctf/PicoCTFhttps://lavafroth.is-a.dev/tags/picoctf/Sun, 05 Jan 2025 11:55:52 +0530https://lavafroth.is-a.dev/tags/picoctf/Sandbox Escapehttps://lavafroth.is-a.dev/tags/sandbox-escape/Sun, 05 Jan 2025 11:55:52 +0530https://lavafroth.is-a.dev/tags/sandbox-escape/Automationhttps://lavafroth.is-a.dev/tags/automation/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/tags/automation/Home Serverhttps://lavafroth.is-a.dev/tags/home-server/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/tags/home-server/Jellyfinhttps://lavafroth.is-a.dev/tags/jellyfin/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/tags/jellyfin/Photoprismhttps://lavafroth.is-a.dev/tags/photoprism/Sat, 04 Jan 2025 10:04:37 +0530https://lavafroth.is-a.dev/tags/photoprism/Lanzabootehttps://lavafroth.is-a.dev/tags/lanzaboote/Fri, 20 Dec 2024 12:26:10 +0530https://lavafroth.is-a.dev/tags/lanzaboote/Sbctlhttps://lavafroth.is-a.dev/tags/sbctl/Fri, 20 Dec 2024 12:26:10 +0530https://lavafroth.is-a.dev/tags/sbctl/Secureboothttps://lavafroth.is-a.dev/tags/secureboot/Fri, 20 Dec 2024 12:26:10 +0530https://lavafroth.is-a.dev/tags/secureboot/EBNFhttps://lavafroth.is-a.dev/tags/ebnf/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/tags/ebnf/Google Summer of Codehttps://lavafroth.is-a.dev/tags/google-summer-of-code/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/tags/google-summer-of-code/SWHKDhttps://lavafroth.is-a.dev/tags/swhkd/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/tags/swhkd/Waycratehttps://lavafroth.is-a.dev/tags/waycrate/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/tags/waycrate/Waylandhttps://lavafroth.is-a.dev/tags/wayland/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/tags/wayland/CUDAhttps://lavafroth.is-a.dev/tags/cuda/Sat, 10 Aug 2024 08:18:30 +0530https://lavafroth.is-a.dev/tags/cuda/Machine Learninghttps://lavafroth.is-a.dev/tags/machine-learning/Sat, 10 Aug 2024 08:18:30 +0530https://lavafroth.is-a.dev/tags/machine-learning/NVIDIAhttps://lavafroth.is-a.dev/tags/nvidia/Sat, 10 Aug 2024 08:18:30 +0530https://lavafroth.is-a.dev/tags/nvidia/Workflowhttps://lavafroth.is-a.dev/tags/workflow/Sat, 10 Aug 2024 08:18:30 +0530https://lavafroth.is-a.dev/tags/workflow/Video Editinghttps://lavafroth.is-a.dev/tags/video-editing/Thu, 01 Aug 2024 17:17:31 +0530https://lavafroth.is-a.dev/tags/video-editing/Kernel Moduleshttps://lavafroth.is-a.dev/tags/kernel-modules/Fri, 07 Jun 2024 17:01:01 +0530https://lavafroth.is-a.dev/tags/kernel-modules/Laptopshttps://lavafroth.is-a.dev/tags/laptops/Fri, 07 Jun 2024 17:01:01 +0530https://lavafroth.is-a.dev/tags/laptops/Linuxhttps://lavafroth.is-a.dev/tags/linux/Fri, 07 Jun 2024 17:01:01 +0530https://lavafroth.is-a.dev/tags/linux/Terminalhttps://lavafroth.is-a.dev/tags/terminal/Thu, 23 May 2024 18:37:47 +0530https://lavafroth.is-a.dev/tags/terminal/UIhttps://lavafroth.is-a.dev/tags/ui/Thu, 23 May 2024 18:37:47 +0530https://lavafroth.is-a.dev/tags/ui/YouTubehttps://lavafroth.is-a.dev/tags/youtube/Thu, 23 May 2024 18:37:47 +0530https://lavafroth.is-a.dev/tags/youtube/Metahttps://lavafroth.is-a.dev/tags/meta/Sun, 10 Mar 2024 08:47:08 +0530https://lavafroth.is-a.dev/tags/meta/Binary Exploitationhttps://lavafroth.is-a.dev/tags/binary-exploitation/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/binary-exploitation/CI Exploitationhttps://lavafroth.is-a.dev/tags/ci-exploitation/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/ci-exploitation/Cloud Securityhttps://lavafroth.is-a.dev/tags/cloud-security/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/cloud-security/Cryptographyhttps://lavafroth.is-a.dev/tags/cryptography/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/cryptography/DMARChttps://lavafroth.is-a.dev/tags/dmarc/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/dmarc/Reverse Engineeringhttps://lavafroth.is-a.dev/tags/reverse-engineering/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/reverse-engineering/Webhttps://lavafroth.is-a.dev/tags/web/Wed, 10 Jan 2024 19:51:32 +0530https://lavafroth.is-a.dev/tags/web/Concurrencyhttps://lavafroth.is-a.dev/tags/concurrency/Wed, 06 Dec 2023 10:58:10 +0530https://lavafroth.is-a.dev/tags/concurrency/AmateursCTFhttps://lavafroth.is-a.dev/tags/amateursctf/Thu, 07 Sep 2023 07:03:27 +0530https://lavafroth.is-a.dev/tags/amateursctf/Cookieshttps://lavafroth.is-a.dev/tags/cookies/Wed, 19 Jul 2023 07:53:17 +0530https://lavafroth.is-a.dev/tags/cookies/Javahttps://lavafroth.is-a.dev/tags/java/Sat, 18 Mar 2023 07:10:17 +0530https://lavafroth.is-a.dev/tags/java/JWThttps://lavafroth.is-a.dev/tags/jwt/Sat, 18 Mar 2023 07:10:17 +0530https://lavafroth.is-a.dev/tags/jwt/Image Reconstructionhttps://lavafroth.is-a.dev/tags/image-reconstruction/Fri, 03 Mar 2023 09:47:54 +0530https://lavafroth.is-a.dev/tags/image-reconstruction/Javascripthttps://lavafroth.is-a.dev/tags/javascript/Fri, 03 Mar 2023 09:47:54 +0530https://lavafroth.is-a.dev/tags/javascript/WebAssemblyhttps://lavafroth.is-a.dev/tags/webassembly/Thu, 09 Feb 2023 16:39:08 +0530https://lavafroth.is-a.dev/tags/webassembly/Powershellhttps://lavafroth.is-a.dev/tags/powershell/Mon, 09 Jan 2023 10:36:35 +0530https://lavafroth.is-a.dev/tags/powershell/Wiresharkhttps://lavafroth.is-a.dev/tags/wireshark/Mon, 09 Jan 2023 10:36:35 +0530https://lavafroth.is-a.dev/tags/wireshark/Visual Cryptographyhttps://lavafroth.is-a.dev/tags/visual-cryptography/Tue, 22 Nov 2022 09:25:20 +0530https://lavafroth.is-a.dev/tags/visual-cryptography/ASThttps://lavafroth.is-a.dev/tags/ast/Fri, 19 Aug 2022 10:04:36 +0530https://lavafroth.is-a.dev/tags/ast/Google CTFhttps://lavafroth.is-a.dev/tags/google-ctf/Fri, 19 Aug 2022 10:04:36 +0530https://lavafroth.is-a.dev/tags/google-ctf/ELFhttps://lavafroth.is-a.dev/tags/elf/Fri, 19 Aug 2022 09:57:34 +0530https://lavafroth.is-a.dev/tags/elf/RingZer0https://lavafroth.is-a.dev/tags/ringzer0/Fri, 19 Aug 2022 09:57:34 +0530https://lavafroth.is-a.dev/tags/ringzer0/Web Parsinghttps://lavafroth.is-a.dev/tags/web-parsing/Fri, 19 Aug 2022 09:57:34 +0530https://lavafroth.is-a.dev/tags/web-parsing/Nushellhttps://lavafroth.is-a.dev/tags/nushell/Tue, 02 Aug 2022 09:26:51 +0530https://lavafroth.is-a.dev/tags/nushell/South Parkhttps://lavafroth.is-a.dev/tags/south-park/Tue, 02 Aug 2022 09:26:51 +0530https://lavafroth.is-a.dev/tags/south-park/Streaminghttps://lavafroth.is-a.dev/tags/streaming/Tue, 02 Aug 2022 09:26:51 +0530https://lavafroth.is-a.dev/tags/streaming/Forensicshttps://lavafroth.is-a.dev/tags/forensics/Fri, 18 Mar 2022 07:10:17 +0530https://lavafroth.is-a.dev/tags/forensics/The Sleuth Kithttps://lavafroth.is-a.dev/tags/the-sleuth-kit/Fri, 18 Mar 2022 07:10:17 +0530https://lavafroth.is-a.dev/tags/the-sleuth-kit/Authentication Bypasshttps://lavafroth.is-a.dev/tags/authentication-bypass/Tue, 22 Feb 2022 14:49:34 +0530https://lavafroth.is-a.dev/tags/authentication-bypass/Windowshttps://lavafroth.is-a.dev/tags/windows/Mon, 21 Feb 2022 13:15:26 +0530https://lavafroth.is-a.dev/tags/windows/Jinja2https://lavafroth.is-a.dev/tags/jinja2/Mon, 21 Feb 2022 09:24:30 +0530https://lavafroth.is-a.dev/tags/jinja2/Path Traversalhttps://lavafroth.is-a.dev/tags/path-traversal/Mon, 21 Feb 2022 09:24:30 +0530https://lavafroth.is-a.dev/tags/path-traversal/
\ No newline at end of file
diff --git a/tags/python/index.html b/tags/python/index.html
index fb046298..fed1e5db 100644
--- a/tags/python/index.html
+++ b/tags/python/index.html
@@ -1,4 +1,8 @@
-Python - lavafroth
PicoCTFBashSandbox EscapePython
diff --git a/tags/python/index.xml b/tags/python/index.xml
index aea89c55..3ede5d89 100644
--- a/tags/python/index.xml
+++ b/tags/python/index.xml
@@ -1,4 +1,6 @@
-Python on lavafrothhttps://lavafroth.is-a.dev/tags/python/Recent content in Python on lavafrothHugoen-usSun, 05 Jan 2025 11:55:52 +0530PicoCTF SansAlpha Writeuphttps://lavafroth.is-a.dev/post/picoctf-sansalpha-writeup/Sun, 05 Jan 2025 11:55:52 +0530https://lavafroth.is-a.dev/post/picoctf-sansalpha-writeup/<p>Hey everyone, since 2024 hasn’t seen a lot of posts on this blog, I plan to
+Python on lavafrothhttps://lavafroth.is-a.dev/tags/python/Recent content in Python on lavafrothHugoen-usSun, 02 Nov 2025 19:08:46 +0530Algebraic Python Enumshttps://lavafroth.is-a.dev/post/algebraic-python-enums/Sun, 02 Nov 2025 19:08:46 +0530https://lavafroth.is-a.dev/post/algebraic-python-enums/<p>As much as I like rust for its ergonomic features, University has forced me to use Python for the past couple of months, especially because of the hype for machine learning and data science.</p>
+<p>One of the biggest things that I missed from the rust experience was enumerable data types whose variants can wrap around different datatypes.</p>
+<p>Fortunately, since Python 3.8, creating structs has been a breeze using the dataclass decorator. There’s even support for structural match expressions, like in rust, in recent versions of Python. <a href="https://peps.python.org/pep-0636/">https://peps.python.org/pep-0636/</a></p>PicoCTF SansAlpha Writeuphttps://lavafroth.is-a.dev/post/picoctf-sansalpha-writeup/Sun, 05 Jan 2025 11:55:52 +0530https://lavafroth.is-a.dev/post/picoctf-sansalpha-writeup/<p>Hey everyone, since 2024 hasn’t seen a lot of posts on this blog, I plan to
start this year off by going back to the roots.</p>
<p>I’ll be focusing on posting more CTF writeups again! Today’s challenge is
<em>SansAlpha</em> from PicoCTF. The challenge description states</p>
diff --git a/tags/rust/index.html b/tags/rust/index.html
index ac918ad7..d8bbb120 100644
--- a/tags/rust/index.html
+++ b/tags/rust/index.html
@@ -1,4 +1,8 @@
-Rust - lavafroth
EBNF
-Google Summer of Code
-Rust
-SWHKD
-Waycrate
-Wayland
-Previous Page
+Previous PageNext Page
\ No newline at end of file
diff --git a/tags/rust/index.xml b/tags/rust/index.xml
index 181e17f6..269251ec 100644
--- a/tags/rust/index.xml
+++ b/tags/rust/index.xml
@@ -1,4 +1,6 @@
-Rust on lavafrothhttps://lavafroth.is-a.dev/tags/rust/Recent content in Rust on lavafrothHugoen-usSat, 24 Aug 2024 10:28:50 +0530Wrapping up GSoC 2024https://lavafroth.is-a.dev/post/the-gsoc-grand-finale/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/post/the-gsoc-grand-finale/<h1 id="overview">Overview</h1>
+Rust on lavafrothhttps://lavafroth.is-a.dev/tags/rust/Recent content in Rust on lavafrothHugoen-usSun, 02 Nov 2025 19:08:46 +0530Algebraic Python Enumshttps://lavafroth.is-a.dev/post/algebraic-python-enums/Sun, 02 Nov 2025 19:08:46 +0530https://lavafroth.is-a.dev/post/algebraic-python-enums/<p>As much as I like rust for its ergonomic features, University has forced me to use Python for the past couple of months, especially because of the hype for machine learning and data science.</p>
+<p>One of the biggest things that I missed from the rust experience was enumerable data types whose variants can wrap around different datatypes.</p>
+<p>Fortunately, since Python 3.8, creating structs has been a breeze using the dataclass decorator. There’s even support for structural match expressions, like in rust, in recent versions of Python. <a href="https://peps.python.org/pep-0636/">https://peps.python.org/pep-0636/</a></p>Wrapping up GSoC 2024https://lavafroth.is-a.dev/post/the-gsoc-grand-finale/Sat, 24 Aug 2024 10:28:50 +0530https://lavafroth.is-a.dev/post/the-gsoc-grand-finale/<h1 id="overview">Overview</h1>
<p>Hello and welcome to the final GSoC post for 2024! My task was to formalize the SWHKD parser using context-free EBNF notation. This post is to serve as a birdseye view of what
I have developed over this summer.</p>
<h1 id="report">Report</h1>
diff --git a/tags/rust/page/2/index.html b/tags/rust/page/2/index.html
index 94b236c2..afa82634 100644
--- a/tags/rust/page/2/index.html
+++ b/tags/rust/page/2/index.html
@@ -1,4 +1,10 @@
-Rust - lavafroth