{
"path": "/3m4qlf24bd22z",
"site": "at://did:plc:xg2vq45muivyy3xwatcehspu/site.standard.publication/3m3zpxhfl3c2s",
"$type": "site.standard.document",
"title": "Dev Log 7: 2025-11-03",
"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": "What I Learned"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 86,
"byteStart": 83
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
},
{
"index": {
"byteEnd": 96,
"byteStart": 93
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "Yesterday I learned how blissfully unaware I've been about the power of tools like sed & the awk language."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "What I'm Doing"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Brush up on my understanding of regular expressions, which admittedly is grossly limited."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I am seeing a ton of false positives when running Beacon in VSCode. So far today I've made changes to the level of strictness in type checking to handle common Python patterns. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Namely, there's no explicit Option/Maybe type but None should be unified. Type checkers and type systems are not easy to wrangle. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 6,
"byteStart": 2
},
"features": [
{
"uri": "https://desertthunder.substack.com/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 10,
"byteStart": 7
},
"features": [
{
"uri": "https://desertthunder.dev",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 15,
"byteStart": 11
},
"features": [
{
"uri": "https://desertthunder.bearblog.dev/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 21,
"byteStart": 16
},
"features": [
{
"uri": "https://desertthunder.medium.com/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 291,
"byteStart": 283
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "I have too many blogs, which I'm totally okay with if I'm being honest. This one serves a particular purpose and helps me assess my work. I'm thinking, for the blogging platforms, that I create digests of all my work. It would be a good test of the pull mechanism/command I added to noteleaf to download all of my dev logs. Maybe I'll figure out how to sync with bearblog."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Projects"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 38,
"byteStart": 32
},
"features": [
{
"uri": "https://github.com/stormlightlabs/beacon",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 45,
"byteStart": 41
},
"features": [
{
"uri": "https://stormlightlabs.github.io/beacon/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Beacon - a HM based Python LSP (source | docs) "
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 111,
"byteStart": 105
},
"features": [
{
"uri": "https://tangled.org/@desertthunder.dev/noteleaf",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Noteleaf - TaskWarrior + CLI Letterboxd/Goodreads or Storygraph with an in-progress leaflet integration (source)"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
}
]
}
]
},
"bskyPostRef": {
"cid": "bafyreigy5ou4fsxy4mbzukwgyhlt575x4nre2mlidltwtdu2ql33xdqyde",
"uri": "at://did:plc:xg2vq45muivyy3xwatcehspu/app.bsky.feed.post/3m4qlf7fmbc2z",
"commit": {
"cid": "bafyreihd3qqwd4oar3uwmbtb34smochr5x7hxijhjg3isdokxtfdpwj7ze",
"rev": "3m4qlf7i2vl2t"
},
"validationStatus": "valid"
},
"description": "feeling awk-ward",
"publishedAt": "2025-11-03T17:49:24.724Z"
}