{
"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"
}