samples
|
After Width: | Height: | Size: 125 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 150 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 224 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 731 KiB |
|
After Width: | Height: | Size: 616 KiB |
|
After Width: | Height: | Size: 218 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 260 KiB |
@@ -0,0 +1,134 @@
|
||||
---
|
||||
title: "@hotmultimedia Once upon a time. Not up any more. Lots of color-forth inspired v"
|
||||
author: "NOTimothyLottes"
|
||||
handle: "@NOTimothyLottes"
|
||||
post_url: "https://x.com/NOTimothyLottes/status/1757198624818168210"
|
||||
post_id: "1757198624818168210"
|
||||
timestamp: "2024-02-13 00:22:53"
|
||||
post_count: 19
|
||||
reply_count: 0
|
||||
repost_count: 0
|
||||
like_count: 0
|
||||
view_count: 71
|
||||
---
|
||||
|
||||
# @NOTimothyLottes — @hotmultimedia Once upon a time. Not up any more. Lots of color-forth inspired v
|
||||
|
||||
## Post 1 (2023-05-03 00:28:02)
|
||||
|
||||
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.
|
||||
|
||||
[Media 1](./media/1653556990302470151_1.jpg)
|
||||
|
||||
## Post 2 (2023-05-03 00:33:34) — reply to Post 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
|
||||
|
||||
[Media 1](./media/1653558383415271424_1.jpg)
|
||||
|
||||
## Post 3 (2023-05-03 00:36:50) — reply to Post 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
|
||||
|
||||
[Media 1](./media/1653559205360553985_1.jpg)
|
||||
|
||||
## Post 4 (2023-05-03 00:44:18) — reply to Post 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)
|
||||
|
||||
[Media 1](./media/1653561084429713408_1.jpg)
|
||||
[Media 2](./media/1653561084429713408_2.jpg)
|
||||
[Media 3](./media/1653561084429713408_3.jpg)
|
||||
[Media 4](./media/1653561084429713408_4.jpg)
|
||||
|
||||
## Post 5 (2023-05-03 00:52:17) — reply to Post 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 ..
|
||||
|
||||
[Media 1](./media/1653563093106974728_1.png)
|
||||
[Media 2](./media/1653563093106974728_2.png)
|
||||
|
||||
## Post 6 (2023-05-03 00:55:55) — reply to Post 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.
|
||||
|
||||
[Media 1](./media/1653564005888274432_1.mp4)
|
||||
|
||||
## Post 7 (2023-05-03 00:58:47) — reply to Post 6
|
||||
|
||||
2014 simple anti-aliased point based CS rendering engine with fisheye output using stocastic/stratified visiblity and GPU-side scene graph
|
||||
|
||||
[Media 1](./media/1653564728440942592_1.png)
|
||||
|
||||
## Post 8 (2023-05-03 01:00:30) — reply to Post 7
|
||||
|
||||
2014 simple non-temporal spatial AA using rotated viewport to provide a good sample distribution with standard non-AA triangle rendering
|
||||
|
||||
[Media 1](./media/1653565160605270016_1.jpg)
|
||||
|
||||
## Post 9 (2023-05-03 01:04:09) — reply to Post 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
|
||||
|
||||
[Media 1](./media/1653566080235761669_1.png)
|
||||
[Media 2](./media/1653566080235761669_2.png)
|
||||
|
||||
## Post 10 (2023-05-03 01:06:02) — reply to Post 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
|
||||
|
||||
[Media 1](./media/1653566551818207232_1.jpg)
|
||||
|
||||
## Post 11 (2023-05-03 01:07:37) — reply to Post 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
|
||||
|
||||
[Media 1](./media/1653566948897062914_1.png)
|
||||
|
||||
## Post 12 (2023-05-03 01:09:36) — reply to Post 11
|
||||
|
||||
2015 some more images inside the live fractal tracer
|
||||
|
||||
[Media 1](./media/1653567451315986432_1.jpg)
|
||||
[Media 2](./media/1653567451315986432_2.jpg)
|
||||
[Media 3](./media/1653567451315986432_3.jpg)
|
||||
|
||||
## Post 13 (2023-05-03 01:12:54) — reply to Post 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
|
||||
|
||||
[Media 1](./media/1653568279271682052_1.png)
|
||||
|
||||
## Post 14 (2023-05-03 01:16:54) — reply to Post 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
|
||||
|
||||
[Media 1](./media/1653569285048918018_1.jpg)
|
||||
[Media 2](./media/1653569285048918018_2.jpg)
|
||||
[Media 3](./media/1653569285048918018_3.jpg)
|
||||
[Media 4](./media/1653569285048918018_4.jpg)
|
||||
|
||||
## Post 15 (2023-05-03 01:20:01) — reply to Post 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.
|
||||
|
||||
[Media 1](./media/1653570073288757253_1.png)
|
||||
[Media 2](./media/1653570073288757253_2.png)
|
||||
|
||||
## Post 16 (2023-05-03 01:22:41) — reply to Post 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
|
||||
|
||||
[Media 1](./media/1653570742762479620_1.jpg)
|
||||
|
||||
## Post 17 (2023-05-04 17:03:07) — reply to Post 16
|
||||
|
||||
@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)
|
||||
|
||||
## Post 18 (2024-02-12 23:15:30) — reply to Post 15
|
||||
|
||||
@NOTimothyLottes Have you ever blogged details about the syntax of your Forth tools?
|
||||
|
||||
## Post 19 (2024-02-13 00:22:53) — reply to Post 18
|
||||
|
||||
@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).
|
||||
@@ -0,0 +1,361 @@
|
||||
{
|
||||
"root_post_id": "1757198624818168210",
|
||||
"posts": [
|
||||
{
|
||||
"post_id": "1653556990302470151",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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.",
|
||||
"timestamp": "2023-05-03 00:28:02",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKcwX2WIAQNIjp?format=jpg&name=orig"
|
||||
],
|
||||
"reply_to_id": null,
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 7,
|
||||
"repost_count": 6,
|
||||
"like_count": 53,
|
||||
"view_count": 14446
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653558383415271424",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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",
|
||||
"timestamp": "2023-05-03 00:33:34",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKd2pZWcAArMRq?format=jpg&name=orig"
|
||||
],
|
||||
"reply_to_id": "1653556990302470151",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 4,
|
||||
"view_count": 722
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653559205360553985",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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",
|
||||
"timestamp": "2023-05-03 00:36:50",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKe2FbWcAITJU9?format=jpg&name=orig"
|
||||
],
|
||||
"reply_to_id": "1653558383415271424",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 2,
|
||||
"repost_count": 0,
|
||||
"like_count": 10,
|
||||
"view_count": 746
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653561084429713408",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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)",
|
||||
"timestamp": "2023-05-03 00:44:18",
|
||||
"media_urls": [
|
||||
"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"
|
||||
],
|
||||
"reply_to_id": "1653559205360553985",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 2,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 695
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653563093106974728",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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 ..",
|
||||
"timestamp": "2023-05-03 00:52:17",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKhxrpXgAEmVaS?format=png&name=orig",
|
||||
"https://pbs.twimg.com/media/FvKhzBoXgAABF7I?format=png&name=orig"
|
||||
],
|
||||
"reply_to_id": "1653561084429713408",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 2,
|
||||
"view_count": 645
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653564005888274432",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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.",
|
||||
"timestamp": "2023-05-03 00:55:55",
|
||||
"media_urls": [
|
||||
"https://video.twimg.com/tweet_video/FvKi92TWcAA19un.mp4"
|
||||
],
|
||||
"reply_to_id": "1653563093106974728",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 2,
|
||||
"view_count": 588
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653564728440942592",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "2014 simple anti-aliased point based CS rendering engine with fisheye output using stocastic/stratified visiblity and GPU-side scene graph",
|
||||
"timestamp": "2023-05-03 00:58:47",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKj76BXwAEDBNO?format=png&name=orig"
|
||||
],
|
||||
"reply_to_id": "1653564005888274432",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 3,
|
||||
"view_count": 581
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653565160605270016",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "2014 simple non-temporal spatial AA using rotated viewport to provide a good sample distribution with standard non-AA triangle rendering",
|
||||
"timestamp": "2023-05-03 01:00:30",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKkiT4WAAU2Z3a?format=jpg&name=orig"
|
||||
],
|
||||
"reply_to_id": "1653564728440942592",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 592
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653566080235761669",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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",
|
||||
"timestamp": "2023-05-03 01:04:09",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKk3NoXwAApx-w?format=png&name=orig",
|
||||
"https://pbs.twimg.com/media/FvKk42ZXoAInjtk?format=png&name=orig"
|
||||
],
|
||||
"reply_to_id": "1653565160605270016",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 6,
|
||||
"view_count": 636
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653566551818207232",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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",
|
||||
"timestamp": "2023-05-03 01:06:02",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKltaSWcAMg5ke?format=jpg&name=orig"
|
||||
],
|
||||
"reply_to_id": "1653566080235761669",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 587
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653566948897062914",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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",
|
||||
"timestamp": "2023-05-03 01:07:37",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKmJ1aXgAI9Qt9?format=png&name=orig"
|
||||
],
|
||||
"reply_to_id": "1653566551818207232",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 3,
|
||||
"view_count": 619
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653567451315986432",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "2015 some more images inside the live fractal tracer",
|
||||
"timestamp": "2023-05-03 01:09:36",
|
||||
"media_urls": [
|
||||
"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"
|
||||
],
|
||||
"reply_to_id": "1653566948897062914",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 5,
|
||||
"view_count": 659
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653568279271682052",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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",
|
||||
"timestamp": "2023-05-03 01:12:54",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKnKcEXoAA-pjq?format=png&name=orig"
|
||||
],
|
||||
"reply_to_id": "1653567451315986432",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 6,
|
||||
"view_count": 911
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653569285048918018",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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",
|
||||
"timestamp": "2023-05-03 01:16:54",
|
||||
"media_urls": [
|
||||
"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"
|
||||
],
|
||||
"reply_to_id": "1653568279271682052",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 2,
|
||||
"repost_count": 0,
|
||||
"like_count": 5,
|
||||
"view_count": 950
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653570073288757253",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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.",
|
||||
"timestamp": "2023-05-03 01:20:01",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKotj4XwAEO-pU?format=png&name=orig",
|
||||
"https://pbs.twimg.com/media/FvKovAaWcAADk-H?format=png&name=orig"
|
||||
],
|
||||
"reply_to_id": "1653569285048918018",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 2,
|
||||
"repost_count": 0,
|
||||
"like_count": 8,
|
||||
"view_count": 1128
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1653570742762479620",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "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",
|
||||
"timestamp": "2023-05-03 01:22:41",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/FvKplmbXgAISMMM?format=jpg&name=orig"
|
||||
],
|
||||
"reply_to_id": "1653570073288757253",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 11,
|
||||
"view_count": 1168
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1654169796328423450",
|
||||
"author": "Laxer3A",
|
||||
"handle": "Laxer3A",
|
||||
"text": "@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)",
|
||||
"timestamp": "2023-05-04 17:03:07",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1653570742762479620",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 0,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1757181664126444015",
|
||||
"author": "Alan Olivaw",
|
||||
"handle": "hotmultimedia",
|
||||
"text": "@NOTimothyLottes Have you ever blogged details about the syntax of your Forth tools?",
|
||||
"timestamp": "2024-02-12 23:15:30",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1653570073288757253",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 0,
|
||||
"view_count": 45
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1757198624818168210",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@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).",
|
||||
"timestamp": "2024-02-13 00:22:53",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1757181664126444015",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 0,
|
||||
"repost_count": 0,
|
||||
"like_count": 0,
|
||||
"view_count": 71
|
||||
}
|
||||
}
|
||||
],
|
||||
"source_url": "https://x.com/NOTimothyLottes/status/1757198624818168210",
|
||||
"source_urls": [
|
||||
"https://x.com/NOTimothyLottes/status/1757198624818168210",
|
||||
"https://x.com/NOTimothyLottes/status/1653570742762479620"
|
||||
],
|
||||
"member_targets": [
|
||||
"1653570742762479620",
|
||||
"1757198624818168210"
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 91 KiB |
@@ -0,0 +1,127 @@
|
||||
---
|
||||
title: "@onatt0 [3] I got side tracked by building a language that could be assembled fr"
|
||||
author: "NOTimothyLottes"
|
||||
handle: "@NOTimothyLottes"
|
||||
post_url: "https://x.com/NOTimothyLottes/status/1917646466417381426"
|
||||
post_id: "1917646466417381426"
|
||||
timestamp: "2025-04-30 18:25:20"
|
||||
post_count: 22
|
||||
reply_count: 2
|
||||
repost_count: 0
|
||||
like_count: 1
|
||||
view_count: 125
|
||||
---
|
||||
|
||||
# @NOTimothyLottes — @onatt0 [3] I got side tracked by building a language that could be assembled fr
|
||||
|
||||
## Post 1 (2025-04-30 16:13:33)
|
||||
|
||||
Forgot to mention in the heat of presentation, the initial textual language was heavily influenced by one of your past forth-like languages.
|
||||
Though I've built upon that foundation, I would have taken many wrong turns without your guidance, thank you so much.
|
||||
|
||||
## Post 2 (2025-04-30 18:10:43) — reply to Post 1
|
||||
|
||||
@onatt0 Related thoughts/
|
||||
[0] Having a low upper bound on the maximum complexity allowed in a program enables so much simplification. One can always move complexity into data, while keeping tight codebases.
|
||||
|
||||
## Post 3 (2025-04-30 18:19:07) — reply to Post 2
|
||||
|
||||
@onatt0 [1] Seems like you group symbols into pages where each page can have a string (shared with all symbols in the page), which when pared with limited fixed maximum symbol string size, is an elegant way of effectively supporting larger naming [I'll probably steal that idea next time]
|
||||
|
||||
## Post 4 (2025-04-30 18:22:55) — reply to Post 3
|
||||
|
||||
@onatt0 [2] I'm also a big fan of how you used 16:9 aspect to auto render all the debug info, symbol tables, disassembly, etc, alongside the source. I think many people are probably lost in the speed at which you can manipulate and test ideas while working on the source
|
||||
|
||||
## Post 5 (2025-04-30 18:25:20) — reply to Post 4
|
||||
|
||||
@onatt0 [3] I got side tracked by building a language that could be assembled from on the GPU in SIMD. However now I ask myself if that is just adding "complexity", because if programs are bounded in size, why not just focus on CPU non-parallel nested factoring (aka the forth-like way)
|
||||
|
||||
## Post 6 (2025-04-30 18:27:04) — reply to Post 3
|
||||
|
||||
@NOTimothyLottes oh dang realized i forgot to mention that part in the talk:)
|
||||
symbol name encoding for this iteration is 63bits(7bits*9chars) + 1bit extend(which highlights the word)
|
||||
extension can be at either end,
|
||||
say VFRAMEADDR AFRAMEADDR VPLANEADDR
|
||||
or VPACK.RING VPACK.HEAD VPACK.TAIL
|
||||
|
||||
[Media 1](./media/1917646904277754258_1.png)
|
||||
|
||||
## Post 7 (2025-04-30 18:35:00) — reply to Post 5
|
||||
|
||||
@onatt0 [4] 2-item data stack is an interesting compromise. Something I never considered. I left off ripping out the data stack completely.
|
||||
|
||||
## Post 8 (2025-04-30 18:40:32) — reply to Post 7
|
||||
|
||||
@onatt0 [5] Can do this instead,
|
||||
a. Track a "top" register (number)
|
||||
b. Use symbols to override top register
|
||||
c. Have push (store) just advance top to next reg (in circular queue)
|
||||
Gets to easy unnamed arguments
|
||||
|
||||
## Post 9 (2025-04-30 18:45:00) — reply to Post 5
|
||||
|
||||
@NOTimothyLottes IMO code compilation is inherently sequential+ "execution contextual", dynamic logic execution to get the binary as the essence vs a static lang
|
||||
|
||||
codegen with execution on GPU could work as 2-items(vreg)/stack and 32K cells per lane for AI to map code to data instead of weights?
|
||||
|
||||
## Post 10 (2025-04-30 18:45:38) — reply to Post 8
|
||||
|
||||
@onatt0 [6] You mentioned VK is most "form filling" which I think is an accurate description. For most "C" like APIs I like to just lay out all the arguments in memory like a tape drive in the order that functions get called and source that tape at runtime for the calls ...
|
||||
|
||||
## Post 11 (2025-04-30 18:47:28) — reply to Post 10
|
||||
|
||||
@onatt0 [7] They key concept here is that "common" arguments like the device are pushed onto the tape using store duplication when they are known (after device creation). So it's preemptive scatter, so later at call time there is no argument gather.
|
||||
|
||||
## Post 12 (2025-04-30 18:49:40) — reply to Post 11
|
||||
|
||||
@onatt0 [8] Likely the majority of C/C++/OOP/bloatware is just shuffling data around in argument gather to support the concept of data stacks on HW that has no physical data stack.
|
||||
|
||||
## Post 13 (2025-04-30 18:52:21) — reply to Post 12
|
||||
|
||||
@onatt0 [9] Could just pre-layout call arguments in order of usage, leverage data compression at init-time to unpack into memory before run-time. No more code to shuffle arguments, or set registers to immediates, etc. Just a common (cached) pre-call to consume args from the "tape"
|
||||
|
||||
## Post 14 (2025-04-30 18:53:48) — reply to Post 12
|
||||
|
||||
@NOTimothyLottes holy truthnuke - and people think C is the optimal state of possible runtimes when it's a very limited runtime to have state mixed call/data-stacks
|
||||
|
||||
not only you have to keep the whole stack around with replicated state, it limits to serialized execution instead of parallel
|
||||
|
||||
## Post 15 (2025-04-30 18:55:33) — reply to Post 13
|
||||
|
||||
@NOTimothyLottes simply brilliant!
|
||||
|
||||
## Post 16 (2025-04-30 18:59:14) — reply to Post 9
|
||||
|
||||
@onatt0 So for x86 I've many times written code gen with extra nop-prefix padding to fix all instructions to a multiple of known 32-bits. Which means you know in advance sizing of everything, then you can easily do parallel code generation. So need not necessarily all be serial
|
||||
|
||||
## Post 17 (2025-04-30 19:03:11) — reply to Post 16
|
||||
|
||||
@onatt0 However I'm often building then instantly using code while generating a baked binary to use later, so that regard much is inherently serially dependent. This bootstrapping technique is perhaps one the great things to learn from things like color forth IMO.
|
||||
|
||||
## Post 18 (2025-04-30 19:04:57) — reply to Post 14
|
||||
|
||||
@onatt0 I laugh when people say C is like assembly, they are missing what we actually did in assembly back then, which was all registers and globals and gotos, no stacks. It's radically different than good assembly.
|
||||
|
||||
## Post 19 (2025-04-30 19:05:05) — reply to Post 6
|
||||
|
||||
@NOTimothyLottes a much better encoding is possible
|
||||
next iteration is going to be
|
||||
|
||||
16bits*4words if you need multiple words(last word=15bits)
|
||||
7bits*9chars if its a unique/short name(to not clutter the 16-bit dictionary-space)
|
||||
|
||||
64K*4 words should be enough for most cases
|
||||
|
||||
## Post 20 (2025-04-30 19:10:53) — reply to Post 19
|
||||
|
||||
@onatt0 It would be interesting to size stuff so the limits align with instruction cache size limits. Build something where the expectation is a hit in the I$ once it's warm after the context switch and move everything else to data complexity.
|
||||
|
||||
## Post 21 (2025-04-30 19:13:59) — reply to Post 20
|
||||
|
||||
@onatt0 Same could apply for non-bulk data, ie the stuff you'd possibly want human readable annotation on. Make it sized to practical L2$ limits, or fix it to at most the shared L3$.
|
||||
|
||||
## Post 22 (2025-04-30 19:15:11) — reply to Post 18
|
||||
|
||||
@NOTimothyLottes when C became *the* execution model, it restricted all future hardware, HW gets built with how the C compiler will compile to it instead of what's ultimately a good design and a malleable macro-lang to map to HW
|
||||
|
||||
ofc a lot of people want portability so we went the boring route
|
||||
@@ -0,0 +1,372 @@
|
||||
{
|
||||
"root_post_id": "1917646466417381426",
|
||||
"posts": [
|
||||
{
|
||||
"post_id": "1917613300902146419",
|
||||
"author": "on@☦️",
|
||||
"handle": "onatt0",
|
||||
"text": "Forgot to mention in the heat of presentation, the initial textual language was heavily influenced by one of your past forth-like languages. \nThough I've built upon that foundation, I would have taken many wrong turns without your guidance, thank you so much.",
|
||||
"timestamp": "2025-04-30 16:13:33",
|
||||
"media_urls": [],
|
||||
"reply_to_id": null,
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 5,
|
||||
"view_count": 308
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917642786804785230",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 Related thoughts/\n[0] Having a low upper bound on the maximum complexity allowed in a program enables so much simplification. One can always move complexity into data, while keeping tight codebases.",
|
||||
"timestamp": "2025-04-30 18:10:43",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917613300902146419",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 2,
|
||||
"view_count": 112
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917644904055910502",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 [1] Seems like you group symbols into pages where each page can have a string (shared with all symbols in the page), which when pared with limited fixed maximum symbol string size, is an elegant way of effectively supporting larger naming [I'll probably steal that idea next time]",
|
||||
"timestamp": "2025-04-30 18:19:07",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917642786804785230",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 2,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 93
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917645859791200562",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 [2] I'm also a big fan of how you used 16:9 aspect to auto render all the debug info, symbol tables, disassembly, etc, alongside the source. I think many people are probably lost in the speed at which you can manipulate and test ideas while working on the source",
|
||||
"timestamp": "2025-04-30 18:22:55",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917644904055910502",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 88
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917646466417381426",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 [3] I got side tracked by building a language that could be assembled from on the GPU in SIMD. However now I ask myself if that is just adding \"complexity\", because if programs are bounded in size, why not just focus on CPU non-parallel nested factoring (aka the forth-like way)",
|
||||
"timestamp": "2025-04-30 18:25:20",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917645859791200562",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 2,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 125
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917646904277754258",
|
||||
"author": "on@☦️",
|
||||
"handle": "onatt0",
|
||||
"text": "@NOTimothyLottes oh dang realized i forgot to mention that part in the talk:) \nsymbol name encoding for this iteration is 63bits(7bits*9chars) + 1bit extend(which highlights the word) \nextension can be at either end, \nsay VFRAMEADDR AFRAMEADDR VPLANEADDR\nor VPACK.RING VPACK.HEAD VPACK.TAIL",
|
||||
"timestamp": "2025-04-30 18:27:04",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/GpzZmVBW8AALxll?format=png&name=orig"
|
||||
],
|
||||
"reply_to_id": "1917644904055910502",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 27
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917648900556558768",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 [4] 2-item data stack is an interesting compromise. Something I never considered. I left off ripping out the data stack completely.",
|
||||
"timestamp": "2025-04-30 18:35:00",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917646466417381426",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 88
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917650289978454504",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 [5] Can do this instead,\na. Track a \"top\" register (number)\nb. Use symbols to override top register\nc. Have push (store) just advance top to next reg (in circular queue)\nGets to easy unnamed arguments",
|
||||
"timestamp": "2025-04-30 18:40:32",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917648900556558768",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 2,
|
||||
"repost_count": 0,
|
||||
"like_count": 3,
|
||||
"view_count": 108
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917651417487036446",
|
||||
"author": "on@☦️",
|
||||
"handle": "onatt0",
|
||||
"text": "@NOTimothyLottes IMO code compilation is inherently sequential+ \"execution contextual\", dynamic logic execution to get the binary as the essence vs a static lang\n\ncodegen with execution on GPU could work as 2-items(vreg)/stack and 32K cells per lane for AI to map code to data instead of weights?",
|
||||
"timestamp": "2025-04-30 18:45:00",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917646466417381426",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 0,
|
||||
"view_count": 21
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917651574354030636",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 [6] You mentioned VK is most \"form filling\" which I think is an accurate description. For most \"C\" like APIs I like to just lay out all the arguments in memory like a tape drive in the order that functions get called and source that tape at runtime for the calls ...",
|
||||
"timestamp": "2025-04-30 18:45:38",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917650289978454504",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 98
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917652037078065160",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 [7] They key concept here is that \"common\" arguments like the device are pushed onto the tape using store duplication when they are known (after device creation). So it's preemptive scatter, so later at call time there is no argument gather.",
|
||||
"timestamp": "2025-04-30 18:47:28",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917651574354030636",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 2,
|
||||
"view_count": 110
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917652589358858332",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 [8] Likely the majority of C/C++/OOP/bloatware is just shuffling data around in argument gather to support the concept of data stacks on HW that has no physical data stack.",
|
||||
"timestamp": "2025-04-30 18:49:40",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917652037078065160",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 2,
|
||||
"repost_count": 1,
|
||||
"like_count": 3,
|
||||
"view_count": 209
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917653265329594372",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 [9] Could just pre-layout call arguments in order of usage, leverage data compression at init-time to unpack into memory before run-time. No more code to shuffle arguments, or set registers to immediates, etc. Just a common (cached) pre-call to consume args from the \"tape\"",
|
||||
"timestamp": "2025-04-30 18:52:21",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917652589358858332",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 2,
|
||||
"repost_count": 0,
|
||||
"like_count": 4,
|
||||
"view_count": 135
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917653631651729876",
|
||||
"author": "on@☦️",
|
||||
"handle": "onatt0",
|
||||
"text": "@NOTimothyLottes holy truthnuke - and people think C is the optimal state of possible runtimes when it's a very limited runtime to have state mixed call/data-stacks\n\nnot only you have to keep the whole stack around with replicated state, it limits to serialized execution instead of parallel",
|
||||
"timestamp": "2025-04-30 18:53:48",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917652589358858332",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 0,
|
||||
"view_count": 80
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917654071323857138",
|
||||
"author": "on@☦️",
|
||||
"handle": "onatt0",
|
||||
"text": "@NOTimothyLottes simply brilliant!",
|
||||
"timestamp": "2025-04-30 18:55:33",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917653265329594372",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 0,
|
||||
"repost_count": 0,
|
||||
"like_count": 0,
|
||||
"view_count": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917654997895983255",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 So for x86 I've many times written code gen with extra nop-prefix padding to fix all instructions to a multiple of known 32-bits. Which means you know in advance sizing of everything, then you can easily do parallel code generation. So need not necessarily all be serial",
|
||||
"timestamp": "2025-04-30 18:59:14",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917651417487036446",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 43
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917655990792560843",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 However I'm often building then instantly using code while generating a baked binary to use later, so that regard much is inherently serially dependent. This bootstrapping technique is perhaps one the great things to learn from things like color forth IMO.",
|
||||
"timestamp": "2025-04-30 19:03:11",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917654997895983255",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 0,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 58
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917656437473399108",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 I laugh when people say C is like assembly, they are missing what we actually did in assembly back then, which was all registers and globals and gotos, no stacks. It's radically different than good assembly.",
|
||||
"timestamp": "2025-04-30 19:04:57",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917653631651729876",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 1,
|
||||
"like_count": 3,
|
||||
"view_count": 156
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917656470444790255",
|
||||
"author": "on@☦️",
|
||||
"handle": "onatt0",
|
||||
"text": "@NOTimothyLottes a much better encoding is possible\nnext iteration is going to be\n\n16bits*4words if you need multiple words(last word=15bits)\n7bits*9chars if its a unique/short name(to not clutter the 16-bit dictionary-space)\n\n64K*4 words should be enough for most cases",
|
||||
"timestamp": "2025-04-30 19:05:05",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917646904277754258",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 0,
|
||||
"view_count": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917657931375313017",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 It would be interesting to size stuff so the limits align with instruction cache size limits. Build something where the expectation is a hit in the I$ once it's warm after the context switch and move everything else to data complexity.",
|
||||
"timestamp": "2025-04-30 19:10:53",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917656470444790255",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 34
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917658709192306788",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@onatt0 Same could apply for non-bulk data, ie the stuff you'd possibly want human readable annotation on. Make it sized to practical L2$ limits, or fix it to at most the shared L3$.",
|
||||
"timestamp": "2025-04-30 19:13:59",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917657931375313017",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 0,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1917659010024587634",
|
||||
"author": "on@☦️",
|
||||
"handle": "onatt0",
|
||||
"text": "@NOTimothyLottes when C became *the* execution model, it restricted all future hardware, HW gets built with how the C compiler will compile to it instead of what's ultimately a good design and a malleable macro-lang to map to HW\n\nofc a lot of people want portability so we went the boring route",
|
||||
"timestamp": "2025-04-30 19:15:11",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1917656437473399108",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 40
|
||||
}
|
||||
}
|
||||
],
|
||||
"source_url": "https://x.com/NOTimothyLottes/status/1917646466417381426",
|
||||
"source_urls": [
|
||||
"https://x.com/NOTimothyLottes/status/1917646466417381426",
|
||||
"https://x.com/NOTimothyLottes/status/1917644904055910502",
|
||||
"https://x.com/NOTimothyLottes/status/1917645859791200562",
|
||||
"https://x.com/NOTimothyLottes/status/1917642786804785230"
|
||||
],
|
||||
"member_targets": [
|
||||
"1917642786804785230",
|
||||
"1917644904055910502",
|
||||
"1917645859791200562",
|
||||
"1917646466417381426"
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 6.0 KiB |
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: "@NOTimothyLottes i'm not familiar with your problem."
|
||||
author: "/i:'mɪər/"
|
||||
handle: "@VPCOMPRESSB"
|
||||
post_url: "https://x.com/VPCOMPRESSB/status/1987744335333622188?s=20"
|
||||
post_id: "1987744335333622188"
|
||||
timestamp: "2025-11-10 04:49:14"
|
||||
post_count: 7
|
||||
reply_count: 0
|
||||
repost_count: 0
|
||||
like_count: 0
|
||||
view_count: 43
|
||||
---
|
||||
|
||||
# @VPCOMPRESSB — @NOTimothyLottes i'm not familiar with your problem.
|
||||
|
||||
## Post 1 (2025-11-07 21:04:00)
|
||||
|
||||
Will be switching back to SteamDeck based Linux dev for home after next week. Looking forward to it. Old setup here. Would swap CRTs often. Bonus I'll be able to test the AnyBeam laser projector at custom resolutions too.
|
||||
|
||||
[Media 1](./media/1986902480609767497_1.jpg)
|
||||
|
||||
## Post 2 (2025-11-07 21:13:13) — reply to Post 1
|
||||
|
||||
Will be returning to all custom color-forth-inspired macro assembly coding. I've done a huge amount of exploration in custom minimal languages, wanted to put my best out there in a public domain project.
|
||||
|
||||
## Post 3 (2025-11-07 22:05:43) — reply to Post 2
|
||||
|
||||
i'm developing a simple Forth interpreter as a project for school.
|
||||
|
||||
no tokens (in the conventional sense). no syntax tree. i could implement strings, but i want to omit them.
|
||||
|
||||
a program would just be a kernel that's invoked per element of some buffer.
|
||||
|
||||
i must write it in Java, which makes development more difficult and irritating IMO.
|
||||
|
||||
## Post 4 (2025-11-10 02:56:27) — reply to Post 3
|
||||
|
||||
@NOTimothyLottes i also only want 2-character words.
|
||||
including numbers.
|
||||
|
||||
i only use numbers of the form: `N << M` or `N * MB`.
|
||||
|
||||
i also should default to hexadecimals.
|
||||
|
||||
## Post 5 (2025-11-10 03:04:34) — reply to Post 4
|
||||
|
||||
@NOTimothyLottes there are 95 printable characters on the standard USA keyboard.
|
||||
95^2 = 9025 different typable words.
|
||||
that's far more than the 3383 instructions in the Zen 4.
|
||||
and far far more than i'll ever need.
|
||||
|
||||
[Media 1](./media/1987717996249260225_1.png)
|
||||
|
||||
## Post 6 (2025-11-10 04:05:34) — reply to Post 5
|
||||
|
||||
@VPCOMPRESSB Logic on max word count is probably sound. But I've never been able to get all symbol length to 2 chars.
|
||||
|
||||
## Post 7 (2025-11-10 04:49:14) — reply to Post 6
|
||||
|
||||
@NOTimothyLottes i'm not familiar with your problem.
|
||||
@@ -0,0 +1,128 @@
|
||||
{
|
||||
"root_post_id": "1987744335333622188",
|
||||
"posts": [
|
||||
{
|
||||
"post_id": "1986902480609767497",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "Will be switching back to SteamDeck based Linux dev for home after next week. Looking forward to it. Old setup here. Would swap CRTs often. Bonus I'll be able to test the AnyBeam laser projector at custom resolutions too.",
|
||||
"timestamp": "2025-11-07 21:04:00",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/G5LkqJtWMAAuS6S?format=jpg&name=orig"
|
||||
],
|
||||
"reply_to_id": null,
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 1,
|
||||
"like_count": 19,
|
||||
"view_count": 2400
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1986904798554099822",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "Will be returning to all custom color-forth-inspired macro assembly coding. I've done a huge amount of exploration in custom minimal languages, wanted to put my best out there in a public domain project.",
|
||||
"timestamp": "2025-11-07 21:13:13",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1986902480609767497",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 2,
|
||||
"repost_count": 0,
|
||||
"like_count": 15,
|
||||
"view_count": 1227
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1986918008762286143",
|
||||
"author": "/i:'mɪər/",
|
||||
"handle": "VPCOMPRESSB",
|
||||
"text": "i'm developing a simple Forth interpreter as a project for school.\n\nno tokens (in the conventional sense). no syntax tree. i could implement strings, but i want to omit them.\n\na program would just be a kernel that's invoked per element of some buffer.\n\ni must write it in Java, which makes development more difficult and irritating IMO.",
|
||||
"timestamp": "2025-11-07 22:05:43",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1986904798554099822",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 3,
|
||||
"view_count": 160
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1987715952679510516",
|
||||
"author": "/i:'mɪər/",
|
||||
"handle": "VPCOMPRESSB",
|
||||
"text": "@NOTimothyLottes i also only want 2-character words.\nincluding numbers.\n\ni only use numbers of the form: `N << M` or `N * MB`.\n\ni also should default to hexadecimals.",
|
||||
"timestamp": "2025-11-10 02:56:27",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1986918008762286143",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 0,
|
||||
"view_count": 39
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1987717996249260225",
|
||||
"author": "/i:'mɪər/",
|
||||
"handle": "VPCOMPRESSB",
|
||||
"text": "@NOTimothyLottes there are 95 printable characters on the standard USA keyboard.\n95^2 = 9025 different typable words.\nthat's far more than the 3383 instructions in the Zen 4.\nand far far more than i'll ever need.",
|
||||
"timestamp": "2025-11-10 03:04:34",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/G5XKSCbXAAEJsfl?format=png&name=orig"
|
||||
],
|
||||
"reply_to_id": "1987715952679510516",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 1,
|
||||
"view_count": 79
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1987733345628013014",
|
||||
"author": "NOTimothyLottes",
|
||||
"handle": "NOTimothyLottes",
|
||||
"text": "@VPCOMPRESSB Logic on max word count is probably sound. But I've never been able to get all symbol length to 2 chars.",
|
||||
"timestamp": "2025-11-10 04:05:34",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1987717996249260225",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 1,
|
||||
"repost_count": 0,
|
||||
"like_count": 0,
|
||||
"view_count": 112
|
||||
}
|
||||
},
|
||||
{
|
||||
"post_id": "1987744335333622188",
|
||||
"author": "/i:'mɪər/",
|
||||
"handle": "VPCOMPRESSB",
|
||||
"text": "@NOTimothyLottes i'm not familiar with your problem.",
|
||||
"timestamp": "2025-11-10 04:49:14",
|
||||
"media_urls": [],
|
||||
"reply_to_id": "1987733345628013014",
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 0,
|
||||
"repost_count": 0,
|
||||
"like_count": 0,
|
||||
"view_count": 43
|
||||
}
|
||||
}
|
||||
],
|
||||
"source_url": "https://x.com/VPCOMPRESSB/status/1987744335333622188?s=20",
|
||||
"source_urls": [
|
||||
"https://x.com/VPCOMPRESSB/status/1987744335333622188?s=20"
|
||||
],
|
||||
"member_targets": [
|
||||
"1987744335333622188"
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 205 KiB |
|
After Width: | Height: | Size: 443 KiB |
|
After Width: | Height: | Size: 333 KiB |
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: "no Tokens and no ASTs. (easier because its Forth-like)."
|
||||
author: "/i:'mɪər/"
|
||||
handle: "@VPCOMPRESSB"
|
||||
post_url: "https://x.com/VPCOMPRESSB/status/1991383117571957052?s=20"
|
||||
post_id: "1991383117571957052"
|
||||
timestamp: "2025-11-20 05:48:27"
|
||||
post_count: 1
|
||||
reply_count: 0
|
||||
repost_count: 0
|
||||
like_count: 4
|
||||
view_count: 292
|
||||
---
|
||||
|
||||
# @VPCOMPRESSB — no Tokens and no ASTs. (easier because its Forth-like).
|
||||
|
||||
## Post 1 (2025-11-20 05:48:27)
|
||||
|
||||
no Tokens and no ASTs. (easier because its Forth-like).
|
||||
|
||||
all i'm doing is transforming the source directly via byte shuffling and bit magic, and its parallelizable at a per-byte basis [theoretically, because i have yet to try that out].
|
||||
|
||||
code is awful because i'm using Java as if it's C, and it isn't optimized (plenty of optimizations that i've setup) nor cleaned.
|
||||
|
||||
the <\> represents NULL. (this was debugged with print 🙂).
|
||||
|
||||
[Media 1](./media/1991383117571957052_1.png)
|
||||
[Media 2](./media/1991383117571957052_2.jpg)
|
||||
[Media 3](./media/1991383117571957052_3.jpg)
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"root_post_id": "1991383117571957052",
|
||||
"posts": [
|
||||
{
|
||||
"post_id": "1991383117571957052",
|
||||
"author": "/i:'mɪər/",
|
||||
"handle": "VPCOMPRESSB",
|
||||
"text": "no Tokens and no ASTs. (easier because its Forth-like).\n\nall i'm doing is transforming the source directly via byte shuffling and bit magic, and its parallelizable at a per-byte basis [theoretically, because i have yet to try that out].\n\ncode is awful because i'm using Java as if it's C, and it isn't optimized (plenty of optimizations that i've setup) nor cleaned.\n\nthe <\\> represents NULL. (this was debugged with print 🙂).",
|
||||
"timestamp": "2025-11-20 05:48:27",
|
||||
"media_urls": [
|
||||
"https://pbs.twimg.com/media/G6LJrEgXkAA2Z26?format=png&name=orig",
|
||||
"https://pbs.twimg.com/media/G6LPXFOWAAABSVy?format=jpg&name=orig",
|
||||
"https://pbs.twimg.com/media/G6LPYhqXgAA2rvt?format=jpg&name=orig"
|
||||
],
|
||||
"reply_to_id": null,
|
||||
"quote_of_id": null,
|
||||
"metrics": {
|
||||
"reply_count": 0,
|
||||
"repost_count": 0,
|
||||
"like_count": 4,
|
||||
"view_count": 292
|
||||
}
|
||||
}
|
||||
],
|
||||
"source_url": "https://x.com/VPCOMPRESSB/status/1991383117571957052?s=20",
|
||||
"source_urls": [
|
||||
"https://x.com/VPCOMPRESSB/status/1991383117571957052?s=20"
|
||||
],
|
||||
"member_targets": [
|
||||
"1991383117571957052"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
[
|
||||
{
|
||||
"target": "1757198624818168210",
|
||||
"handle": "NOTimothyLottes",
|
||||
"posts": 19,
|
||||
"media": 27,
|
||||
"source_urls": [
|
||||
"https://x.com/NOTimothyLottes/status/1757198624818168210",
|
||||
"https://x.com/NOTimothyLottes/status/1653570742762479620"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "1917646466417381426",
|
||||
"handle": "NOTimothyLottes",
|
||||
"posts": 22,
|
||||
"media": 1,
|
||||
"source_urls": [
|
||||
"https://x.com/NOTimothyLottes/status/1917646466417381426",
|
||||
"https://x.com/NOTimothyLottes/status/1917644904055910502",
|
||||
"https://x.com/NOTimothyLottes/status/1917645859791200562",
|
||||
"https://x.com/NOTimothyLottes/status/1917642786804785230"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "1987744335333622188",
|
||||
"handle": "VPCOMPRESSB",
|
||||
"posts": 7,
|
||||
"media": 2,
|
||||
"source_urls": [
|
||||
"https://x.com/VPCOMPRESSB/status/1987744335333622188?s=20"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "1991383117571957052",
|
||||
"handle": "VPCOMPRESSB",
|
||||
"posts": 1,
|
||||
"media": 3,
|
||||
"source_urls": [
|
||||
"https://x.com/VPCOMPRESSB/status/1991383117571957052?s=20"
|
||||
]
|
||||
}
|
||||
]
|
||||