{
  "path": "/3m54v6e6ag225",
  "site": "at://did:plc:xg2vq45muivyy3xwatcehspu/site.standard.publication/3m3zpxhfl3c2s",
  "$type": "site.standard.document",
  "title": "Dev Log 12: 2025-11-08",
  "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": "Noteleaf"
            }
          },
          {
            "$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": [
                      {
                        "index": {
                          "byteEnd": 140,
                          "byteStart": 130
                        },
                        "features": [
                          {
                            "uri": "https://grugbrain.dev/",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      }
                    ],
                    "plaintext": "I'd completely over-engineered publishing/posting to leaflet and spent a lot of time debugging it. The service implementation is, thankfully, a lot simpler now."
                  },
                  "children": []
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [],
              "plaintext": "Storm"
            }
          },
          {
            "$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": [
                      {
                        "index": {
                          "byteEnd": 44,
                          "byteStart": 37
                        },
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#code"
                          }
                        ]
                      }
                    ],
                    "plaintext": "I added a git tagging utility to the release command. It makes me wonder if integrating it with goreleaser would be a good idea."
                  },
                  "children": []
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "index": {
                          "byteEnd": 22,
                          "byteStart": 18
                        },
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#italic"
                          }
                        ]
                      },
                      {
                        "index": {
                          "byteEnd": 61,
                          "byteStart": 48
                        },
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#code"
                          }
                        ]
                      },
                      {
                        "index": {
                          "byteEnd": 132,
                          "byteStart": 127
                        },
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#code"
                          }
                        ]
                      }
                    ],
                    "plaintext": "I suppose I don't have to address the fact that strings.Title is deprecated in Golang, and yet I find myself making an English Caser whenever I need it. It's a little annoying."
                  },
                  "children": []
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.code",
              "language": "go",
              "plaintext": "package shared\n\nimport (\n\t\"golang.org/x/text/cases\"\n\t\"golang.org/x/text/language\"\n)\n\nvar caser = cases.Title(language.English)\n\nfunc TitleCase(s string) string {\n\treturn caser.String(s)\n}",
              "syntaxHighlightingTheme": "gruvbox-dark-hard"
            }
          },
          {
            "$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": [
                      {
                        "index": {
                          "byteEnd": 71,
                          "byteStart": 58
                        },
                        "features": [
                          {
                            "uri": "https://stormlightlabs.github.io/beacon/configuration.html",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      }
                    ],
                    "plaintext": "I worked on configuration ergonomics today and added some documentation."
                  },
                  "children": []
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "The CLI work I did is actually pretty cool and the printed formatting looks great. Maybe I'll post a demo."
                  },
                  "children": []
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "More linter rules are implemented:"
                  },
                  "children": [
                    {
                      "$type": "pub.leaflet.blocks.unorderedList#listItem",
                      "content": {
                        "$type": "pub.leaflet.blocks.text",
                        "facets": [
                          {
                            "index": {
                              "byteEnd": 40,
                              "byteStart": 36
                            },
                            "features": [
                              {
                                "uri": "https://stormlightlabs.github.io/beacon/lsp/lint_rules.html",
                                "$type": "pub.leaflet.richtext.facet#link"
                              }
                            ]
                          }
                        ],
                        "plaintext": "BEA009,010,012,015,017,018 (details here)"
                      },
                      "children": []
                    }
                  ]
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "index": {
                          "byteEnd": 37,
                          "byteStart": 14
                        },
                        "features": [
                          {
                            "uri": "https://github.com/stormlightlabs/beacon/blob/main/CONTRIBUTING.md",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      }
                    ],
                    "plaintext": "There are now contributing guidelines in the repo"
                  },
                  "children": []
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [],
              "plaintext": "TIL"
            }
          },
          {
            "$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": [
                      {
                        "index": {
                          "byteEnd": 188,
                          "byteStart": 181
                        },
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#italic"
                          }
                        ]
                      }
                    ],
                    "plaintext": "Today I learned about debuggers commonly used in Golang & Rust. It's a little embarrassing to have been using both of these languages and toolchains for much of the last year but I finally setup Delve & LLDB, respectively. I might post some notes or a tutorial later today."
                  },
                  "children": []
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "index": {
                          "byteEnd": 23,
                          "byteStart": 18
                        },
                        "features": [
                          {
                            "uri": "https://docs.basedpyright.com/latest/benefits-over-pyright/pylance-features/",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      }
                    ],
                    "plaintext": "BasedPyright is a thing, successfully doing one of the things I've been trying to do with beacon, namely an open source and powerful Python LSP. It's pretty cool. "
                  },
                  "children": []
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "bskyPostRef": {
    "cid": "bafyreid7i4gz2lawioxsmq2yblchu2ukhknzsh4akhlofsarpv6zcnti5a",
    "uri": "at://did:plc:xg2vq45muivyy3xwatcehspu/app.bsky.feed.post/3m54v6i2ym225",
    "commit": {
      "cid": "bafyreifuge55einlalgbqsqm5o6ucojdikwhyhdahr4wio64lrpcey5noi",
      "rev": "3m54v6i5giu2e"
    },
    "validationStatus": "valid"
  },
  "description": "In which I try to write more",
  "publishedAt": "2025-11-08T15:16:34.672Z"
}