From 26f04e6cb0df3a71a50020dafee7804f559b7a53 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Mon, 24 Aug 2026 16:58:16 -0400 Subject: [PATCH] Fix tree rendering. --- ...-see-these-return-still-have-any-of-the.md | 39 +++++ ...mber-watching-all-of-these-blog-entries.md | 35 +++++ ...uutensei-is-the-blog-still-up-somewhere.md | 43 ++++++ ...ticle-based-fluid-sim-mixed-with-spring.md | 132 +++++++++++++++++ ...rite-an-engine-called-atom-talked-about.md | 39 +++++ ...-all-those-fondly-i-also-remembered-the.md | 35 +++++ ...hen-i-learned-about-your-work-and-found.md | 35 +++++ ...s-for-digging-those-up-great-stuff-very.md | 35 +++++ .../index.md | 135 ++++++++++++++++++ .../index.md | 27 ++-- .../index.md | 32 ----- archive/threads/NOTimothyLottes/index.md | 2 +- scripts/twitter/tests/test_emit_op_owned.py | 132 +++++++++++++++++ scripts/twitter/tree.py | 28 ++-- 14 files changed, 697 insertions(+), 52 deletions(-) create mode 100644 archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-BrianKaris-great-to-see-these-return-still-have-any-of-the.md create mode 100644 archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-BrookeHodgman-i-remember-watching-all-of-these-blog-entries.md create mode 100644 archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-Karyuutensei-is-the-blog-still-up-somewhere.md create mode 100644 archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-NOTimothyLottes-2007-particle-based-fluid-sim-mixed-with-spring.md create mode 100644 archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-oconnorkg-did-you-write-an-engine-called-atom-talked-about.md create mode 100644 archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-won3d-i-remember-all-those-fondly-i-also-remembered-the.md create mode 100644 archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-04-Laxer3A-this-is-when-i-learned-about-your-work-and-found.md create mode 100644 archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-06-arm1n-thanks-for-digging-those-up-great-stuff-very.md create mode 100644 archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/index.md delete mode 100644 archive/threads/NOTimothyLottes/2024-02-13-once-upon-a-time-not-up-any-more-lots-of-color/index.md diff --git a/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-BrianKaris-great-to-see-these-return-still-have-any-of-the.md b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-BrianKaris-great-to-see-these-return-still-have-any-of-the.md new file mode 100644 index 0000000..4187d48 --- /dev/null +++ b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-BrianKaris-great-to-see-these-return-still-have-any-of-the.md @@ -0,0 +1,39 @@ +--- +title: "@NOTimothyLottes Great to see these return." +type: archive +source: twitter +source_url: "https://x.com/BrianKaris/status/1653593003368546304" +author: "Brian Karis" +handle: BrianKaris +post_id: "1653593003368546304" +date: 2023-05-03 +archived: 2026-08-24 +draft: false +tags: + - archive + - twitter + - NOTimothyLottes +description: "@NOTimothyLottes Great to see these return." +in_reply_to: "" +parent_post_id: "1653556990302470151" +--- + +## Source + +- URL: https://x.com/BrianKaris/status/1653593003368546304 +- Author: Brian Karis (@BrianKaris) +- Posted: 2023-05-03 02:51:08 + +## Branch + +**1/** + +@NOTimothyLottes Great to see these return. Still have any of the videos? + +**2/** + +@BrianKaris I might, but will have to build a machine to attach the old drives. Too busy making new stuff + +## Related + +- Spine: [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an]] diff --git a/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-BrookeHodgman-i-remember-watching-all-of-these-blog-entries.md b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-BrookeHodgman-i-remember-watching-all-of-these-blog-entries.md new file mode 100644 index 0000000..22dc21c --- /dev/null +++ b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-BrookeHodgman-i-remember-watching-all-of-these-blog-entries.md @@ -0,0 +1,35 @@ +--- +title: "@NOTimothyLottes I remember watching all of these blog entries fondly ❤" +type: archive +source: twitter +source_url: "https://x.com/BrookeHodgman/status/1653666232749682689" +author: "Hodgima Productions ⬛🟡🟥🏳️‍🌈🏳️‍⚧️🍉;" +handle: BrookeHodgman +post_id: "1653666232749682689" +date: 2023-05-03 +archived: 2026-08-24 +draft: false +tags: + - archive + - twitter + - NOTimothyLottes +description: "@NOTimothyLottes I remember watching all of these blog entries fondly ❤" +in_reply_to: "" +parent_post_id: "1653556990302470151" +--- + +## Source + +- URL: https://x.com/BrookeHodgman/status/1653666232749682689 +- Author: Hodgima Productions ⬛🟡🟥🏳️‍🌈🏳️‍⚧️🍉; (@BrookeHodgman) +- Posted: 2023-05-03 07:42:08 + +## Branch + +**1/** + +@NOTimothyLottes I remember watching all of these blog entries fondly ❤ + +## Related + +- Spine: [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an]] diff --git a/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-Karyuutensei-is-the-blog-still-up-somewhere.md b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-Karyuutensei-is-the-blog-still-up-somewhere.md new file mode 100644 index 0000000..9e76515 --- /dev/null +++ b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-Karyuutensei-is-the-blog-still-up-somewhere.md @@ -0,0 +1,43 @@ +--- +title: "@NOTimothyLottes Is the blog still up somewhere?" +type: archive +source: twitter +source_url: "https://x.com/Karyuutensei/status/1653661020026466307" +author: "Nick Tasios" +handle: Karyuutensei +post_id: "1653661020026466307" +date: 2023-05-03 +archived: 2026-08-24 +draft: false +tags: + - archive + - twitter + - NOTimothyLottes +description: "@NOTimothyLottes Is the blog still up somewhere?" +in_reply_to: "" +parent_post_id: "1653556990302470151" +--- + +## Source + +- URL: https://x.com/Karyuutensei/status/1653661020026466307 +- Author: Nick Tasios (@Karyuutensei) +- Posted: 2023-05-03 07:21:25 + +## Branch + +**1/** + +@NOTimothyLottes Is the blog still up somewhere? + +**2/** + +@Karyuutensei No but I have archives in pieces on old hard drives. So there is a chance I might restore it some day. + +**3/** + +@NOTimothyLottes Speaking of archives, http://archive.org has some from the blogspot here https://web.archive.org/web/20160427173127/http://timothylottes.blogspot.com/ but basically nothing from the github page :S + +## Related + +- Spine: [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an]] diff --git a/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-NOTimothyLottes-2007-particle-based-fluid-sim-mixed-with-spring.md b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-NOTimothyLottes-2007-particle-based-fluid-sim-mixed-with-spring.md new file mode 100644 index 0000000..1cc0c48 --- /dev/null +++ b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-NOTimothyLottes-2007-particle-based-fluid-sim-mixed-with-spring.md @@ -0,0 +1,132 @@ +--- +title: "2007 particle based fluid sim mixed with spring model, this was 2D to work out ideas for later 3D implementation, rastered particle properties along particle paths into mip tree to enable high-speed collision" +type: archive +source: twitter +source_url: "https://x.com/NOTimothyLottes/status/1653558383415271424" +author: "NOTimothyLottes" +handle: NOTimothyLottes +post_id: "1653558383415271424" +date: 2023-05-03 +archived: 2026-08-24 +draft: false +tags: + - archive + - twitter + - NOTimothyLottes +description: "2007 particle based fluid sim mixed with spring model, this was 2D to work out ideas for later 3D implementation, rastered particle properties along particle paths into mip tree to enable high-speed collision" +in_reply_to: "" +parent_post_id: "1653556990302470151" +--- + +## Source + +- URL: https://x.com/NOTimothyLottes/status/1653558383415271424 +- Author: NOTimothyLottes (@NOTimothyLottes) +- Posted: 2023-05-03 00:33:34 + +## Branch + +**1/** + +2007 particle based fluid sim mixed with spring model, this was 2D to work out ideas for later 3D implementation, rastered particle properties along particle paths into mip tree to enable high-speed collision + +![](https://pbs.twimg.com/media/FvKd2pZWcAArMRq?format=jpg&name=orig) + +**2/** + +2007 crazy custom language and live editor for x86-64, color forth is like a virus of the mind, no going back once the understanding is there, and the evolutions of those ideas are ground breaking + +![](https://pbs.twimg.com/media/FvKe2FbWcAITJU9?format=jpg&name=orig) + +**3/** + +2010 digital photography, was compositing exposure brackets to get 16-bit tiffs with good dynamic range and did my own development tools (which had some major flaws I'd only learn about much later in life) + +![](https://pbs.twimg.com/media/FvKfd5DXwAIzmaH?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKgFuqWcAA3uQc?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKgJSwWIAIUavB?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKgU0NXoAAaXK4?format=jpg&name=orig) + +**4/** + +2011 Was using temporal reprojection in my own engines for a while. Posted TSSAA source, an early TAA using viewport jitter for tri raster. I was mostly convinved this was a tech dead end due to the challenges of thin flicker. Decade+ later, and this story has a lot more to it .. + +![](https://pbs.twimg.com/media/FvKhxrpXgAEmVaS?format=png&name=orig) +![](https://pbs.twimg.com/media/FvKhzBoXgAABF7I?format=png&name=orig) + +**5/** + +2011 A simple GIF showing the challenges of {perceptual vs linear} filtering with temporal aliasing high frequency content with {small to large kernel windows}. No negative lobes here. + + + +**6/** + +2014 simple anti-aliased point based CS rendering engine with fisheye output using stocastic/stratified visiblity and GPU-side scene graph + +![](https://pbs.twimg.com/media/FvKj76BXwAEDBNO?format=png&name=orig) + +**7/** + +2014 simple non-temporal spatial AA using rotated viewport to provide a good sample distribution with standard non-AA triangle rendering + +![](https://pbs.twimg.com/media/FvKkiT4WAAU2Z3a?format=jpg&name=orig) + +**8/** + +2014 monochrome 120 hz laptop ray marcher desiged for VR, fixed cost trace, leaving scene with holes, temporal holefilling reprojection, faked 'lighting' using hierarchical + directional distance probing in lower LOD scene representations, was amazing to just fly around in there + +![](https://pbs.twimg.com/media/FvKk3NoXwAApx-w?format=png&name=orig) +![](https://pbs.twimg.com/media/FvKk42ZXoAInjtk?format=png&name=orig) + +**9/** + +2014 was amazing how nice it was possible to get the geometry even when tracing only 1/8 the screen pixels per frame, stratified sample pattern really does wonders to neighborhood stability, no flicker at all + +![](https://pbs.twimg.com/media/FvKltaSWcAMg5ke?format=jpg&name=orig) + +**10/** + +2014 still distracted by custom code generation and languages, running stuff on CRTs with custom live editors (color forth like), generating binaries with ELF header generation inside the code itself + +![](https://pbs.twimg.com/media/FvKmJ1aXgAI9Qt9?format=png&name=orig) + +**11/** + +2015 some more images inside the live fractal tracer + +![](https://pbs.twimg.com/media/FvKmsMfWAAIl9g1?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKmtisXsAIC4v-?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKmu0XXsAEP-PW?format=jpg&name=orig) + +**12/** + +2015 crazy mini x86 OS project (bootloader source below), using codeless binary editor with annotation. Everyone should try generating binaries with no assembler, learn alot in the process + +![](https://pbs.twimg.com/media/FvKnKcEXoAA-pjq?format=png&name=orig) + +**13/** + +2015 live realtime 120+ hz on laptop tracer now with spatial/temporal reconstruction on 1 shaded/sample per ray for 'fake' lit fog, did a lot of z based logic in the spatial/temporal reconstruction, realized later I was relying on the 120 Hz to hide perceptual artifacts + +![](https://pbs.twimg.com/media/FvKoJVpWwAA9hUQ?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKoKkEX0AAmyRq?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKoL0ZXoAAkwWj?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKoNDuXgAAbXBM?format=jpg&name=orig) + +**14/** + +2015 still doing the crazy custom languages and tiny OS projects. I feel like there is a real loss in computer evolution, imagine a machine with C64 simplicity that evolved to have a massively parallel vector machine. It would be amazing. It would be approachable by one person. + +![](https://pbs.twimg.com/media/FvKotj4XwAEO-pU?format=png&name=orig) +![](https://pbs.twimg.com/media/FvKovAaWcAADk-H?format=png&name=orig) + +**15/** + +2015 did some custom CPU-side CRT shader tools for high resolution physical paper prints for someone's book. Wasn't trying to be physically accurate, but rather provide the feeling you'd get from a CRT in paper print form + +![](https://pbs.twimg.com/media/FvKplmbXgAISMMM?format=jpg&name=orig) + +## Related + +- Spine: [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an]] diff --git a/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-oconnorkg-did-you-write-an-engine-called-atom-talked-about.md b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-oconnorkg-did-you-write-an-engine-called-atom-talked-about.md new file mode 100644 index 0000000..1df4e85 --- /dev/null +++ b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-oconnorkg-did-you-write-an-engine-called-atom-talked-about.md @@ -0,0 +1,39 @@ +--- +title: "@NOTimothyLottes Did you write an engine called Atom? Talked about it on the http://OpenGL.org forum?" +type: archive +source: twitter +source_url: "https://x.com/oconnorkg/status/1653842852210782209" +author: "Kieran O'Connor" +handle: oconnorkg +post_id: "1653842852210782209" +date: 2023-05-03 +archived: 2026-08-24 +draft: false +tags: + - archive + - twitter + - NOTimothyLottes +description: "@NOTimothyLottes Did you write an engine called Atom? Talked about it on the http://OpenGL.org forum?" +in_reply_to: "" +parent_post_id: "1653556990302470151" +--- + +## Source + +- URL: https://x.com/oconnorkg/status/1653842852210782209 +- Author: Kieran O'Connor (@oconnorkg) +- Posted: 2023-05-03 19:23:57 + +## Branch + +**1/** + +@NOTimothyLottes Did you write an engine called Atom? Talked about it on the http://OpenGL.org forum? + +**2/** + +@oconnorkg There was also Atomontage or something like that by another person. I had a project called Atom, but I don't remember if I was on the OGL message board + +## Related + +- Spine: [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an]] diff --git a/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-won3d-i-remember-all-those-fondly-i-also-remembered-the.md b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-won3d-i-remember-all-those-fondly-i-also-remembered-the.md new file mode 100644 index 0000000..f7b43de --- /dev/null +++ b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-won3d-i-remember-all-those-fondly-i-also-remembered-the.md @@ -0,0 +1,35 @@ +--- +title: "@NOTimothyLottes I remember all those fondly." +type: archive +source: twitter +source_url: "https://x.com/won3d/status/1653557420805767170" +author: "Won Chun" +handle: won3d +post_id: "1653557420805767170" +date: 2023-05-03 +archived: 2026-08-24 +draft: false +tags: + - archive + - twitter + - NOTimothyLottes +description: "@NOTimothyLottes I remember all those fondly." +in_reply_to: "" +parent_post_id: "1653556990302470151" +--- + +## Source + +- URL: https://x.com/won3d/status/1653557420805767170 +- Author: Won Chun (@won3d) +- Posted: 2023-05-03 00:29:45 + +## Branch + +**1/** + +@NOTimothyLottes I remember all those fondly. I also remembered the trick you did to batch logical draw calls with branching in the shader + +## Related + +- Spine: [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an]] diff --git a/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-04-Laxer3A-this-is-when-i-learned-about-your-work-and-found.md b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-04-Laxer3A-this-is-when-i-learned-about-your-work-and-found.md new file mode 100644 index 0000000..243fb50 --- /dev/null +++ b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-04-Laxer3A-this-is-when-i-learned-about-your-work-and-found.md @@ -0,0 +1,35 @@ +--- +title: "@NOTimothyLottes This is when I learned about your work and found it incredible." +type: archive +source: twitter +source_url: "https://x.com/Laxer3A/status/1654169796328423450" +author: "Laxer3A" +handle: Laxer3A +post_id: "1654169796328423450" +date: 2023-05-04 +archived: 2026-08-24 +draft: false +tags: + - archive + - twitter + - NOTimothyLottes +description: "@NOTimothyLottes This is when I learned about your work and found it incredible." +in_reply_to: "" +parent_post_id: "1653570742762479620" +--- + +## Source + +- URL: https://x.com/Laxer3A/status/1654169796328423450 +- Author: Laxer3A (@Laxer3A) +- Posted: 2023-05-04 17:03:07 + +## Branch + +**1/** + +@NOTimothyLottes This is when I learned about your work and found it incredible. Nowadays with 4K / 8K, people are really craving for a very good shader/model to emulate as close as possible the CRT feel for arcade / old console etc. (I am serious) + +## Related + +- Spine: [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an]] diff --git a/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-06-arm1n-thanks-for-digging-those-up-great-stuff-very.md b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-06-arm1n-thanks-for-digging-those-up-great-stuff-very.md new file mode 100644 index 0000000..ffb84cf --- /dev/null +++ b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-06-arm1n-thanks-for-digging-those-up-great-stuff-very.md @@ -0,0 +1,35 @@ +--- +title: "@NOTimothyLottes Thanks for digging those up! Great stuff, very inspiring." +type: archive +source: twitter +source_url: "https://x.com/arm1n/status/1654835157789016064" +author: "Armin Jahanpanah" +handle: arm1n +post_id: "1654835157789016064" +date: 2023-05-06 +archived: 2026-08-24 +draft: false +tags: + - archive + - twitter + - NOTimothyLottes +description: "@NOTimothyLottes Thanks for digging those up! Great stuff, very inspiring." +in_reply_to: "" +parent_post_id: "1653556990302470151" +--- + +## Source + +- URL: https://x.com/arm1n/status/1654835157789016064 +- Author: Armin Jahanpanah (@arm1n) +- Posted: 2023-05-06 13:07:01 + +## Branch + +**1/** + +@NOTimothyLottes Thanks for digging those up! Great stuff, very inspiring. + +## Related + +- Spine: [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an]] diff --git a/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/index.md b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/index.md new file mode 100644 index 0000000..1c65485 --- /dev/null +++ b/archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/index.md @@ -0,0 +1,135 @@ +--- +title: "Found some of my old blogs: thread looking back an image at a time." +type: archive +source: twitter +source_url: "https://x.com/NOTimothyLottes/status/1653556990302470151" +author: "NOTimothyLottes" +handle: NOTimothyLottes +post_id: "1653556990302470151" +date: 2023-05-03 +archived: 2026-08-24 +draft: false +tags: + - archive + - twitter + - NOTimothyLottes +description: "Found some of my old blogs: thread looking back an image at a time." +in_reply_to: "" +--- + +## Source + +- URL: https://x.com/NOTimothyLottes/status/1653556990302470151 +- Author: NOTimothyLottes (@NOTimothyLottes) +- Posted: 2023-05-03 00:28:02 + +## Thread + +**1/** + +Found some of my old blogs: thread looking back an image at a time. 2007, ellipsoid l-system sprites with temporal feedback, yes temporal reprojection in 2007. + +![](https://pbs.twimg.com/media/FvKcwX2WIAQNIjp?format=jpg&name=orig) + +Branches: [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-won3d-i-remember-all-those-fondly-i-also-remembered-the]], [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-BrianKaris-great-to-see-these-return-still-have-any-of-the]], [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-Karyuutensei-is-the-blog-still-up-somewhere]], [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-BrookeHodgman-i-remember-watching-all-of-these-blog-entries]], [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-03-oconnorkg-did-you-write-an-engine-called-atom-talked-about]], [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an/2023-05-06-arm1n-thanks-for-digging-those-up-great-stuff-very]] + +**2/** + +2007 particle based fluid sim mixed with spring model, this was 2D to work out ideas for later 3D implementation, rastered particle properties along particle paths into mip tree to enable high-speed collision + +![](https://pbs.twimg.com/media/FvKd2pZWcAArMRq?format=jpg&name=orig) + +**3/** + +2007 crazy custom language and live editor for x86-64, color forth is like a virus of the mind, no going back once the understanding is there, and the evolutions of those ideas are ground breaking + +![](https://pbs.twimg.com/media/FvKe2FbWcAITJU9?format=jpg&name=orig) + +**4/** + +2010 digital photography, was compositing exposure brackets to get 16-bit tiffs with good dynamic range and did my own development tools (which had some major flaws I'd only learn about much later in life) + +![](https://pbs.twimg.com/media/FvKfd5DXwAIzmaH?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKgFuqWcAA3uQc?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKgJSwWIAIUavB?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKgU0NXoAAaXK4?format=jpg&name=orig) + +**5/** + +2011 Was using temporal reprojection in my own engines for a while. Posted TSSAA source, an early TAA using viewport jitter for tri raster. I was mostly convinved this was a tech dead end due to the challenges of thin flicker. Decade+ later, and this story has a lot more to it .. + +![](https://pbs.twimg.com/media/FvKhxrpXgAEmVaS?format=png&name=orig) +![](https://pbs.twimg.com/media/FvKhzBoXgAABF7I?format=png&name=orig) + +**6/** + +2011 A simple GIF showing the challenges of {perceptual vs linear} filtering with temporal aliasing high frequency content with {small to large kernel windows}. No negative lobes here. + + + +**7/** + +2014 simple anti-aliased point based CS rendering engine with fisheye output using stocastic/stratified visiblity and GPU-side scene graph + +![](https://pbs.twimg.com/media/FvKj76BXwAEDBNO?format=png&name=orig) + +**8/** + +2014 simple non-temporal spatial AA using rotated viewport to provide a good sample distribution with standard non-AA triangle rendering + +![](https://pbs.twimg.com/media/FvKkiT4WAAU2Z3a?format=jpg&name=orig) + +**9/** + +2014 monochrome 120 hz laptop ray marcher desiged for VR, fixed cost trace, leaving scene with holes, temporal holefilling reprojection, faked 'lighting' using hierarchical + directional distance probing in lower LOD scene representations, was amazing to just fly around in there + +![](https://pbs.twimg.com/media/FvKk3NoXwAApx-w?format=png&name=orig) +![](https://pbs.twimg.com/media/FvKk42ZXoAInjtk?format=png&name=orig) + +**10/** + +2014 was amazing how nice it was possible to get the geometry even when tracing only 1/8 the screen pixels per frame, stratified sample pattern really does wonders to neighborhood stability, no flicker at all + +![](https://pbs.twimg.com/media/FvKltaSWcAMg5ke?format=jpg&name=orig) + +**11/** + +2014 still distracted by custom code generation and languages, running stuff on CRTs with custom live editors (color forth like), generating binaries with ELF header generation inside the code itself + +![](https://pbs.twimg.com/media/FvKmJ1aXgAI9Qt9?format=png&name=orig) + +**12/** + +2015 some more images inside the live fractal tracer + +![](https://pbs.twimg.com/media/FvKmsMfWAAIl9g1?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKmtisXsAIC4v-?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKmu0XXsAEP-PW?format=jpg&name=orig) + +**13/** + +2015 crazy mini x86 OS project (bootloader source below), using codeless binary editor with annotation. Everyone should try generating binaries with no assembler, learn alot in the process + +![](https://pbs.twimg.com/media/FvKnKcEXoAA-pjq?format=png&name=orig) + +**14/** + +2015 live realtime 120+ hz on laptop tracer now with spatial/temporal reconstruction on 1 shaded/sample per ray for 'fake' lit fog, did a lot of z based logic in the spatial/temporal reconstruction, realized later I was relying on the 120 Hz to hide perceptual artifacts + +![](https://pbs.twimg.com/media/FvKoJVpWwAA9hUQ?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKoKkEX0AAmyRq?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKoL0ZXoAAkwWj?format=jpg&name=orig) +![](https://pbs.twimg.com/media/FvKoNDuXgAAbXBM?format=jpg&name=orig) + +**15/** + +2015 still doing the crazy custom languages and tiny OS projects. I feel like there is a real loss in computer evolution, imagine a machine with C64 simplicity that evolved to have a massively parallel vector machine. It would be amazing. It would be approachable by one person. + +![](https://pbs.twimg.com/media/FvKotj4XwAEO-pU?format=png&name=orig) +![](https://pbs.twimg.com/media/FvKovAaWcAADk-H?format=png&name=orig) + +**16/** + +2015 did some custom CPU-side CRT shader tools for high resolution physical paper prints for someone's book. Wasn't trying to be physically accurate, but rather provide the feeling you'd get from a CRT in paper print form + +![](https://pbs.twimg.com/media/FvKplmbXgAISMMM?format=jpg&name=orig) diff --git a/archive/threads/NOTimothyLottes/2023-12-19-multi-session-is-nice-since-the-binary-auto/index.md b/archive/threads/NOTimothyLottes/2023-12-19-multi-session-is-nice-since-the-binary-auto/index.md index e36244e..380b6e9 100644 --- a/archive/threads/NOTimothyLottes/2023-12-19-multi-session-is-nice-since-the-binary-auto/index.md +++ b/archive/threads/NOTimothyLottes/2023-12-19-multi-session-is-nice-since-the-binary-auto/index.md @@ -1,30 +1,41 @@ --- -title: "Multi-session is nice, since the binary auto reloads in some cases (crash, etc), want to see why the reload happened, so don't want to clear the log." +title: "Working towards a public-domain release of a cleaned version of my Win32 Vulkan NV+AMD compute graphics platform." type: archive source: twitter -source_url: "https://x.com/NOTimothyLottes/status/1737201090058219980" +source_url: "https://x.com/NOTimothyLottes/status/1737198887914377512" author: "NOTimothyLottes" handle: NOTimothyLottes -post_id: "1737201090058219980" +post_id: "1737198887914377512" date: 2023-12-19 -archived: 2026-08-23 -draft: true +archived: 2026-08-24 +draft: false tags: - archive - twitter - NOTimothyLottes -description: "Multi-session is nice, since the binary auto reloads in some cases (crash, etc), want to see why the reload happened, so don't want to clear the log." +description: "Working towards a public-domain release of a cleaned version of my Win32 Vulkan NV+AMD compute graphics platform." in_reply_to: "" --- ## Source -- URL: https://x.com/NOTimothyLottes/status/1737201090058219980 +- URL: https://x.com/NOTimothyLottes/status/1737198887914377512 - Author: NOTimothyLottes (@NOTimothyLottes) -- Posted: 2023-12-19 19:59:50 +- Posted: 2023-12-19 19:51:05 ## Thread **1/** +Working towards a public-domain release of a cleaned version of my Win32 Vulkan NV+AMD compute graphics platform. What I used last for rapid prototyping (which is also IMO fine for releasable software). Won't call it an 'Engine' because it only provides tools to hang yourself ... + +**2/** + +Simplified the error logger today. Memory mapped file is definitely the way to go, one atomic per message, log multiple sessions, fixed size file acts like a message ring buffer. Background thread keeps the last message updating the same line on the console (for easy debug). + +![](https://pbs.twimg.com/media/GBvFvOXXMAAFLXS?format=png&name=orig) +![](https://pbs.twimg.com/media/GBvFvOWX0AAxSuU?format=png&name=orig) + +**3/** + Multi-session is nice, since the binary auto reloads in some cases (crash, etc), want to see why the reload happened, so don't want to clear the log. Yes, I still don't use debuggers, this logger + runtime shader recompile is all I use personally for dev work. diff --git a/archive/threads/NOTimothyLottes/2024-02-13-once-upon-a-time-not-up-any-more-lots-of-color/index.md b/archive/threads/NOTimothyLottes/2024-02-13-once-upon-a-time-not-up-any-more-lots-of-color/index.md deleted file mode 100644 index 87f1240..0000000 --- a/archive/threads/NOTimothyLottes/2024-02-13-once-upon-a-time-not-up-any-more-lots-of-color/index.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: "@hotmultimedia Once upon a time." -type: archive -source: twitter -source_url: "https://x.com/NOTimothyLottes/status/1757198624818168210" -author: "NOTimothyLottes" -handle: NOTimothyLottes -post_id: "1757198624818168210" -date: 2024-02-13 -archived: 2026-08-23 -draft: true -tags: - - archive - - twitter - - NOTimothyLottes -description: "@hotmultimedia Once upon a time." -in_reply_to: "1757181664126444015" ---- - -## Source - -- URL: https://x.com/NOTimothyLottes/status/1757198624818168210 -- Author: NOTimothyLottes (@NOTimothyLottes) -- Posted: 2024-02-13 00:22:53 - -> @NOTimothyLottes Have you ever blogged details about the syntax of your Forth tools? - -## Thread - -**1/** - -@hotmultimedia Once upon a time. Not up any more. Lots of color-forth inspired variations. Designed to make x86 code generation easy. Last language effort for RDNA2 code gen wasn't forth-like though, focused on GPU compiling it's own code in parallel on the GPU (SIMD). diff --git a/archive/threads/NOTimothyLottes/index.md b/archive/threads/NOTimothyLottes/index.md index b6b1a43..0ce5d5d 100644 --- a/archive/threads/NOTimothyLottes/index.md +++ b/archive/threads/NOTimothyLottes/index.md @@ -14,6 +14,7 @@ tags: - [[archive/threads/NOTimothyLottes/2022-11-08-example-of-bind-everything-once-layout-aliasing]] - [[archive/threads/NOTimothyLottes/2022-11-09-if-only-pc-vendors-with-open-isas-amd-intel-would]] - [[archive/threads/NOTimothyLottes/2022-11-13-my-prefered-method-of-managing-application-data]] +- [[archive/threads/NOTimothyLottes/2023-05-03-found-some-of-my-old-blogs-thread-looking-back-an]] - [[archive/threads/NOTimothyLottes/2023-06-30-nothing-oriented-programming-nop-where-the-goal]] - [[archive/threads/NOTimothyLottes/2023-08-03-spc-using-8-deep-swap-all-aliasing-same-bo-image]] - [[archive/threads/NOTimothyLottes/2023-08-04-for-anyone-tuning-in-now-spc-is-kind-of-like-a]] @@ -25,7 +26,6 @@ tags: - [[archive/threads/NOTimothyLottes/2023-12-15-long-thread]] - [[archive/threads/NOTimothyLottes/2023-12-16-if-there-is-anything-to-learn-for-programming-it]] - [[archive/threads/NOTimothyLottes/2023-12-19-multi-session-is-nice-since-the-binary-auto]] -- [[archive/threads/NOTimothyLottes/2024-02-13-once-upon-a-time-not-up-any-more-lots-of-color]] - [[archive/threads/NOTimothyLottes/2024-04-06-on-https-mastodon-gamedev-place-notimothylottes]] - [[archive/threads/NOTimothyLottes/2024-05-04-it-was-only-later-when-systems-forced-c-abi]] - [[archive/threads/NOTimothyLottes/2024-11-16-that-line-of-thinking-is-universal-solution-to]] diff --git a/scripts/twitter/tests/test_emit_op_owned.py b/scripts/twitter/tests/test_emit_op_owned.py index c73b3b4..0cc16b0 100644 --- a/scripts/twitter/tests/test_emit_op_owned.py +++ b/scripts/twitter/tests/test_emit_op_owned.py @@ -516,5 +516,137 @@ class OrphansNotReusedTests(unittest.TestCase): ) +class SpinePrefersSameAuthorTests(unittest.TestCase): + """The spine walker must prefer the OP's own same-handle chain + over cross-author replies. When the OP has a self-reply plus + other-author replies to the same post, the self-reply continues + the spine and the cross-author replies become branches.""" + + def setUp(self) -> None: + self.tmp = Path(tempfile.mkdtemp(prefix="spine_same_author_")) + self.input_dir = self.tmp / "input" + self.input_dir.mkdir() + self.vault = self.tmp / "vault" + (self.vault / "archive" / "threads").mkdir(parents=True) + (self.vault / "assets" / "threads").mkdir(parents=True) + + def tearDown(self) -> None: + shutil.rmtree(self.tmp, ignore_errors=True) + + def test_op_with_self_reply_continues_spine(self) -> None: + """OP has children including a self-reply and a cross-author + reply that arrived FIRST chronologically. Spine should walk + the OP's self-reply chain, not stop at the cross-author reply. + """ + # OP at 00:00. won3d replies at 00:01 (cross-author, earliest). + # Lottes self-replies at 00:05 (later, same handle, continues + # the spine). + thread_data = { + "root_post_id": "1000", + "source_url": "https://x.com/i/status/1000", + "posts": [ + { + "post_id": "1000", + "author": "OP", + "handle": "OP", + "text": "OP post", + "timestamp": "2023-01-01 00:00:00", + "media_urls": [], + "reply_to_id": None, + "quote_of_id": None, + "metrics": { + "reply_count": 0, + "repost_count": 0, + "like_count": 0, + "view_count": 0, + }, + }, + { + "post_id": "1001", + "author": "won3d", + "handle": "won3d", + "text": "early reply from outsider", + "timestamp": "2023-01-01 00:01:00", + "media_urls": [], + "reply_to_id": "1000", + "quote_of_id": None, + "metrics": { + "reply_count": 0, + "repost_count": 0, + "like_count": 0, + "view_count": 0, + }, + }, + { + "post_id": "1002", + "author": "OP", + "handle": "OP", + "text": "OP self-reply continues the thread", + "timestamp": "2023-01-01 00:05:00", + "media_urls": [], + "reply_to_id": "1000", + "quote_of_id": None, + "metrics": { + "reply_count": 0, + "repost_count": 0, + "like_count": 0, + "view_count": 0, + }, + }, + { + "post_id": "1003", + "author": "OP", + "handle": "OP", + "text": "OP continues again", + "timestamp": "2023-01-01 00:10:00", + "media_urls": [], + "reply_to_id": "1002", + "quote_of_id": None, + "metrics": { + "reply_count": 0, + "repost_count": 0, + "like_count": 0, + "view_count": 0, + }, + }, + ], + } + (self.input_dir / "thread_data.json").write_text( + json.dumps(thread_data, indent=2), + encoding="utf-8", + newline="\n", + ) + + emit( + input_dir=self.input_dir, + vault=self.vault, + slug=None, + archived="2026-08-24", + force=True, + ) + + archive_root = self.vault / "archive" / "threads" + thread_dir = next( + d for d in (archive_root / "OP").iterdir() if d.is_dir() + ) + text = (thread_dir / "index.md").read_text(encoding="utf-8") + # The spine should have 3 OP posts in order: 1000, 1002, 1003. + # won3d's post 1001 should be a branch (separate file). + self.assertIn("**1/**", text) + self.assertIn("**2/**", text) + self.assertIn("**3/**", text) + # won3d's text appears only in the branch file, not in the spine. + won3d_spine_mentions = text.count("early reply from outsider") + self.assertEqual(won3d_spine_mentions, 0) + # A branch file for won3d exists. + branch_files = [ + f for f in thread_dir.iterdir() + if f.is_file() and f.name != "index.md" + ] + self.assertEqual(len(branch_files), 1) + branch_text = branch_files[0].read_text(encoding="utf-8") + self.assertIn("early reply from outsider", branch_text) + + if __name__ == "__main__": unittest.main() \ No newline at end of file diff --git a/scripts/twitter/tree.py b/scripts/twitter/tree.py index d04f157..b657054 100644 --- a/scripts/twitter/tree.py +++ b/scripts/twitter/tree.py @@ -45,18 +45,22 @@ def spine_from_tip(thread: ThreadData, tip_id: str) -> list[str]: def spine_ids(thread: ThreadData) -> list[str]: - """Walk the linear reply chain from the OP (the post with - `reply_to_id == None`) down through `children_map`, picking the - first child at each level (already sorted by `(timestamp, - post_id)`). + """Walk the OP's own chain down through `children_map`. - The walk crosses handle boundaries. For a chain that alternates - authors (e.g., rianflo ↔ NOTimothyLottes), every post on the - chain is included. The archive dir for the thread is owned by - the OP — the first post in the returned list. + At each level, prefer a same-handle child (to continue the OP's + own chain) over any child. Fall back to the earliest child when + no same-handle child exists. - If no post has `reply_to_id == None`, the first post in - `thread.posts` is used as a fallback start. + The OP is the post with `reply_to_id == None`. The returned + list is the OP's chain: the OP at index 0, then same-author + replies in chronological order. Cross-author replies to spine + posts are branches (rendered as separate files by the emit). + + For a thread where the OP has no self-replies but cross-author + replies (e.g., a post that attracted only outside replies), the + walker picks the earliest child to start a chain — that branch + becomes the only spine entry after the OP, and any other + children of the OP become branches. """ ids = by_id(thread) kids = children_map(thread) @@ -65,13 +69,15 @@ def spine_ids(thread: ThreadData) -> list[str]: start = ops[0] else: start = thread.posts[0].post_id + handle = ids[start].handle out = [start] cur = start while True: children = kids.get(cur, []) if not children: break - cur = children[0] + same = [c for c in children if ids[c].handle == handle] + cur = same[0] if same else children[0] out.append(cur) return out