{
  "path": "/3m4bf3vue2k2d",
  "site": "at://did:plc:xg2vq45muivyy3xwatcehspu/site.standard.publication/3m3zpxhfl3c2s",
  "$type": "site.standard.document",
  "title": "Dev Log 3: 2025-10-28",
  "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": "Yesterday"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "facets": [],
              "plaintext": "SkyPanel (Extension)"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "So far today in SkyPanel, I've worked on a couple of more advanced \"fun\" features. The first one was marking posts are read based on scrolling past (Intersection Observer)."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "facets": [],
              "plaintext": "Beacon"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Yesterday I worked on stub discovery & Protocols."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [],
              "plaintext": "Today"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "facets": [],
              "plaintext": "Noteleaf"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 23,
                    "byteStart": 15
                  },
                  "features": [
                    {
                      "uri": "https://github.com/stormlightlabs/noteleaf",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 120,
                    "byteStart": 105
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                }
              ],
              "plaintext": "I went back to noteleaf to take advantage of some of cobra/fang's documentation generation capabilities. noteleaf docgen generates a docusaurus compatible structure"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "facets": [],
              "plaintext": "SkyPanel"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "I added quite a bit of UI and improved the UX. Most of this is around how posts are displayed and read through. There will be a tree style display for threads, and right now, posts are marked as read when scrolled by using the Intersection Observer API."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "I plan to improve loading states to include more visual feedback."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "facets": [],
              "plaintext": "Beacon"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "I posted on reddit asking about linting rules commonly employed by other pythonistas. A lot of folks start aggressive and then remove rules as they see fit. I think I'm going to stick to a small subset still. It was nerve wracking posting on reddit. Glad I did it though."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.horizontalRule"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Last night was wild! Go Dodgers!"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": ""
            }
          }
        ]
      }
    ]
  },
  "bskyPostRef": {
    "cid": "bafyreibshjhapjfrvsgen4wo7qcaolygp4ctgbriqgbh35cgi5asunzi2e",
    "uri": "at://did:plc:xg2vq45muivyy3xwatcehspu/app.bsky.feed.post/3m4bf445cps2d",
    "commit": {
      "cid": "bafyreiggjhmx4r7rybza2qtsaxkjksrqegz6osjsevrj6kmhl5fo2j2zqi",
      "rev": "3m4bf44afoi2s"
    },
    "validationStatus": "valid"
  },
  "description": "",
  "publishedAt": "2025-10-28T16:46:59.753Z"
}