{
  "path": "/3mdvnryr2xk23",
  "site": "at://did:plc:57od6g2ic3e3b3kauctjmo3k/site.standard.publication/3m5c6gbf36k2w",
  "tags": [
    "weekly recap"
  ],
  "$type": "site.standard.document",
  "title": "Week of 2026-01-26",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "id": "019c1f9a-7b1f-7eeb-88e4-75a5d0ce7af1",
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Hey there! I'm alive again. It's good to not be hacking my lungs up and exacerbating my asthma."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "I felt well enough over the last week to dive into Trinkets, finally, so that's all I have to talk about this week."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [],
              "plaintext": "Trinkets!"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "At the start of the year, I said that my goal was to have Trinkets ready and usable by ATmosphereConf. January is over now--that means that the conference is about 2 months away! Y'know, if there was a good time to get started, it was now."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "As a reminder, Trinkets is my vision for a 3D model sharing website on atproto. Since the PDS gives us blob storage for free, it doesn't seem all that complicated; just list folks' models and provide a viewer for looking at them in the browser."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "So, good news: Trinkets is working! I have successfully stored a 3MF file in my PDS, and I have a working AppView that puts a model viewer front-and-center. It technically supports a whole swathe of model formats (gLB, gLTF, OBJ, STL, FBX) but I haven't tested them out yet since 3MF was my most desired format."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "It's not hosted anywhere yet, but when it is, it'll be available at https://trinkets.network. I figured I'd yap for a sec about what's stopping me, in hopes that I'll just... get over 'em, live on air. So, here they are:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "facets": [],
              "plaintext": "I'm not sure I want Trinkets to be open-source"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 43,
                    "byteStart": 41
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ]
                }
              ],
              "plaintext": "Well... It's working already. I actually am sure that I want Trinkets to be open-source, but my trepidation is actually around accepting contributions."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "In the process of writing a few sentences, I've gone from \"I want to work on this by myself with nobody looking at it\" to \"I guess I can technically publish the source, and taking contributions would probably be good for me.\" So, onto Tangled this shall go. I'll take contributions as I can handle them."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "facets": [],
              "plaintext": "I'm not settled on the lexicons"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "At the moment, Trinkets isn't doing anything new in the model-sharing space. Every other platform allows you to upload models, view them in a canvas, and share them around."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "However, I have bigger aspirations for Trinkets as a Tangled-like space for CAD-ers and modelers. I want it to have the usual social features (bookmarks, likes, remixing), but I also want to build it into a revision-tracking space."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 274,
                    "byteStart": 271
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ]
                }
              ],
              "plaintext": "So often do I end up with 10 slightly-different revisions of a particular project, adjusting for printing tolerances, incorrect measurements, and other considerations. My dream is to be able to plot out a graph of revisions in a project, complete with descriptions as to why each model revision exists. I haven't found any existing tools to help me with this, so I plan to build it myself."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 217,
                    "byteStart": 196
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                }
              ],
              "plaintext": "There's no way I'm building all of that up-front, but I need to consider that direction while I build out the lexicons. And so far, I don't feel like the forward path is clear enough. I'm using a network.trinkets.v0.* versioning scheme in the lexicon ID, but it feels... brittle. Idk, I need to take a little more time to process my feelings about my schemas before I let them proliferate the Atmosphere."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 3,
              "facets": [],
              "plaintext": "It needs more human touch"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Part of how I got Trinkets working so quickly is due to using a Letta agent to help build it out. I scaffolded the project, and then the agent helped me get the critical features in place."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "I've been very careful to review all of the code that my agent has written, but I can't shake the feeling that I need to take another pass. I think that will be the case until I've pored over every function and refactored it into my personal style."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "The unfortunate dilemma with this is that I have to avoid the temptation to ask the agent to write a new feature, which will just pile on more code to review. It's not exactly a winning fight with the chemicals in my brain--they want more features, and they want them now!"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 95,
                    "byteStart": 94
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ]
                }
              ],
              "plaintext": "Most important of all, I want the AppView to feel human-crafted. It needs a visual style that I contribute, but I haven't spent enough time bringing that to life. I've coded Google Balls into the application, completely unassisted--so I'm pretty proud of that--but there's still room for color, typography, layout refinements, and more goofy three.js vignettes."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Until I've spent time on all those details, I'm not sure that I'll shake the feeling that I'm distributing slop. I want to feel like I'm contributing more of my vision for Trinkets than my agent is--which doesn't have a vision at all."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Perhaps this isn't a battle that I can win, and the only answer will be going cold-turkey on my agent. I don't know right now, but hopefully I'll be able to find answers and come to terms with them by the end of February."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Alright, that's enough journaling for now. Let me know if you're as excited as I am to have Trinkets online. Thanks for reading, and have a great week!"
            }
          }
        ]
      }
    ]
  },
  "bskyPostRef": {
    "cid": "bafyreib7lor5sqfwkgbe3q4zvirl47hqbaasolbesdpgzcq2uf3m7qorba",
    "uri": "at://did:plc:57od6g2ic3e3b3kauctjmo3k/app.bsky.feed.post/3mdvns4sz6223",
    "commit": {
      "cid": "bafyreicmuxsa3d2v7y6gcneabiwmbx4y5f2oro37zqlm7kdg6yqa3nebcm",
      "rev": "3mdvns4vmml2p"
    },
    "validationStatus": "valid"
  },
  "description": "Featuring Trinkets, at long last",
  "publishedAt": "2026-02-02T20:12:05.682Z"
}