| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| newsletters:2026-03 [2026/04/22 22:44] – [General system improvements] osnr | newsletters:2026-03 [2026/04/23 01:39] (current) – osnr |
|---|
| {{htmlmetatags>metatag-og:title=(Folk Computer March 2026 newsletter) | {{htmlmetatags>metatag-og:title=(Folk Computer March 2026 newsletter) |
| metatag-media-og:image=(newsletters:pasted:20260311-191224.jpeg) | metatag-media-og:image=(newsletters:pasted:20260311-191224.jpeg) |
| metatag-og:description=(TODO: Description) | metatag-og:description=(New studio move-in and mounting; SAM2 image view; editing built-in programs; GIFs; block stats) |
| }} | }} |
| |
| [[{}https://luma.com/toq7zpc7|RSVP for the Folk open house on April 27]] | [[{}https://luma.com/toq7zpc7|RSVP for the Folk open house on April 27]] |
| |
| We're a nonprofit doing unique open-source research on physical computing and programming -- please consider sponsoring us: | We're a nonprofit doing unique open-source research on physical computing and programming -- we'd appreciate it if you sponsored us on GitHub: |
| |
| [[{}https://github.com/sponsors/FolkComputer|**Sponsor Folk on GitHub Sponsors**]] | [[{}https://github.com/sponsors/FolkComputer|**Sponsor Folk on GitHub Sponsors**]] |
| |
| {{newsletters:img_2414.jpeg?0x250px}}{{newsletters:img_2391.jpeg?0x250px}}{{newsletters:img_2406.jpeg?0x250px}}{{newsletters:img_2411.jpeg?0x250px}}{{newsletters:img_2407.jpeg?0x250px}}{{newsletters:img_2431.jpeg?0x250px}}{{newsletters:img_2442.jpeg?0x250px}}{{newsletters:img_2441.jpeg?0x250px}}{{newsletters:img_2420.jpeg?0x250px}} | {{newsletters:img_2414.jpeg?0x250px}}{{newsletters:img_2391.jpeg?0x250px}}{{newsletters:img_2406.jpeg?0x250px}}{{newsletters:img_2411.jpeg?0x250px}}{{newsletters:img_2407.jpeg?0x250px}}{{newsletters:img_2431.jpeg?0x250px}}{{newsletters:img_2442.jpeg?0x250px}}{{newsletters:img_2441.jpeg?0x250px}}{{newsletters:img_2420.jpeg?0x250px}} |
| | |
| | Some old programs we came across -- funny what kinds of things we were doing back then and how the system has changed: |
| | |
| | {{newsletters:img_2926.jpeg?0x250px}} {{newsletters:img_2923.jpeg?0x250px}} |
| |
| Moving & the new studio at first: | Moving & the new studio at first: |
| {{newsletters:img_5236.jpeg?0x250px}} | {{newsletters:img_5236.jpeg?0x250px}} |
| === Mounting research === | === Mounting research === |
| | |
| | Original temporary mount was using a heavy-duty magic arm on a storage shelf in the new studio: |
| | |
| | {{newsletters:img_2938.jpeg?0x300px}} {{newsletters:img_2946.jpeg?0x300px}} |
| |
| We want to set up more and bigger Folk systems in the new studio, and we don't have a low ceiling with obvious mount points, so we've been looking into C-stands as a general mounting solution. | We want to set up more and bigger Folk systems in the new studio, and we don't have a low ceiling with obvious mount points, so we've been looking into C-stands as a general mounting solution. |
| ==== General system improvements ==== | ==== General system improvements ==== |
| |
| | * [[https://github.com/FolkComputer/folk/pull/252|Added support for editing built-in programs directly from the on-table Folk editor.]] Changes are saved as .folk.edited patches, and the override logic is now in boot.folk so it can apply to all programs, not just printed ones |
| | * Very exciting in that it's on the path to doing more and more of our day-to-day work in the system |
| | * Editing sam2.folk: |
| | * {{newsletters:570807012-e1dc1005-64ab-41ed-a21b-1147d3ec45b6.jpeg?300px}} |
| * [[https://danielpipk.in/|Daniel Pipkin]] added [[https://github.com/FolkComputer/folk/pull/249|support for GIFs to ''display image'']], including animated GIFs | * [[https://danielpipk.in/|Daniel Pipkin]] added [[https://github.com/FolkComputer/folk/pull/249|support for GIFs to ''display image'']], including animated GIFs |
| * Omar [[https://github.com/FolkComputer/folk/pull/251|cleaned up the code slightly]], including modularizing the loader code for each image type | * Omar [[https://github.com/FolkComputer/folk/pull/251|cleaned up the code slightly]], including modularizing the loader code for each image type |
| * Moved all pure 'userland' library dependencies (libwslay, apriltag) [[https://github.com/FolkComputer/folk/commit/296b89de44d889f9e247705a0dc45d5b489bc96f|out of the Makefile]]; [[https://github.com/FolkComputer/folk/commit/fb0aae289497c500657f4a898e717b103cabd32d|discourage]] future dependencies from getting added to it | * Moved all pure 'userland' library dependencies (libwslay, apriltag) [[https://github.com/FolkComputer/folk/commit/296b89de44d889f9e247705a0dc45d5b489bc96f|out of the Makefile]]; [[https://github.com/FolkComputer/folk/commit/fb0aae289497c500657f4a898e717b103cabd32d|discourage]] future dependencies from getting added to it |
| * Vendored stb_ds, started using it and rwlocks for various bookkeeping lists and tables that used to be fixed-size where we were crashing or had lots of contention (holds, output redirection) | * Vendored stb_ds, started using it and rwlocks for various bookkeeping lists and tables that used to be fixed-size where we were crashing or had lots of contention (holds, output redirection) |
| | * Started using -O2 and -march=native for C modules (I want to speed up subimage warp, might need to hand-optimize) |
| | * Text rendering optimizations: [[https://github.com/FolkComputer/folk/commit/db34ab34844e8aa25757282af8d2698002f43bcb|make the font object an opaque pointer]] since we only operate on it from C anyway, so we don't have to reparse it for every text render. Makes text render go from 1ms -> 300us. |
| | * [[https://github.com/FolkComputer/folk/commit/780c34ab4dc39fd864ea43fef1f54cd805b0ac8c|Build the shaped text object directly as a string]], so we don't need to serialize for every value, also saving a few hundred microseconds I think |
| | * [[https://github.com/FolkComputer/folk/commit/f4560366f1c2371e369b1b5cef466842981944a5|Fixed blink bug with /camera where it would distractingly blink out if frame retrieval failed; wait for success before changing frame]] |
| | * Fixed GPU crashes and warpQuad out-of-bounds when holding page in weird orientation (allocating way too big an image) |
| |
| === Default calibration === | === Default calibration === |
| |
| {{.:pasted:20260422-220525.png?450px}} | {{.:pasted:20260422-220525.png?450px}} |
| | |
| | Realized that it was a bad move to do JPEG-space crop and decompression for each slice -- it's almost as slow as a full decompress -- should go back to doing the full decompress for every camera frame and then putting the raw color frame in a statement. But this adds a lot of latency, because it takes a few ms (!) to do a full decompress, so now we decompress both gray and RGB in parallel. |
| | |
| | {{newsletters:screenshot-2026-03-23-at-4.39.56-pm.png?300px}} {{.:pasted:20260422-230930.png?300px}} |
| | |
| | I feel like we can do more here -- reduce rest-of-system latencies, use hardware-accelerated JPEG decoding, whatever. There shouldn't be a 2ms difference between gray decode and RGB decode, and a 2ms difference shouldn't wreck system throughput. |
| | |
| | |
| === Multi-projector support === | === Multi-projector support === |
| |
| With the new studio, we want to make a bigger table that has 2 projectors connected to one PC. Folk doesn't support that right now -- the whole gpu/draw driver is parameterized by a single display's parameters -- so have been slowly refactoring and untangling it. | With the new studio, we want to make a bigger table that has 2 projectors connected to one PC. Folk doesn't support that right now -- the whole gpu/draw driver has been parameterized by a single display's parameters -- so have been slowly [[https://github.com/FolkComputer/folk/commit/ccaa8ee3f791541667b35e653a716f22165a40cd|refactoring and untangling it]], and [[https://github.com/FolkComputer/folk/commit/75ca62d4f9e37506fec6c1c38ac457f0423aeba1|updating the setup.folk UI to let you check multiple displays]]. |
| ==== Outreach ==== | ==== Outreach ==== |
| |