User Tools

Site Tools


newsletters:2026-04

April 2026 newsletter

Our next Folk open house will be on Thursday, May 28, at our new studio in Williamsburg, Brooklyn. RSVP here:

RSVP for the Folk open house on May 28

We'll also be giving a talk at School of Visual Arts in Manhattan on this coming Friday, May 8:

Talk at SVA on Friday, May 8

What we've been up to

General system improvements

  • Esben Sørig added support for tangential distortion parameters in camera calibration, which makes the calibration much more accurate on his system (has an ELP camera + lens)
  • Andrés brought back tag masking so projections don't interfere with tag detection
  • Andrés fixed support for left-margined, right-margined, footnoted ways to draw text on margins of a program
  • Omar improved the new logging system:
    • Put all logs for a given folk PID in /var/tmp/folk-PID subfolder
    • Report web system error at console since without working web page, hard to debug failures
    • Fix various cases where we weren't capturing output into stdout or stderr (library output, subprocesses) by turning off FORTIFY_SOURCE; made OTHER.stdout and OTHER.stderr as catch-alls when we can't do proper redirection (as opposed to going to /dev/null)
  • Omar improved the in-system build of libapriltag and libwslay (moved them out of Makefile last month) so they rebuild on any change in the builtin programs, don't require patchelf hack, and hold all dependent programs back until actually compiled

Bluetooth keyboard support

Omar and Andrés started working on new Bluetooth keyboard support, where we don't need a custom udev device path in by-path – ideally, we could pair and reconnect a keyboard just from the table (and ideally completely automatically if already paired).

Multi-display / multi-camera support

Omar: The new Folk setup at the studio has this L layout where we want at least 2 projectors and 2 cameras connected to the same PC, so I've been working on refactoring Folk so that one Folk system can calibrate and drive all that hardware simultaneously. (until now, every Folk system has had exactly 1 active projector and 1 active camera)

While at it, I also wanted to improve support for these types of ELP stereo cameras, which we have been using in the gadget (but are not really using the stereo yet). Trying to use it in the studio Folk setup as well.

img_4134.jpeg

Given this stereo camera, how can we add crop support to the UI and ultimately calibrate and use both 'eyes' to do better pose estimation?

Easier camera config

Added a setting on /camera that lets you set the exposure (and auto-exposure mode) live right there. Also now iframe /camera on the calibration page, so we have just that one uniform UI for camera config (including any future settings we might want to add), rather than /calibrate having its own one-off exposure slider.

Camera crop

I added a camera crop UI to the Folk /setup interface. You create a “virtual cropped camera”, which makes a green rectangle that lets you select an area to crop a camera to. The virtual camera then exists with that cropped area, and you can calibrate, track tags, etc on that camera:

(We use this to pick just the left eye for now out of a stereo side-by-side ELP image, but eventually want to use this to create two virtual cameras, one from each eye, to co-calibrate.)

GPU refactor for multiple displays

Omar: Did a big refactor of the gpu/draw.folk and gpu/gpu.folk and other code – split out most of the pipeline compilation logic and made the draw library not dependent on the specific display and display mode, so we can reuse pipelines to draw on any display & have multiple displays active at once.

Now when you boot Folk on a PC with two displays, we can draw to both, but it's still the same stuff drawn to both. In order to have a properly multi-display Folk system, we need to change a lot of the draw statements to be scoped to a specific display, which may be a breaking API change.

Ideas for fixing pose estimation errors

Some systems have pose estimation problems while we rely on monocular vision. One solution is to use a stereo camera to remove ambiguity; another is to account for the table plane in some way to narrow down candidates.

Here is a simple proposal:

New studio setup

Last month, we started moving out of Hex House and into a new studio space in Williamsburg. We continued that process this month and finalized a lot of the layout (although we don't necessarily have final mounting situation and tables/storage yet).

L-shaped dedicated area for Folk

We moved from last month's tiny setup along the wall to more of an L-shaped dedicated area, realizing that even a long 2-projector linear setup along the wall felt awkward. Was hard to have multiple people working together, limited edge area for people to sit, etc.

Setting up the new L area, which has one projector+camera over each side of the L:

img_3577.jpeg img_3578.jpeg img_3581.jpeg

img_3651.jpeg img_3652.jpeg

Was trying the Logitech Brio 4K on one side and NexiGo on the other side at first. Horrible issues with USB3; ultimately gave up on the Brio 4K for now.

(I think it might be the SAM2 demo I have on the table that's running/rerunning all the time and really pushing the Nvidia drivers and causing deadlock.)

Communal table (folk-convivial) / JMGO N1 Ultra setup

In the new studio, we want to set up Folk systems over some of the tables that aren't in our dedicated space, so we can sprawl out more during events and if multiple of us are trying things (and also hopefully have passersby playing with Folk eventually).

The first new area we set up is this communal table in the middle of the space.

img_3608.jpeg img_4155.jpeg

We also wanted to look into the modern portable 4K projector landscape now that AAXA is defunct – what should we be recommending to people if they want a bright, high-resolution, easy-ish-to-mount system?

Bought a JMGO N1 Ultra 4K projector on eBay for a great price ($700-800); sadly, that exact listing doesn't seem to be available anymore, but various 4K JMGO projectors are still available in various places for good prices. You can see it weighs about 9 pounds:

img_3574.jpeg

It's not as light as the AAXA 4K1 (4ish pounds), but it's similar price and much, much brighter.

Set it up on a tall C-stand (8-10 feet) for now, and wrapped a lampshade around it (see the head on table in second-to-last photo). C-stands have been useful for temporary mounting of heavy-ish stuff, but ultimately, should probably suspend from ceiling to get it totally out of the way.

img_3640.jpeg img_3613.jpeg img_4150.jpeg img_4162.jpeg img_4152.jpeg

Moving the CNC machine

We moved the CNC machine from our CNC project last year, but it's not fully set up yet.

Packing up from Hex House and seeing the dust underneath:

img_3385.jpeg img_3386.jpeg

Moving:

img_3389.jpeg

SVA setup

Interactively refine calibration

Omar: This is still on a branch, but hasn't been that successful an experiment. Will try a few more things. The goal here is to get calibrate to 1. work better on various cameras we have (ELP stereo camera has a lot of distortion) and 2. be easier to fixup later if you bump the camera.

(Usually, in my experience, calibration quality rides on the specific camera you're using. Projectors are usually easy-ish to calibrate [except ultra-short-throw], while cameras have more distortion and variability. My home system pretty much always calibrates perfectly – the Brio 4K was mediocre, and the NexiGo has been good. The ELP is also mediocre.)

NaN handling

People regularly have this silent failure when calibrating, where there's not enough variance in their poses (they kept the board flat on the table the whole time), and the optimization and/or refinement fails to converge:

Now capping the number of optimization iterations and throwing an error when NaN appears in any parameter. Still need to report to frontend UI.

Inline live preview on /calibrate

Made preview on /calibrate a side panel: reduces the length of the page / amount of stuff on the critical path that you read, makes it easier to see what's going on as you calibrate and refine and adjust exposure in real-time.

Also added green outlines for tag detections (again, so you can quickly spot if your calibration is failing because not enough tags are getting picked up).

Outreach

We threw a studio-warming party for the new space, where a lot of people played with the Folk system, especially animation:

img_3690.jpeg

Open house

Also, we had a great open house at the end of the month, on April 27:

img_5380-medium.jpeg img_4259.jpeg img_4246.jpeg

img_4256.jpeg img_4249.jpeg

What we'll be up to in April

Andrés

Omar

newsletters/2026-04.txt · Last modified: by osnr

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki