{
  "path": "/3m4tabv2zg22u",
  "site": "at://did:plc:xg2vq45muivyy3xwatcehspu/site.standard.publication/3m3zpxhfl3c2s",
  "$type": "site.standard.document",
  "title": "Dev Log 8: 2025-11-04",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.image",
              "image": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreia5mvw4gjrpk4xi2chr7cnah3rsja66g6xjs2arojcyjskamfgpwa"
                },
                "mimeType": "image/png",
                "size": 528662
              },
              "aspectRatio": {
                "width": 631,
                "height": 512
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [],
              "plaintext": "What I Learned"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 229,
                    "byteStart": 222
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 250,
                    "byteStart": 243
                  },
                  "features": [
                    {
                      "uri": "https://tangled.org/@desertthunder.dev/storm",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 283,
                    "byteStart": 273
                  },
                  "features": [
                    {
                      "uri": "https://github.com/changesets/changesets",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 295,
                    "byteStart": 286
                  },
                  "features": [
                    {
                      "uri": "https://keepachangelog.com/en/1.1.0/",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "Yesterday I learned about diffing algorithms, specifically the Myers Difference algorithm used by unix diff. I even implemented it in Golang last night. It relates to this absurd Squirtle squad meme I've posted. I started another silly little project, this time to produce changesets & CHANGELOGs using a pure golang implementation of git porcelain."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [],
              "plaintext": "What I'm Working On"
            }
          },
          {
            "$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": 34,
                    "byteStart": 26
                  },
                  "features": [
                    {
                      "uri": "https://tangled.org/@desertthunder.dev/noteleaf",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "My focus today is to have noteleaf in a more usable state and even release it on homebrew (very ambitious given its state). I plan to start with an implementation of some of the heuristics/patterns that mozilla used in Readability.js to supplement the five-filter parser XPath parser rules noteleaf uses to extract article text. This should be pretty fun. I've enjoyed learning about named algorithms. "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 127,
                    "byteStart": 110
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                }
              ],
              "plaintext": "I've had this idea about producing weekly \"digests\" out of my leaflet posts so the goal today is to make sure noteleaf pub pull handles images & highlights, and is QA'd. I'll probably push a bunch of test posts today as well. "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "facets": [],
              "plaintext": "Wildcard"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 7,
                    "byteStart": 0
                  },
                  "features": [
                    {
                      "uri": "https://tangled.org/",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "Tangled is a lot of fun! I like seeing what people star on the platform and what they start. It's wild what a single star on a git host will do for a person's self esteem. I'm the person in question and noteleaf has three stars! "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "What I've seen on tangled is two (among many) inspiring projects:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 10,
                    "byteStart": 3
                  },
                  "features": [
                    {
                      "uri": "https://tangled.org/@rocksky.app/rocksky",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "1. RockSky - an AT Proto music discovery platform"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 10,
                    "byteStart": 3
                  },
                  "features": [
                    {
                      "uri": "http://teal.fm/",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 42,
                    "byteStart": 35
                  },
                  "features": [
                    {
                      "uri": "https://Last.fm",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "2. Teal.fm - the next evolution of Last.fm "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "I want to make a similar-ish project that serves a similar purpose so I'll probably brainstorm about it a bit today. Music would be cool, as I made something to copy Spotify playlists to YouTube music a few weeks ago. I guess we'll see. "
            }
          },
          {
            "$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": "Anyways, enjoy your Tuesday!"
            }
          }
        ]
      }
    ]
  },
  "bskyPostRef": {
    "cid": "bafyreig6lxhxlh44umj52fiojuv5lyhjuhorvep4tnb3liquzwpvolo7su",
    "uri": "at://did:plc:xg2vq45muivyy3xwatcehspu/app.bsky.feed.post/3m4tacffsvs2u",
    "commit": {
      "cid": "bafyreig5yifituoasqytiqtcdeqlcgc6mkqegd7nkscvnalosc75z5ab2i",
      "rev": "3m4tacfigsk2b"
    },
    "validationStatus": "valid"
  },
  "description": "It's possible I'm logging my insanity",
  "publishedAt": "2025-11-04T19:08:46.832Z"
}