This is an old revision of the document!
Table of Contents
October 2025 newsletter
If you'd like to see the latest (much more responsive) folk2 and gadget in person, our next Folk open house is in the evening on Monday, November 24th, in East Williamsburg, Brooklyn.
What we've been up to
- Andrés has been helping Brian write and add default programs for an introductory booklet to make it easy for new users of Folk systems to get oriented to the language
- Andrés has also been learning the drawing system in folk2 to port drawing arbitrary shapes to folk2
- Daniel Pipkin got his home-built gadget fully working:
- Brian Lee and Omar made a weather demo one morning:
- Omar made a new version of the animation program that uses -atomically and non-settlement display canvas and works a bit better and faster and less blinky:
folk2 -atomically
Omar: I got -atomically (convergence-tracking subgraphs) into a reasonable state, and it's merged into the main osnr/folk2 branch now. This is great! This means that we have a complete feature set to actually merge all of folk2, I think.
The main thing since last month was testing it with more 'real' programs and on the table: sprites, camera slice, dotted line. (The animation program above is one concrete result of fixing -atomically.)
Reap -atomically statements properly on convergence
Sprites were exhausting the texture cache after a few frames because of some kind of race where they weren't properly garbage-collected.
Once sprites worked, camera slices still caused problems: this is because sprites repeat, so there are finitely many unique statements even when they leak, but camera slices are all unique, so they can leak forever.
Added new logic that maintains 1. a list of statements for each AtomicallyVersion and 2. a list of AtomicallyVersions. When a new version converges, we reap all statements on all previous versions (and before then, statements are retained indefinitely, even if they would normally be retracted due to an upstream retraction).
New folk-hex computer
We were donated a gaming PC (folk-hex) that's moderately faster than the NUC we had before (folk0). It's now sitting on the floor instead of in the ceiling.
Anyway, switching to this PC has been a good test of the end-to-end folk2 setup process and of our support for the Nvidia GPU. Some of the fixes:
- Use the GPU swapchain-native image format (we were hard-coding to
VK_FORMAT_B8G8R8A8_SRGB, which happened to work on other GPUs until now but not this one). Fixed this render pass incompatibility error: - Update README.md to adjust the commands and set of packages to install for folk2
- Remove live-build for now until we update it
- Vendor libwslay (it was surprisingly annoying to install at the right paths, and it's a self-contained and stable dependency anyway)
- Run jackd explicitly to use GPU HDMI as sound output for music
- (for other systems on the network) Fault to folk-hex instead of folk0
- Find the first 60Hz display mode instead of 24Hz (for some reason, this Nvidia GPU orders the display modes differently than the old AMD GPU did)
- Allow sudo password input on make remote
Performance is definitely better than on the old folk0 – not perfect, but it feels like the bottleneck now is motion blur / camera stuff rather than compute. (Makes me want to get a newer/faster computer; both folk0 and folk-hex are basically from like 2018.)
24fps debugging
Omar: I burned like a week trying to figure out why folk-hex was running weirdly slow.
You can see that we're spending 40ms on inFlightFence every frame in Tracy here:
I tried installing the Nvidia Nsight profiler. Took me a while to figure out how to pipe stdout and stderr to see why the system was failing to start:
(it was failing because Nsight suppresses the validation layers we were using, so I turned them off for now.)
Gadget projector fix
Omar: I was finally able to turn off autorotate / autokeystone on the AnyBeam. For some reason, this script that I auto-translated (from decompiled AnyBeam Android app) didn't work on my Linux PC, but works perfectly on my Mac once I tried it this month.
Next: recalibrate properly and see how good we can get the calibration; start on dual calibration and start making some cool demos.
Other improvements
(Note that these are all on folk2.)
- Andrés and Brian Lee worked on adding default programs for a tutorial booklet for Folk
- We merged Mason Jones's PR to use Hold -save (which was added in September) to also track calibration and saved programs
- Some discussion on what the right format is to preserve the ability to edit program files directly at runtime & to avoid having thousands of statements in memory all the time for all the printed programs:
- We merged Mike Subelsky's PR that adds miniaudio to enable playback of WAV, MP3, & FLAC files from folk using
Wish to play audio $pathToSound - Omar added editor persistence to folk2 (using Mason's
Hold -save), so even if the system crashes or restarts, the contents of table editors stay intact- Right now, it persists on every keystroke, which doesn't seem to be a big deal for performance, but could do it on an interval instead
- should encourage people to build up bigger programs on table!
- Omar fixed a crash when trying to allocate Vulkan textures with size 0 (one of the many little crashes in folk2 that have been bugging us)
- (This bugfix does feel like a hack, though – why are we allocating size-0 textures in the first place?)
- Omar made matches complete even if killed, which should fix a bug where the camera would break after the system is suspended (because its match would be forever incomplete, breaking
-serially) - Omar made some small bug fixes to calibration saving, fixed the red-text warning, etc
- Omar turned off canvas settlement for the whole screen, because it was breaking animation tests – I'm hoping we can replace it with -atomically convergence to prevent blinking where we need it
Outreach
- We added 3 people to the Discord this month, with a few intros from new members hoping to set up their Folk systems in the coming months. If you're interested in being added to our Discord, e-mail cwervo@folk.computer.
Open house
- Our friends Owen Trueblood and Kevin Lynagh and David Nolen came by at the beginning of the month:
- We had a small open house on Thursday, October 30.
- Paul came in from from Philadelphia for the open house and brought his friend Max
What we'll be up to in November
- Our next open house is on Monday, November 24th
- Omar: Set up a system for -atomically cleanup
- Omar: Merge folk2
- Omar: Maybe stereo-calibrate gadget and do some UI experiments with the full stereo setup (segmentation, projection-mapping, lassoing)
- Andrés: Giving a talk on Folk at a Visual Culture Seminar class at Parsons
- Andrés: Porting drawing shapes in folk2
- Andrés: Work on new demos featuring dot recognition
Links we've enjoyed
Omar
Andrés
- Board.fun, an interesting new product that uses physical pieces and a screen surface to augmente board games
- Windows Explorer 2 a game jam game that uses windowing as a tool for suprise and exploration














