diff --git a/index.html b/index.html index cf5b91bd..b84e3862 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,8 @@ -lavafroth

Algebraic Python Enums


NixOS Notes to Self


Nix +lavafroth

NixOS Notes to Self


Nix NixOS Notes Troubleshooting 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
 
 @dataclass
 class Empty:
@@ -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.

def report_drink(glass: Glass):
+

This allows us to define functions that ingest the Glass datatype.

def report_drink(glass: Glass) -> str:
   match glass:
     case Empty:
       return "Whoops, looks like you've finished your drink!"
     case Full(drink):
       return f"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.

\ No newline at end of file +

Pitfalls

No direct variant access

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.

# main.py
+import glass_enum
+
+fanta = glass_enum.Full('Fanta')
+empty = glass_enum.Empty()
+

Now any function outside the module has to ingest a rather confusing argument of type glass_enum.Glass.

def refill(glass: glass_enum.Glass) -> glass_enum.Glass:
+  # ...
+  return glass
+

Since using a module namespace only causes more confusion, we will discard this idea.

No methods on the enum itself

With no namespaceing, 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.

def refill(glass: Glass) -> Glass:
+  if glass.is_empty(): # can't implement on type `Glass` directly
+    return Full('water')
+  return glass
+

Even if we use module level namespacing, it’s simply not possible to define any method on a Union type in Python.

To define a method like is_empty(), it must be implemented on both the classes Full and Empty. This can get +tedious if there are 3 or more variants.

Python is a sneaky language

Last week I discovered that Python allows creating nested classes to keep things organized.

from dataclasses import dataclass
+
+class Glass:
+  @dataclass
+  class Empty:
+    pass
+
+  @dataclass
+  class Full:
+    drink: str
+

Python will happily run the above code and we can access the “variants” under the Glass namespace.

lemonade = Glass.Full('lemonade')
+

If only we could register the variants as the Glass type itself and inherit all its methods.

Redecorate

We can define a decorator that takes all of the nested dataclasses and makes them inherit the outer class.

import inspect
+
+def AlgebraicEnum(cls):
+    for subclass_name, subclass in inspect.getmembers(cls, predicate=inspect.isclass):
+        if subclass_name != "__class__":
+            setattr(cls, subclass_name, type(subclass_name, (cls, subclass), {}))
+
+    return cls
+

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
+class Glass:
+  @dataclass
+  class Empty:
+    pass
+
+  @dataclass
+  class Full:
+    drink: str
+
+  def report_drink(self) -> str:
+    match self:
+      case Glass.Empty:
+        return "Whoops, looks like you've finished your drink!"
+      case Glass.Full(drink):
+        return f"Ah a {drink}, what a fine taste!"
+
+  def is_empty(self) -> str:
+    match self:
+      case Glass.Empty:
+        return True
+    return False
+

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.

\ 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

NixOS Notes to Self


Nix +Posts - lavafroth

NixOS Notes to Self


Nix NixOS Notes Troubleshooting 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
\ 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&rsquo;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
\ 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&rsquo;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

PicoCTF SansAlpha Writeup


PicoCTF +Python - lavafroth

PicoCTF SansAlpha Writeup


PicoCTF Bash Sandbox Escape Python 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&rsquo;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&rsquo;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&rsquo;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&rsquo;ll be focusing on posting more CTF writeups again! Today&rsquo;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
\ 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&rsquo;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