{
"path": "/3m43bzexuos24",
"site": "at://did:plc:xg2vq45muivyy3xwatcehspu/site.standard.publication/3m3zpxhfl3c2s",
"$type": "site.standard.document",
"title": "Dev Log 1: 2025-10-26",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "This is my second post here on leaflet! I think today's log is a little more refined than yesterday. It's probably because the Dodgers won."
}
},
{
"$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.text",
"facets": [],
"plaintext": "I worked on error boundaries in VoltX and scaffolded some observability enhancements. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Most of my time was spent on workspace level LSP features. The foundation is a dependency graph and the Tarjan SCC (strongly connected components) algorithm. The LSP indexes the workspace, resolves imports, and handles a cache."
}
},
{
"$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.text",
"facets": [],
"plaintext": "As I continue to learn about type inference to solidify my understanding, I plan to keep pushing towards completing the LSP implementation. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"facets": [],
"plaintext": "Static Analysis"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Control & data flow analysis using graphs (per function). This includes narrowing of flow and construction of union types for conditionals (each branch is a member)."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Handle PEP 484/585 type hints & annotations"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Work on diagnostics - I'm a little worried about this one, because I want to create useful messages and I know I'll be second guessing wording."
}
},
{
"$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": "Go Dodgers!"
}
}
]
}
]
},
"bskyPostRef": {
"cid": "bafyreicb5lieghsn734so3xzxazp6x7jxa53q57epbmpovpajaujc4hr4m",
"uri": "at://did:plc:xg2vq45muivyy3xwatcehspu/app.bsky.feed.post/3m43bzigiq224",
"commit": {
"cid": "bafyreiennxktyj73icpkydi7zhzn3y4thy77qp4xrth46b54f6w3h22nvm",
"rev": "3m43bzij54j2a"
},
"validationStatus": "valid"
},
"description": "More LSP adventures",
"publishedAt": "2025-10-26T06:35:55.279Z"
}