From 60231356bbed66e0ae785a71398c3f133513147e Mon Sep 17 00:00:00 2001 From: Ed_ Date: Mon, 27 Jul 2026 01:45:02 -0400 Subject: [PATCH] docs(twitter): add 1870351985855119449 corpus (NOTimothyLottes STORAGE_TEXEL_BUFFER aliasing) 18-post single-author technical walkthrough, 6 PNGs. Defines streaming qualifier alphabet (W=writeonly coherent, R=readonly, A=atomics, E=streaming readonly/exclusive, F=streaming writeonly/final) for future-compat code even though Vulkan is missing them. Only 32/64/128- bit type descriptors kept; type aliasing for fast path, explicit type only when buffer compression might help someday. No 16-bit NORM, no 9E5/sRGB buffer access. AMD buffer atomics get signage from opcode so UINT32 TEXEL buffer can alias r32ui/r32i. Few hundred macros for STB access. Continuation of the bind-everything-once engine cleanup. --- .../media/1870342724538204320_1.png | Bin 0 -> 12494 bytes .../media/1870344199599480840_1.png | Bin 0 -> 6249 bytes .../media/1870344537027092983_1.png | Bin 0 -> 2448 bytes .../media/1870345116373676163_1.png | Bin 0 -> 7912 bytes .../media/1870346478729765374_1.png | Bin 0 -> 36726 bytes .../media/1870351434216329453_1.png | Bin 0 -> 13390 bytes docs/twitter/1870351985855119449/thread.md | 105 ++++++ .../1870351985855119449/thread_data.json | 306 ++++++++++++++++++ 8 files changed, 411 insertions(+) create mode 100644 docs/twitter/1870351985855119449/media/1870342724538204320_1.png create mode 100644 docs/twitter/1870351985855119449/media/1870344199599480840_1.png create mode 100644 docs/twitter/1870351985855119449/media/1870344537027092983_1.png create mode 100644 docs/twitter/1870351985855119449/media/1870345116373676163_1.png create mode 100644 docs/twitter/1870351985855119449/media/1870346478729765374_1.png create mode 100644 docs/twitter/1870351985855119449/media/1870351434216329453_1.png create mode 100644 docs/twitter/1870351985855119449/thread.md create mode 100644 docs/twitter/1870351985855119449/thread_data.json diff --git a/docs/twitter/1870351985855119449/media/1870342724538204320_1.png b/docs/twitter/1870351985855119449/media/1870342724538204320_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c35c64818c87c8d4185b8f5aca0e3708e11d9822 GIT binary patch literal 12494 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 literal 0 HcmV?d00001 diff --git a/docs/twitter/1870351985855119449/media/1870344537027092983_1.png b/docs/twitter/1870351985855119449/media/1870344537027092983_1.png new file mode 100644 index 0000000000000000000000000000000000000000..74d38f009ad215842093ef8841186d2f1fd56906 GIT binary patch literal 2448 zcmb`IdpwhGAII;WRMJ6e>PJiz+KA9km|4l15oV4#tTIAGj$B8(?wuLJXgFYb}E%W*G{6P64;m3wn}zE!vG)xQ8> zf0{;wBJB`fhr)cVV1DzO47;$PIOj6RVz&5PqpjD3ZL`{w7ZsaLG5nF$HB|T*d8=#!}~7@-I%n*oT0vsw2-&o6v!#lo>tYPvPL;kP3;9N z$;jlC1gY<*)5d-3m^(i%9O5QL<7=@H>Cilequ+JDqMECPp(ERrdUfAfI_)MKRUFT6 zjKn(>QRMgqZQbP(StW|vrA!m0ZdI_=B zZV7dRcZwhj&c0E&{mujE(*axdVT5GXSucW@)%Uu|tLWek0uXGSS9sz1oelWWogK6QE~{!=w%_Ki@DCb8ILK)_ zf2qLuTbf1l_IH0h@~20w*Nk3U7id0p;3vocV3sxE2KA`y(YP%<*^$B=n>H0WSL(X^ z(K`G{6KMei{+X)e(SeL@l5S>vy|g}(^WzVXDN9$%*{TcTq^RxU}f`Pp3rgAsr?9Wt5Wdcx*hpqH{-73~d+ z9++XTH$NhwV15>2=9nEx6@mK`=4Vrduk?U&vc3+wrz5*FCdNExb)MHyNlxoC$ZHtk z01Zx+28$4Q5`309!HoFYw= zmiBP^>1&mDJZe1Ow^hV8tSNVB-5_$Vf>$ts64 zDp;~wydgsHxkyj=z?XReMyuu&TYlYxE>A7V{Tsx^Ryf#LNY~m*$K*p)3cO*9t{Db3 z;im+Jkhecdc*U7EOIKZ?y{Ns^Z7I@uQ)~Iul!1qZN!2UG5Z%IY0c-Y{Joct?q_O5F zuPCWB&@xd>ga=r?Y^PkKgQdG704RJ_H$l1|(L;DS93I%=F5f%Kh=U>$jRwatKWdwo zL*f(0@{+4`LU)_~b*VsvXxlYN(172G#e&8Egj0iFGzfW(FkZS&O zu(7Su;P##9wC9NitU%(Ed92b~ODd<-PVhX|(;kgB)aF&C?lS>9e z`NT}w6(ltP|2p-d9lr|~jys#QNQT3Pw=54E_D^}5ueRDTeo5bIKuzUqwsYq_WpDW+ zlWF9uG9Ard@>|SsQ18rM5LV}(utvWcvy6>537;)ym~+Rdpz4YoZqDQ)(MOw6Q6GHC zL|$+R9+5;9KCtxKsq*j^yFH{{S~{HIqX@l&8a9q%+(MUpj@$%)=1mYs(4`}Lv}2*$ zyUE9rGIJtPBImv|a&#l5)^8hqGy89cyn?KR#oi0cU9oPUJ{QNCU;1X(i`WR*y{0*& zw*D7o&*oLf$}M@UoQW7-vDtHp(}{JoyXzB8c*G2s8O)4ec-LMkM#8$4zLLz{he)9p zrG074o~=t;Gw|xd*SD8TSrC=7mmG7jLNNsx*kOJ!OSN zDJ+Mr<^gSDwz1O9rZf{OrKQX%sZ-b_qLIOXryiERAe7Mw#UI!4#E!oC; zpZ%@tJBKLLGWx_~^j(wcwuyf+W)D6tEpZh}#5((jOra?8IIkIe2hCYi@xj{$I z#it^v#@``s-4^8V{l;h({I*Yv;Yz;@J;UcogdEg&eRYbvU$Xl!772IH% zQUAjPS>wa05$$`$)ht~o=eO5vTq9BvIX?*Dz&61RI{Q7IX!D3Cg4}Lj-oYy-xVi7! zO~)voQhIoc-#!K!K4@|}8F>W<$X4pc+0$n8V6$sK;?eBgU^|J|2?)WE2C?a&hgZ3t zNV{%REL-m-lTM&-(^dYNTq5)P^>Cz?D<*|K>}T_8&4 hztV+9l7Ew?Ap?jJ$0TVR$rC>lfkivoR9c@*`7e~^r^f&Q literal 0 HcmV?d00001 diff --git a/docs/twitter/1870351985855119449/media/1870345116373676163_1.png b/docs/twitter/1870351985855119449/media/1870345116373676163_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf01615b5a292dcc252582649e482718df66b71 GIT binary patch literal 7912 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 S8r!+??#d+{wSo&bgZ>W>`P-)e literal 0 HcmV?d00001 diff --git a/docs/twitter/1870351985855119449/media/1870346478729765374_1.png b/docs/twitter/1870351985855119449/media/1870346478729765374_1.png new file mode 100644 index 0000000000000000000000000000000000000000..93a72f35cf6fb5e68c6d834913568a1f2a7fe14c GIT binary patch literal 36726 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 H1ONXAu8{NE literal 0 HcmV?d00001 diff --git a/docs/twitter/1870351985855119449/media/1870351434216329453_1.png b/docs/twitter/1870351985855119449/media/1870351434216329453_1.png new file mode 100644 index 0000000000000000000000000000000000000000..654b020039ae79aa9ebd925448793aece9f7fa6b GIT binary patch literal 13390 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 C*gUKN literal 0 HcmV?d00001 diff --git a/docs/twitter/1870351985855119449/thread.md b/docs/twitter/1870351985855119449/thread.md new file mode 100644 index 00000000..70ec2957 --- /dev/null +++ b/docs/twitter/1870351985855119449/thread.md @@ -0,0 +1,105 @@ +--- +title: "Not sure if this is the end of this story yet, but hopefully the holidays I get " +author: "NOTimothyLottes" +handle: "@NOTimothyLottes" +post_url: "https://x.com/NOTimothyLottes/status/1870351985855119449" +post_id: "1870351985855119449" +timestamp: "2024-12-21 06:13:57" +post_count: 18 +reply_count: 0 +repost_count: 0 +like_count: 2 +view_count: 441 +--- + +# @NOTimothyLottes — Not sure if this is the end of this story yet, but hopefully the holidays I get + +## Post 1 (2024-12-21 05:37:09) + +Hopefully with this last atomic workaround I'm almost done with cleaning and fixing the 'bind-everything-once' style Vulkan engine design. Work in progress in the images that follow. Setting up the macros to get all the format aliasing is well quite ugly. + +![Media 1](./media/1870342724538204320_1.png) + +## Post 2 (2024-12-21 05:38:04) — reply to Post 1 + +I end up doing a lot of duplication via macros since memory qualifiers are on the layout aliasing (instead of an argument to the operation like they should be) ... + +## Post 3 (2024-12-21 05:40:49) — reply to Post 2 + +Vulkan is missing the streaming qualifiers, but I write the code like they exist for future compat +W ... writeonly coherent (all writes) +R ... readonly (all reads) +A ... coherent (atomics) +E ... streaming readonly (aka [E]xclusive) +F ... streaming writeonly (aka [F]inal) + +## Post 4 (2024-12-21 05:43:01) — reply to Post 3 + + + +![Media 1](./media/1870344199599480840_1.png) + +## Post 5 (2024-12-21 05:44:21) — reply to Post 4 + +Texture layout aliasing is well the easy stuff since it's just readonly effectively + +![Media 1](./media/1870344537027092983_1.png) + +## Post 6 (2024-12-21 05:46:39) — reply to Post 5 + +STORAGE_TEXEL_BUFFER is well complex for aliasing and how to best use. Here is what I'm doing for setup (macro heavy). I have a define for each format descriptor index if I want to reorder them by usage for better cache layout. I only keep 32/64/128 bit types + +![Media 1](./media/1870345116373676163_1.png) + +## Post 7 (2024-12-21 05:47:51) — reply to Post 6 + +I didn't put in support for 16-bit NORM yet because it tends not to get used (bad match for FP16). Likewise no buffer access to 9E5 or sRGB due to HW portability support issues + +## Post 8 (2024-12-21 05:52:04) — reply to Post 7 + +So todays HW +(1.) At least for AMD buffer atomics get the signage from the OPCODE so in theory one can use a UINT32 typed TEXEL buffer with both aliased as r32ui and r32i + +![Media 1](./media/1870346478729765374_1.png) + +## Post 9 (2024-12-21 05:53:59) — reply to Post 8 + +(2.) No buffer compression HW, so unlike images, there is no point in using separate types if the layout aliasing trick works. One could get by with just 32/64/128 bit type descriptors and extra ones for anything with format conversion + +## Post 10 (2024-12-21 05:55:51) — reply to Post 9 + +(3.) In cases like x<2,4> actually probably better to alias those at UINTx<1,2> because then one is sure the compiler doesn't screw up the implicit NOPing of the undo the the format conversion! + +## Post 11 (2024-12-21 05:59:25) — reply to Post 10 + +(4.) There is a strong desire to keep the number of descriptors down to avoid extra work in SMEM ops and extra SGPR pressure. So that also favors aliasing. + +## Post 12 (2024-12-21 06:00:24) — reply to Post 11 + +(5.) Ideally I'd want TBUFFER support with the HW grabbing the index width from the type in the opcode instead of the descriptor (but I don't think the HW does that, so probably would always need 3 descriptors minimum). + +## Post 13 (2024-12-21 06:02:44) — reply to Post 12 + +(6.) The future? Image compression relies on having the right type info in the descriptor to choose the right compression mode for decorrelation of the data. What happens if GPUs get buffer compression some day and everyone is just type aliasing all the time like SSBOs do? + +## Post 14 (2024-12-21 06:05:47) — reply to Post 13 + +(7.) What is the "right answer"? Even signed vs unsigned could be important for data decorrelation. Certainly float vs int is. But no one wants to burn perf today based on a guess of what is needed in an unknown future. + +## Post 15 (2024-12-21 06:07:16) — reply to Post 14 + +(8.) So my compromise is to have all the types, but write the code to use type aliasing (the fast path on todays HW) when I don't think data compression would help. And only use the right type (slower) if there is a prediction it might help some day if buffer compression shows up + +## Post 16 (2024-12-21 06:09:04) — reply to Post 15 + +(9.) In cases where I need compression today, then I use explicit 2D images (assuming 1D images don't get compression on some HWs). But note this is not great, because often I need that data back in SGPRs (expensive, SMEM doesn't to image loads) + +## Post 17 (2024-12-21 06:11:46) — reply to Post 16 + +Combining the STORAGE_TEXEL_BUFFER tricks (for something a good compiler could optimize from last week or so), I'm down to a few hundred macros for STB access. Showing a few here. It's ugly but the only way to actually implement well. + +![Media 1](./media/1870351434216329453_1.png) + +## Post 18 (2024-12-21 06:13:57) — reply to Post 17 + +Not sure if this is the end of this story yet, but hopefully the holidays I get this back online and can get back to using it. Probably have it down to as optimal as it can get while being as portable and future looking as possible diff --git a/docs/twitter/1870351985855119449/thread_data.json b/docs/twitter/1870351985855119449/thread_data.json new file mode 100644 index 00000000..57757ccc --- /dev/null +++ b/docs/twitter/1870351985855119449/thread_data.json @@ -0,0 +1,306 @@ +{ + "root_post_id": "1870351985855119449", + "posts": [ + { + "post_id": "1870342724538204320", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "Hopefully with this last atomic workaround I'm almost done with cleaning and fixing the 'bind-everything-once' style Vulkan engine design. Work in progress in the images that follow. Setting up the macros to get all the format aliasing is well quite ugly.", + "timestamp": "2024-12-21 05:37:09", + "media_urls": [ + "https://pbs.twimg.com/media/GfTKfZpWMAAifu3?format=png&name=orig" + ], + "reply_to_id": null, + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 11, + "view_count": 1334 + } + }, + { + "post_id": "1870342953996288347", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "I end up doing a lot of duplication via macros since memory qualifiers are on the layout aliasing (instead of an argument to the operation like they should be) ...", + "timestamp": "2024-12-21 05:38:04", + "media_urls": [], + "reply_to_id": "1870342724538204320", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 0, + "view_count": 147 + } + }, + { + "post_id": "1870343645926224197", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "Vulkan is missing the streaming qualifiers, but I write the code like they exist for future compat\nW ... writeonly coherent (all writes)\nR ... readonly (all reads)\nA ... coherent (atomics)\nE ... streaming readonly (aka [E]xclusive)\nF ... streaming writeonly (aka [F]inal)", + "timestamp": "2024-12-21 05:40:49", + "media_urls": [], + "reply_to_id": "1870342953996288347", + "quote_of_id": null, + "metrics": { + "reply_count": 2, + "repost_count": 0, + "like_count": 0, + "view_count": 180 + } + }, + { + "post_id": "1870344199599480840", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "", + "timestamp": "2024-12-21 05:43:01", + "media_urls": [ + "https://pbs.twimg.com/media/GfTMGj2WcAAoneG?format=png&name=orig" + ], + "reply_to_id": "1870343645926224197", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 0, + "view_count": 126 + } + }, + { + "post_id": "1870344537027092983", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "Texture layout aliasing is well the easy stuff since it's just readonly effectively", + "timestamp": "2024-12-21 05:44:21", + "media_urls": [ + "https://pbs.twimg.com/media/GfTMbIVXEAAqSaA?format=png&name=orig" + ], + "reply_to_id": "1870344199599480840", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 0, + "view_count": 135 + } + }, + { + "post_id": "1870345116373676163", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "STORAGE_TEXEL_BUFFER is well complex for aliasing and how to best use. Here is what I'm doing for setup (macro heavy). I have a define for each format descriptor index if I want to reorder them by usage for better cache layout. I only keep 32/64/128 bit types", + "timestamp": "2024-12-21 05:46:39", + "media_urls": [ + "https://pbs.twimg.com/media/GfTM36hXwAANxQl?format=png&name=orig" + ], + "reply_to_id": "1870344537027092983", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 1, + "view_count": 146 + } + }, + { + "post_id": "1870345417587614054", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "I didn't put in support for 16-bit NORM yet because it tends not to get used (bad match for FP16). Likewise no buffer access to 9E5 or sRGB due to HW portability support issues", + "timestamp": "2024-12-21 05:47:51", + "media_urls": [], + "reply_to_id": "1870345116373676163", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 0, + "view_count": 107 + } + }, + { + "post_id": "1870346478729765374", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "So todays HW\n(1.) At least for AMD buffer atomics get the signage from the OPCODE so in theory one can use a UINT32 typed TEXEL buffer with both aliased as r32ui and r32i", + "timestamp": "2024-12-21 05:52:04", + "media_urls": [ + "https://pbs.twimg.com/media/GfTOBhyWEAAmNzY?format=png&name=orig" + ], + "reply_to_id": "1870345417587614054", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 0, + "view_count": 129 + } + }, + { + "post_id": "1870346962945359928", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "(2.) No buffer compression HW, so unlike images, there is no point in using separate types if the layout aliasing trick works. One could get by with just 32/64/128 bit type descriptors and extra ones for anything with format conversion", + "timestamp": "2024-12-21 05:53:59", + "media_urls": [], + "reply_to_id": "1870346478729765374", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 1, + "view_count": 103 + } + }, + { + "post_id": "1870347429104492943", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "(3.) In cases like x<2,4> actually probably better to alias those at UINTx<1,2> because then one is sure the compiler doesn't screw up the implicit NOPing of the undo the the format conversion!", + "timestamp": "2024-12-21 05:55:51", + "media_urls": [], + "reply_to_id": "1870346962945359928", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 1, + "view_count": 85 + } + }, + { + "post_id": "1870348327763542515", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "(4.) There is a strong desire to keep the number of descriptors down to avoid extra work in SMEM ops and extra SGPR pressure. So that also favors aliasing.", + "timestamp": "2024-12-21 05:59:25", + "media_urls": [], + "reply_to_id": "1870347429104492943", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 1, + "view_count": 78 + } + }, + { + "post_id": "1870348575181295969", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "(5.) Ideally I'd want TBUFFER support with the HW grabbing the index width from the type in the opcode instead of the descriptor (but I don't think the HW does that, so probably would always need 3 descriptors minimum).", + "timestamp": "2024-12-21 06:00:24", + "media_urls": [], + "reply_to_id": "1870348327763542515", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 0, + "view_count": 82 + } + }, + { + "post_id": "1870349164405567671", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "(6.) The future? Image compression relies on having the right type info in the descriptor to choose the right compression mode for decorrelation of the data. What happens if GPUs get buffer compression some day and everyone is just type aliasing all the time like SSBOs do?", + "timestamp": "2024-12-21 06:02:44", + "media_urls": [], + "reply_to_id": "1870348575181295969", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 0, + "view_count": 103 + } + }, + { + "post_id": "1870349929136201894", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "(7.) What is the \"right answer\"? Even signed vs unsigned could be important for data decorrelation. Certainly float vs int is. But no one wants to burn perf today based on a guess of what is needed in an unknown future.", + "timestamp": "2024-12-21 06:05:47", + "media_urls": [], + "reply_to_id": "1870349164405567671", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 0, + "view_count": 82 + } + }, + { + "post_id": "1870350304878711133", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "(8.) So my compromise is to have all the types, but write the code to use type aliasing (the fast path on todays HW) when I don't think data compression would help. And only use the right type (slower) if there is a prediction it might help some day if buffer compression shows up", + "timestamp": "2024-12-21 06:07:16", + "media_urls": [], + "reply_to_id": "1870349929136201894", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 0, + "view_count": 109 + } + }, + { + "post_id": "1870350758744363037", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "(9.) In cases where I need compression today, then I use explicit 2D images (assuming 1D images don't get compression on some HWs). But note this is not great, because often I need that data back in SGPRs (expensive, SMEM doesn't to image loads)", + "timestamp": "2024-12-21 06:09:04", + "media_urls": [], + "reply_to_id": "1870350304878711133", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 0, + "view_count": 141 + } + }, + { + "post_id": "1870351434216329453", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "Combining the STORAGE_TEXEL_BUFFER tricks (for something a good compiler could optimize from last week or so), I'm down to a few hundred macros for STB access. Showing a few here. It's ugly but the only way to actually implement well.", + "timestamp": "2024-12-21 06:11:46", + "media_urls": [ + "https://pbs.twimg.com/media/GfTSkwZWIAAgV-q?format=png&name=orig" + ], + "reply_to_id": "1870350758744363037", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 1, + "view_count": 551 + } + }, + { + "post_id": "1870351985855119449", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "Not sure if this is the end of this story yet, but hopefully the holidays I get this back online and can get back to using it. Probably have it down to as optimal as it can get while being as portable and future looking as possible", + "timestamp": "2024-12-21 06:13:57", + "media_urls": [], + "reply_to_id": "1870351434216329453", + "quote_of_id": null, + "metrics": { + "reply_count": 0, + "repost_count": 0, + "like_count": 2, + "view_count": 441 + } + } + ], + "source_url": "https://x.com/NOTimothyLottes/status/1870351985855119449" +} \ No newline at end of file