{
  "path": "/3m5k7i7v3fs2b",
  "site": "at://did:plc:xg2vq45muivyy3xwatcehspu/site.standard.publication/3m3zpxhfl3c2s",
  "$type": "site.standard.document",
  "title": "Dev Log 16: 2025-11-13",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [],
              "plaintext": "Mccabre"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "This is a code analysis tool I made. It recycles concepts and snippets stashed away as I've been working on beacon."
                  },
                  "children": []
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "index": {
                          "byteEnd": 25,
                          "byteStart": 21
                        },
                        "features": [
                          {
                            "uri": "https://tangled.org/@desertthunder.dev/mccabre",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      },
                      {
                        "index": {
                          "byteEnd": 87,
                          "byteStart": 81
                        },
                        "features": [
                          {
                            "uri": "https://github.com/desertthunder/mccabre",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      }
                    ],
                    "plaintext": "You can check it out here (docsite coming soon - GH actions aren't set up on its mirror)"
                  },
                  "children": []
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "index": {
                          "byteEnd": 119,
                          "byteStart": 103
                        },
                        "features": [
                          {
                            "uri": "https://crates.io/crates/parserst",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      },
                      {
                        "index": {
                          "byteEnd": 128,
                          "byteStart": 124
                        },
                        "features": [
                          {
                            "uri": "https://github.com/stormlightlabs/git-storm",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      }
                    ],
                    "plaintext": "I'm finding that this ends up happening a lot with me, where I start writing a script or a feature and just pull it out and make something small with it."
                  },
                  "children": []
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "Notable things as far as personal workflows go here is practicing \"documentation driven development.\" I wrote the documentation before the implementations for this project to keep myself on track."
                  },
                  "children": []
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [],
              "plaintext": "Beacon"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "This project is an exercise in the insanity induced by accruing technical debt. "
                  },
                  "children": [
                    {
                      "$type": "pub.leaflet.blocks.unorderedList#listItem",
                      "content": {
                        "$type": "pub.leaflet.blocks.text",
                        "facets": [],
                        "plaintext": "The codebase is huge and the docsite when printed (it's an mdbook site) would be over 100 pages."
                      },
                      "children": []
                    },
                    {
                      "$type": "pub.leaflet.blocks.unorderedList#listItem",
                      "content": {
                        "$type": "pub.leaflet.blocks.text",
                        "facets": [],
                        "plaintext": "Pattern matching is a complex feature. It's no wonder it's so recent to Python."
                      },
                      "children": []
                    },
                    {
                      "$type": "pub.leaflet.blocks.unorderedList#listItem",
                      "content": {
                        "$type": "pub.leaflet.blocks.text",
                        "facets": [],
                        "plaintext": "Unions in particular required a bit of refactoring"
                      },
                      "children": []
                    }
                  ]
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "index": {
                          "byteEnd": 60,
                          "byteStart": 55
                        },
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#code"
                          }
                        ]
                      }
                    ],
                    "plaintext": "I've extended the CLI to render diagnostics behind the debug command (it's not included in release builds)"
                  },
                  "children": [
                    {
                      "$type": "pub.leaflet.blocks.unorderedList#listItem",
                      "content": {
                        "$type": "pub.leaflet.blocks.text",
                        "facets": [],
                        "plaintext": "Speaking of which, I need to make a release roadmap for this project"
                      },
                      "children": []
                    }
                  ]
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.code",
              "language": "shellscript",
              "plaintext": "$ beacon debug diagnostics src/\n\n⚡ Running comprehensive diagnostics on 5 file(s)...\n\n✓ 0 Parse Errors\n\n✗ 3 Lint Issues\n  ▸ src/main.py:5:1 [BEA015] 'os' imported but never used\n    5 import os\n             ~~\n  ▸ src/utils.py:10:5 [BEA018] 'x' is redefined before being used\n    10     x = 2\n           ~\n  ▸ src/helper.py:3:1 [BEA015] 'sys' imported but never used\n    3 import sys\n             ~~~\n\n✗ 2 Type Errors\n  ▸ src/main.py:12:9 Cannot unify types: Int ~ Str\n    12     z = x + y\n               ~~~~~\n  ▸ src/utils.py:20:5 Undefined type variable: τ5\n    20     result = unknown_func()\n                    ~~~~~~~~~~~~\n\nSummary: 5 total issue(s) found",
              "syntaxHighlightingTheme": "tokyo-night"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "There's still some work to be done (type solving internals like τ5 are probably useless to an end user)"
                  },
                  "children": []
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "bskyPostRef": {
    "cid": "bafyreiasoergx3lfhosrnfb3wu66tv4wtlibmgsbzfxyqcxneegu4yj254",
    "uri": "at://did:plc:xg2vq45muivyy3xwatcehspu/app.bsky.feed.post/3m5k7ihfeuc2b",
    "commit": {
      "cid": "bafyreidfui2s4n34k6fjokxspvbsiv757qaylns3mpamawbyfrc2jkobay",
      "rev": "3m5k7ihhutw2z"
    },
    "validationStatus": "valid"
  },
  "description": "BLARGH",
  "publishedAt": "2025-11-13T22:25:39.739Z"
}