newsletters:2025-03
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
newsletters:2025-03 [2025/04/01 01:42] – [General system improvements] osnr | newsletters:2025-03 [2025/04/01 20:40] (current) – discord | ||
---|---|---|---|
Line 8: | Line 8: | ||
* (Andrés) Animation binder | * (Andrés) Animation binder | ||
- | * I took the animation programs that Cristóbal made and put them in a binder, added a binder clip for stacks of paper, and added a wheel for people to adjust the number of frames | + | * I took the animation programs that [[https:// |
* {{newsletters: | * {{newsletters: | ||
* {{newsletters: | * {{newsletters: | ||
* (Andrés) Frog folder | * (Andrés) Frog folder | ||
- | * I've been trying to explore making more didactic Folk programs, the first of these is the **origami frog folder**, which uses a mix of shapes and text to guide you through making an origami frog. If you have ideas for other things Folk might be useful for teaching feel free to email me at **[[mailto: | + | * I've been trying to explore making more didactic Folk programs; the first of these is the **origami frog folder**, which uses a mix of shapes and text to guide you through making an origami frog. If you have ideas for other things Folk might be useful for teaching, feel free to email me at **[[mailto: |
- | * {{newsletters: | + | * {{newsletters: |
- | * {{newsletters: | + | |
==== General system improvements ==== | ==== General system improvements ==== | ||
Line 27: | Line 26: | ||
* Omar: I've been really excited about video -- I think making a physical video book or diorama is a really simple and really compelling application of Folk (that you can't do without a system like Folk), and it's not even that computational or programming-y | * Omar: I've been really excited about video -- I think making a physical video book or diorama is a really simple and really compelling application of Folk (that you can't do without a system like Folk), and it's not even that computational or programming-y | ||
* (Andrés) [[https:// | * (Andrés) [[https:// | ||
- | * {{newsletters: | + | * {{newsletters: |
* (Andrés) Dot detector — not much progress this month, will get to it early April | * (Andrés) Dot detector — not much progress this month, will get to it early April | ||
- | * (Mason) [[https:// | + | * ([[https:// |
==== Folk gadget & QR scanner ==== | ==== Folk gadget & QR scanner ==== | ||
- | < | + | Omar: as a side project for [[https:// |
- | < | + | |
> [[https:// | > [[https:// | ||
Line 44: | Line 42: | ||
> It kind of half-seriously answers the critique of, like, restaurant menu QR codes, where scanning a QR code locks you into your phone & isn't a process that people around you can participate in. Here, you scan the QR code in a ' | > It kind of half-seriously answers the critique of, like, restaurant menu QR codes, where scanning a QR code locks you into your phone & isn't a process that people around you can participate in. Here, you scan the QR code in a ' | ||
- | This is an interaction I'd had in mind for a few years, since I first got the Nebra AnyBeam in like 2021, so it's great to get to play it out now (and it was [[https:// | + | This is an interaction I'd had in mind for a few years, since I first got the Nebra AnyBeam in like 2021, so it's great to get to play it out now. |
+ | |||
+ | And it was [[https:// | ||
Here, I'm scanning a URL that Owen put up for his project (https:// | Here, I'm scanning a URL that Owen put up for his project (https:// | ||
Line 73: | Line 73: | ||
* slow processes (synchronous-ish QR detect, asynchronous-ish rendering Web page) | * slow processes (synchronous-ish QR detect, asynchronous-ish rendering Web page) | ||
* uses the network, have to get the gadget on local Wi-Fi or whatever | * uses the network, have to get the gadget on local Wi-Fi or whatever | ||
- | </ | ||
=== Other gadget stuff === | === Other gadget stuff === | ||
- | < | + | == Wi-Fi issues == |
- | < | + | |
- | **Wi-Fi failing** | + | I mentioned this last month -- I've had such trouble getting the gadget (with its Orange Pi 5 and USB Wi-Fi dongle) connected in wild environments (where it doesn' |
- | Following up on [[newsletters/ | + | == Successful calibration == |
+ | |||
+ | Following up on [[newsletters/ | ||
(it hasn't been a priority, but I figured I might as well since I've been bringing it out so much for QR, and everything was in place already to try it) | (it hasn't been a priority, but I figured I might as well since I've been bringing it out so much for QR, and everything was in place already to try it) | ||
- | wasn't too bad! the calibration is a bit off when trying to use it on top of folk0 (TODO: photo?), but I hope some of the physical improvements below will help. | + | wasn't too bad! the calibration is a bit off -- a couple of centimeters -- when trying to use it on top of folk0, but I hope some of the physical improvements below will help. |
- | **Upcoming** | + | === Upcoming |
There' | There' | ||
Line 98: | Line 98: | ||
* display Wi-Fi status like how we display battery status? (can we do both of these in a nicer/more ambient way?) | * display Wi-Fi status like how we display battery status? (can we do both of these in a nicer/more ambient way?) | ||
* Back panel is getting looser over time and one bolt never really stuck; probably should use heat inserts to screw it in. it comes on and off a lot, too... | * Back panel is getting looser over time and one bolt never really stuck; probably should use heat inserts to screw it in. it comes on and off a lot, too... | ||
- | * have a good way to expose a USB port or two? they' | + | * have a good way to expose a USB port or two on the back panel too? they' |
* Projector swivels around still (which could be very bad, breaks calibration). | * Projector swivels around still (which could be very bad, breaks calibration). | ||
* Maybe use elastics and slits in the top? | * Maybe use elastics and slits in the top? | ||
Line 105: | Line 105: | ||
* Button is fraying over time as it gets bent outward. Needs a cover that you press on top, like in the original grip design (I made a basic casing for our button but not a cover) | * Button is fraying over time as it gets bent outward. Needs a cover that you press on top, like in the original grip design (I made a basic casing for our button but not a cover) | ||
* microSD card sometimes totally fails either before boot or while the system is running, need to power cycle | * microSD card sometimes totally fails either before boot or while the system is running, need to power cycle | ||
- | * use M.2 SSD instead? | + | * use M.2 SSD instead? |
- | </ | + | |
==== folk2 ==== | ==== folk2 ==== | ||
- | < | + | Omar: Still a lot of work left on the new interpreter -- I've been biting off more and more as I continue to encounter blinking problems and dropped frames -- but I'm also increasingly excited about the potential frontier of performance (making Folk as responsive as possible), and I think the new system will be semantically better and cleaner, too (and more flexible for people to do new things). A lot of the changes are things we've wanted to do for years. |
- | < | + | |
- | Omar: Still a lot of work left on the new interpreter -- I've been biting off more and more as I continue to encounter blinking problems and dropped frames -- but I'm also increasingly excited about the potential frontier of performance (making Folk as responsive as possible), and I think the new system will be semantically better and cleaner, too (and more flexible for people to do new things). A lot of the changes are things we've wanted to do for years. | + | |
A few different branches are in play right now: | A few different branches are in play right now: | ||
- | **C collect** | + | === C collect |
I noticed in the Tracy profiles that we were spending a lot of time doing recollections, | I noticed in the Tracy profiles that we were spending a lot of time doing recollections, | ||
Line 150: | Line 148: | ||
(Even in folk1, Collect is implemented natively in C, so it's not surprising that this would be a step backward in performance.) | (Even in folk1, Collect is implemented natively in C, so it's not surprising that this would be a step backward in performance.) | ||
- | I made a new folk2 branch where Collect is implemented in C. | + | So I made a new folk2 branch where Collect is implemented in C, which should cut almost all of that database traffic. |
It feels a lot more responsive compared to main folk2. The major bug (and why we haven' | It feels a lot more responsive compared to main folk2. The major bug (and why we haven' | ||
Line 158: | Line 156: | ||
Still need to debug this. | Still need to debug this. | ||
- | **Page quads** | + | === Page quads === |
- | This is the most important branch and probably the biggest potential performance improvement / hold-up to merging folk2 in general. I've mostly been working on this for the last couple of weeks. | + | This is the most important branch and probably the biggest potential performance improvement / hold-up to merging folk2. I've mostly been working on this for the last couple of weeks. |
The goals here are to 1. render page graphics to textures in memory and composite those instead of drawing directly to screen buffer and 2. always represent draw coordinates in ' | The goals here are to 1. render page graphics to textures in memory and composite those instead of drawing directly to screen buffer and 2. always represent draw coordinates in ' | ||
Line 168: | Line 166: | ||
(//and// it's a correctness improvement -- it means we should be able to draw text non-distorted in the real world, not relying on the projector pixel grid as we do now.) | (//and// it's a correctness improvement -- it means we should be able to draw text non-distorted in the real world, not relying on the projector pixel grid as we do now.) | ||
- | Broke up the Vulkan gpu.folk more cleanly into gpu.folk, gpu/ | + | Broke up the Vulkan gpu.folk more cleanly into gpu.folk, gpu/ |
Made more of the operations run concurrently (and in arbitrary threads) in normal Whens instead of one big GPU loop, which should make the system more robust (and mean that stuff like new-shader compilation doesn' | Made more of the operations run concurrently (and in arbitrary threads) in normal Whens instead of one big GPU loop, which should make the system more robust (and mean that stuff like new-shader compilation doesn' | ||
Line 174: | Line 172: | ||
It's cool to think about how much draw logic can be implemented using idiomatic Folk constructs, and it's a good test of how expressive we can make Folk. | It's cool to think about how much draw logic can be implemented using idiomatic Folk constructs, and it's a good test of how expressive we can make Folk. | ||
- | **Laptop universe | + | Lots of weird images like this to test drawing in an image and then drawing that image onto the screen: |
- | I've been testing a lot on my laptop, which has produced some side issues: | + | {{:newsletters:pasted: |
- | * TODO: Brought back hot swap! | + | |
- | * Now working on something like '' | + | |
- | These two have a similar energy: they both are part of a whole constellation of safety concerns I have about Folk programs. Basically, a Folk program needs to be cancelable, it needs to be hot-swappable (that is, you retract it, clean up all its stuff, then assert a new version of it that needs to do a lot of the same things). That's a pretty high bar! [[https://social.omar.website/ | + | (here, was also encountering |
- | **Inter-thread shared objects** | + | === Laptop universe and safety concerns === |
+ | |||
+ | I've been testing a lot on my laptop, which has produced some side quests: | ||
+ | |||
+ | | ||
+ | | ||
+ | * New version of '' | ||
+ | * New finalizer concept so we can release GPU resources in statements safely? | ||
+ | * {{newsletters: | ||
+ | |||
+ | These all have a similar energy: they both are part of a whole constellation of safety concerns I have about Folk programs. Basically, a Folk program needs to be cancelable, it needs to be hot-swappable (that is, you retract it, clean up all its stuff, then assert a new version of it that presumably wants to do a lot of the same things). That's a pretty high bar! [[https:// | ||
+ | |||
+ | Another class of issue is queueing issues, where a thread (usually the sysmon thread) freezes and the rest of the system gets overrun by clock events and/or garbage and crashes: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | === Inter-thread shared objects | ||
(I still don't know if we'll merge this, but) I've been noodling some more on the concept of inter-thread shared objects (see [[newsletters/ | (I still don't know if we'll merge this, but) I've been noodling some more on the concept of inter-thread shared objects (see [[newsletters/ | ||
- | ** Mason' | + | I've been trying an approach from last month (which does feel actually-implementable) where we only / |
- | Mason: | + | |
- | </details> | + | {{newsletters: |
+ | |||
+ | But there are so many trade-offs (now shimmering is just temporary for shared objects, now we have to track lots more stuff, etc) that I don't know if it's worth it compared to the current folk2 approach of just caching everything. Hmmmm. | ||
+ | |||
+ | == Mason' | ||
+ | |||
+ | Mason: I've been tinkering with preventing shared objects from shimmering, so that they can be safely shared across threads. It's been fairly straightforward, | ||
==== Outreach and other systems ==== | ==== Outreach and other systems ==== | ||
- | * [[https:// | + | * Mason updated the [[https:// |
* {{newsletters: | * {{newsletters: | ||
- | * Mason and [[[[https:// | + | * Mason and [[https:// |
- | * Paul: "pics from our meetup last week, had someone at the meetup talk about a "chemistry computer" | + | * Paul from [[https:// |
* {{newsletters: | * {{newsletters: | ||
* Mason tested out the portability of '' | * Mason tested out the portability of '' | ||
Line 202: | Line 220: | ||
* Rob got an AAXA 4K1 projector and used it to fashion his own Folk lamp: | * Rob got an AAXA 4K1 projector and used it to fashion his own Folk lamp: | ||
* {{newsletters: | * {{newsletters: | ||
- | * Rob, Naveen | + | * Rob, Naveen, Paul, and Andrés talked about how to talk about Folk (if you have another way of describing Folk to people, let us know over email or in our Discord): |
* {{newsletters: | * {{newsletters: | ||
* {{newsletters: | * {{newsletters: | ||
Line 226: | Line 244: | ||
* **Our next Folk open house is [[https:// | * **Our next Folk open house is [[https:// | ||
- | * Omar: do another design pass, put up gadget design on GitHub | + | * Omar: do another |
* Omar: finish render-to-texture and make folk2 pull request | * Omar: finish render-to-texture and make folk2 pull request | ||
* Maybe start working on dual-camera and self-calibration/ | * Maybe start working on dual-camera and self-calibration/ | ||
- | | + | * Omar: I'm bothered by the baseline-mediocre state of calibration and think we need some new approaches to keep the system calibrated over time -- maybe self-calibration by periodically projecting a tag somewhere on the table; maybe a lightweight form of calibration that just adjusts extrinsics and is easy; maybe an iterative calibration that continuously adjusts (as opposed to the 10-pose batch status quo) so you can really tune the fringes of the projector-camera volume |
+ | * Andrés: finish video playback | ||
+ | * Andrés: get dot detector demo working in 3D coordiantes | ||
+ | * Andrés: Kosmik integration demo | ||
+ | | ||
===== Links we've enjoyed ===== | ===== Links we've enjoyed ===== | ||
Line 243: | Line 265: | ||
* https:// | * https:// | ||
* https:// | * https:// | ||
+ | * https:// | ||
==== Andrés ==== | ==== Andrés ==== | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// |
newsletters/2025-03.1743471741.txt.gz · Last modified: 2025/04/01 01:42 by osnr