newsletters:2024-08
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
newsletters:2024-08 [2024/09/03 23:56] – [System improvements] osnr | newsletters:2024-08 [2024/09/04 02:36] (current) – [3D calibration] osnr | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== August 2024 newsletter | + | ====== August 2024 newsletter ====== |
- | We’re looking to build up more small sponsors now that Folk is fully open-source | + | (If you enjoy following our progress and want us to continue, definitely consider [[https:// |
- | + | ||
- | If you enjoy following our progress and want us to continue, definitely consider [[https:// | + | |
- | + | ||
- | (our first goal is to cover our studio rent with sponsorships!) | + | |
- | + | ||
- | ---- | + | |
Some links, especially if you're new to Folk: | Some links, especially if you're new to Folk: | ||
Line 14: | Line 8: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
- | |||
- | ---- | ||
===== What we've been up to ===== | ===== What we've been up to ===== | ||
Line 27: | Line 19: | ||
* {{newsletters: | * {{newsletters: | ||
* (isn't close to finished yet, may even require new evaluator because it feels like latency and frame drops degrade the experience a lot, you expect it to keep up with iPhone scrolling. good push for performance though) | * (isn't close to finished yet, may even require new evaluator because it feels like latency and frame drops degrade the experience a lot, you expect it to keep up with iPhone scrolling. good push for performance though) | ||
+ | * [[https:// | ||
==== Friends and outreach ==== | ==== Friends and outreach ==== | ||
Line 65: | Line 58: | ||
==== System improvements ==== | ==== System improvements ==== | ||
+ | * Merged [[https:// | ||
+ | * Shows deprecated warning on programs that still use '' | ||
+ | * Also changed 3D calibration code accordingly | ||
+ | * Daniel and Andrés made some hotfixes because Ctrl-S and Ctrl-P were acting up on table keyboards | ||
+ | * Omar: [[https:// | ||
* [[https:// | * [[https:// | ||
* (Omar: I've seen other ESC/POS printers around, so this should come in handy in general.) | * (Omar: I've seen other ESC/POS printers around, so this should come in handy in general.) | ||
* Daniel' | * Daniel' | ||
* {{: | * {{: | ||
+ | * Should be able to merge soon (it was dependent on 3D calibration getting merged), just figuring out some edge cases with editing/ | ||
=== Documentation === | === Documentation === | ||
Line 97: | Line 96: | ||
==== Handheld gadget ==== | ==== Handheld gadget ==== | ||
+ | |||
+ | Omar: An inventory of some of the gadget ideas I've been throwing around for the last few weeks as I've demoed it to people (some are general Folk ideas also, but they feel more vital and mobile with the handheld gadget): | ||
+ | |||
+ | * Trigger button to ' | ||
+ | * notice how other people can see it, it's more social, it's not just on your phone | ||
+ | * How to connect gadget to local Wi-Fi network? You carry a laminated card with fields for SSID and password + a fiducial marker, you fill out the fields with a pen, then scan the card with the Folk gadget to connect | ||
+ | * Fuller handwriting interaction where you write in a notebook and the gadget projects responses, you get like a ' | ||
+ | * Receipt printer + gadget let you carry a complete system in a lunchbox and pull it out and cover a whole table with computational objects | ||
+ | * Segment parts of the world and projection-map them with colors or patterns automatically | ||
+ | * Highlight text in a book or printout that the gadget is pointed to | ||
+ | * Point gadget at your laptop screen, hold trigger, and drag objects (files, tabs, windows, photos, videos) out of your laptop and onto a Folk table as virtual objects (or into a receipt printer to make them physical objects) | ||
+ | * Gadget as flashlight that shows a ' | ||
+ | * want more brightness or higher pixel density? just move the gadget closer! | ||
+ | |||
+ | We need to make a lot of progress on Folk and on the gadget design to be able to build these, but it's very exciting, and it does feel like the ideas are generated by having the gadget in hand. I think it's been well worth the effort of building it. | ||
+ | |||
+ | === Playbook === | ||
+ | |||
+ | Over the course of my week in San Francisco, I kind of developed a playbook of quick virtual demos that show some programmability and dynamism on the Folk gadget (although not as good as a full tabletop system with physical programs yet, obviously). | ||
+ | |||
+ | It goes something like: | ||
+ | |||
+ | - Set up Wi-Fi on laptop, plug gadget in with huge extension cord: red calibration error appears on projection, so you know it's on | ||
+ | - Go to http:// | ||
+ | - Program '' | ||
+ | - Program scaled label (we should add sugar so this is less of a jump from previous): shows live programmability < | ||
+ | When $this has region /r/ & the clock time is /t/ { | ||
+ | lassign [region centroid $r] x y | ||
+ | Wish to draw text with text " | ||
+ | } | ||
+ | </ | ||
+ | - Program animating scaled label: shows movement, not a static image anymore < | ||
+ | When $this has region /r/ & the clock time is /t/ { | ||
+ | lassign [region centroid $r] x y | ||
+ | Wish to draw text with text " | ||
+ | } | ||
+ | </ | ||
+ | - Program camera feedback: shows that camera is active, gadget interacts with the outside world and isn't just a screen < | ||
+ | When camera /any/ has frame /f/ at timestamp /ts/ { | ||
+ | Wish $this displays image $f | ||
+ | } | ||
+ | </ | ||
+ | - Calibrate on http:// | ||
+ | - {{newsletters: | ||
+ | |||
=== Hardware === | === Hardware === | ||
Line 104: | Line 148: | ||
And I got shorter cables with right angles and/or ribbons, which save space and remove strain (from cables being too long) that was causing a lot of random instability/ | And I got shorter cables with right angles and/or ribbons, which save space and remove strain (from cables being too long) that was causing a lot of random instability/ | ||
- | {{: | + | {{: |
Along with the current revision of the 3D-printed chassis, the gadget feels pretty stable in terms of hardware now, and it doesn' | Along with the current revision of the 3D-printed chassis, the gadget feels pretty stable in terms of hardware now, and it doesn' | ||
Line 134: | Line 178: | ||
A few different Pi-5-specific (and/or portable-gadget-specific) software issues: | A few different Pi-5-specific (and/or portable-gadget-specific) software issues: | ||
+ | |||
+ | == Pass 4 vertices to VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP == | ||
+ | |||
+ | This was also mentioned under misc. system improvements -- initially flagged by [[https:// | ||
+ | |||
+ | [[https:// | ||
== Descriptor indexing == | == Descriptor indexing == | ||
Line 161: | Line 211: | ||
I've been working on the camera (I think it's a Pi camera module 2, but all the Pi camera modules work the same way more or less) to try to get calibration to work. | I've been working on the camera (I think it's a Pi camera module 2, but all the Pi camera modules work the same way more or less) to try to get calibration to work. | ||
- | I want to switch from using libcamerify+v4l2 (which gives me very little control, to adjust exposure | + | I want to switch from using libcamerify+v4l2 (which gives me very little control, |
{{: | {{: | ||
Line 181: | Line 231: | ||
* Current situation is putting a few spacers behind half the camera to tilt it up toward the projector area, but even this drifts because the projector drifts, and it feels too dependent on how the screws are tightened, not replicable. | * Current situation is putting a few spacers behind half the camera to tilt it up toward the projector area, but even this drifts because the projector drifts, and it feels too dependent on how the screws are tightened, not replicable. | ||
* {{: | * {{: | ||
+ | * Maybe use a wide-angle camera instead? or shift it upward physically? | ||
+ | * Maybe lock the projector in place better? | ||
+ | * Side note: maybe multiple cameras for more stable depth perception? cameras are cheap | ||
* Figure out the Wi-Fi situation, maybe run a hotspot from the gadget automatically for now instead of connecting to Wi-Fi? we don't really use internet from it anyway right now | * Figure out the Wi-Fi situation, maybe run a hotspot from the gadget automatically for now instead of connecting to Wi-Fi? we don't really use internet from it anyway right now | ||
+ | * Maybe try to run some AI vision models? to segment environments, | ||
==== 3D calibration ==== | ==== 3D calibration ==== | ||
Omar: We merged 3D calibration! This is a huge advance that's been in the works for much of the last year -- we're being aggressive by merging, there are still things to fix and it's only roughly on par with the old 2D calibration (better in some cases, worse in others) -- but this is why we are pre-alpha and don't promise anything to users yet :-) | Omar: We merged 3D calibration! This is a huge advance that's been in the works for much of the last year -- we're being aggressive by merging, there are still things to fix and it's only roughly on par with the old 2D calibration (better in some cases, worse in others) -- but this is why we are pre-alpha and don't promise anything to users yet :-) | ||
+ | |||
+ | (it also means that regions are now deprecated compared to quads) | ||
+ | |||
+ | {{: | ||
(3D calibration is also quite important for the portable gadget system, since it has no fixed plane in front of it that we could 2D-calibrate.) | (3D calibration is also quite important for the portable gadget system, since it has no fixed plane in front of it that we could 2D-calibrate.) | ||
- | Mostly | + | Several small changes before merging: |
+ | |||
+ | * Fixed [[https:// | ||
+ | * [[https:// | ||
+ | * RAM watchdog | ||
+ | * Allow negative distances in '' | ||
+ | * with the camera slice fixes, | ||
+ | |||
+ | Other than these & table refine below, mostly | ||
* On folk-convivial: | * On folk-convivial: | ||
Line 241: | Line 307: | ||
The hack I came up with to maintain all these properties is to have an outside monitor process that just checks every few milliseconds and rebalances stuff (makes new processes, kills extra processes). | The hack I came up with to maintain all these properties is to have an outside monitor process that just checks every few milliseconds and rebalances stuff (makes new processes, kills extra processes). | ||
- | I looked at Erlang' | + | I looked at Erlang' |
+ | |||
+ | Erlang is weird because of all the [[https:// | ||
- | Erlang is weird because of all the hinting it requires. Erlang programmers aren't normally directly writing and calling C functions. | + | {{: |
- | Go actually seems very close to what we want. It's a work-stealing scheduler that can deal with arbitrary CPU blocks and I/O blocks in a goroutine. It has a little bit of hinting (it can detect syscalls, since they all go through the Go runtime), but it also has something called ' | + | Go actually seems very close to what we want. It's a work-stealing scheduler that can deal with arbitrary CPU blocks and I/O blocks in a goroutine. It has a little bit of hinting |
===== What we'll be up to in September ===== | ===== What we'll be up to in September ===== | ||
Line 262: | Line 330: | ||
* Trigger button | * Trigger button | ||
* Cat printer support | * Cat printer support | ||
+ | * Put design online? | ||
+ | * Merge Daniel' | ||
+ | * Daniel hacking on touch detection a bit | ||
* Omar: I hope we can start working on some of the stuff with precise camera slices from the new calibration: | * Omar: I hope we can start working on some of the stuff with precise camera slices from the new calibration: | ||
* New evaluator: new scheduler, work on evaluation semantics, eventually resume porting the editor | * New evaluator: new scheduler, work on evaluation semantics, eventually resume porting the editor |
newsletters/2024-08.1725407794.txt.gz · Last modified: 2024/09/03 23:56 by osnr