newsletters:2024-11
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
newsletters:2024-11 [2024/12/01 01:46] – [New Folk evaluator] osnr | newsletters:2024-11 [2024/12/01 04:09] (current) – osnr | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== November 2024 newsletter | + | ====== November 2024 newsletter ====== |
+ | |||
+ | (Our next Folk open house is [[https:// | ||
- | (Our next Folk open house is at noon on Sunday, December 15, at our studio in East Williamsburg, | ||
===== What we've been up to ===== | ===== What we've been up to ===== | ||
==== Small system improvements ==== | ==== Small system improvements ==== | ||
- | * TODO: Print notice when you hit Print, both on web and tabletop editor | + | * Andrés added: |
- | * TODO: New /programs design with categories; much easier to read | + | * Print notice when you hit Print, both on web and tabletop editor |
+ | * {{newsletters:img_8911-medium.jpeg? | ||
+ | * New '' | ||
+ | * {{: | ||
==== New Folk evaluator ==== | ==== New Folk evaluator ==== | ||
- | Omar: I've spent most of this month working on the new evaluator (folk2). I've made a huge amount of progress; it honestly feels like I spent months stuck on blinking/ | + | Omar: I've spent most of this month working on the new evaluator (folk2). |
+ | |||
+ | I've made a huge amount of progress; it honestly feels like I spent months stuck on blinking/ | ||
(Remember, the goal of folk2 is to have 60fps under bigger workloads, so we can use multiple tabletop editors at once & do other demanding stuff natively in the system. I think it's just important that the system feel really good and smooth, anyway. Need to be running programs in parallel, avoiding queueing, also just general evaluator optimization. Another goal is to make the system hard to crash or freeze just because one program misbehaves, as in any other operating system.) | (Remember, the goal of folk2 is to have 60fps under bigger workloads, so we can use multiple tabletop editors at once & do other demanding stuff natively in the system. I think it's just important that the system feel really good and smooth, anyway. Need to be running programs in parallel, avoiding queueing, also just general evaluator optimization. Another goal is to make the system hard to crash or freeze just because one program misbehaves, as in any other operating system.) | ||
Line 17: | Line 23: | ||
There' | There' | ||
- | === What were the bugs? === | + | Notice how the camera hits 60fps but the full-frame detection is only 20-30fps (this is using a 1080p image): |
- | TODO | + | {{: |
- | === Other improvements === | + | === The bugfixes and improvements === |
- | * '' | + | * '' |
- | * tail trace | + | * Tail trace so you can trace latest stuff going on |
- | * atomic | + | * Replaced the broken refcount scheme with gen+rc+alive |
- | * timestamp | + | * Now timestamping |
- | * fully separate | + | * Fully separated |
- | * fix locking of destructor list | + | * Fixed locking of destructor list |
* {{: | * {{: | ||
- | * fix locking of child match/ | + | * Fixed locking of child match/ |
- | * steal-half | + | * Steal-half now actually works (fixed overflow, fixed stealing 100% instead of half) |
- | * fix lsorts in infinite loops (not using now that we have serial When though) | + | * Fixed lsorts in infinite loops (not using now that we have serial When though) |
- | * show each statement' | + | * Now showing |
* {{newsletters: | * {{newsletters: | ||
- | * ports from folk1: | + | * Ports from folk1: |
* dashed-line (want it for gadget marching ants) | * dashed-line (want it for gadget marching ants) | ||
* camera-rpi throughput improvement using YUV420 format | * camera-rpi throughput improvement using YUV420 format | ||
* implemented clock time (also want it for marching ants, and any kind of animation really) | * implemented clock time (also want it for marching ants, and any kind of animation really) | ||
* now runs on an independent clock from the frames! every 2ms | * now runs on an independent clock from the frames! every 2ms | ||
- | * | + | * hack for ' |
+ | * incremental tag detection to be able to hit 60fps | ||
Line 47: | Line 54: | ||
== Performance profiling == | == Performance profiling == | ||
- | TODO: Performance profiling | + | Performance |
- | I'm surprised at how much of the flamegraphs are just threading stuff, not CPU. Maybe I'm misreading | + | I've already fixed a lot of weird issues using flamegraph profiling |
- | == Heap profiling == | + | {{: |
- | There are still persistent | + | I'm surprised at how much of the flamegraphs |
- | TODO: Memory | + | {{:newsletters: |
+ | |||
+ | Now working on actually using [[https:// | ||
+ | |||
+ | == Heap profiling | ||
+ | |||
+ | There are still persistent and pretty bad memory leaks on folk2, from 10MB to 200MB per second depending on how much stuff is out. I want to get to these soon after I fix the performance stuff. | ||
=== Various unsuccessful quests === | === Various unsuccessful quests === | ||
* Heap profiling with gperftools | * Heap profiling with gperftools | ||
+ | * Too slow, doesn' | ||
* mimalloc arenas | * mimalloc arenas | ||
+ | * Might still be useful for images and stuff, but we'd need to migrate the arena between matches and statements as statements get reused, it's more complicated than expected | ||
* Sealed Tcl objects | * Sealed Tcl objects | ||
+ | * I had been hoping to do this forever -- it seems elegant and cool and efficient -- but it turned out to be much harder than expected when I looked at it -- would need to change a lot of callsites in Jim Tcl (anywhere it shimmers an object) to make it work, or do horrible hacks with COW pages. | ||
+ | * {{: | ||
* CPU-oriented scheduling | * CPU-oriented scheduling | ||
* Spinlocks | * Spinlocks | ||
+ | * [[https:// | ||
+ | * I got too excited since we have fairly tight locking discipline in folk2 | ||
+ | * Look at all this spinning; it's not an improvement over mutexes: | ||
+ | * {{: | ||
==== RFID localization ==== | ==== RFID localization ==== | ||
Omar: Didn't have time to do much this month, but I did figure out how to make the IB program not crash in its new connection-dependent style. We now just drop samples from the radio until a PC connects and we set up a FIFO and RFID protocol parser then. (The current goal is to get IB and OOB both running and synced up to a reset signal over TCP from a PC, then stream info from IB and OOB to the PC.) | Omar: Didn't have time to do much this month, but I did figure out how to make the IB program not crash in its new connection-dependent style. We now just drop samples from the radio until a PC connects and we set up a FIFO and RFID protocol parser then. (The current goal is to get IB and OOB both running and synced up to a reset signal over TCP from a PC, then stream info from IB and OOB to the PC.) | ||
+ | |||
+ | This project isn't particularly blocked on anything, thankfully -- just needs more time to put IB and OOB together and implement localization and then release it. | ||
==== Portable gadget ==== | ==== Portable gadget ==== | ||
Line 93: | Line 116: | ||
These are all ' | These are all ' | ||
- | I've been talking about a trigger button for a while. Realized that some commercially available camera grips just use an audio jack. This seems good. Threw it into part orders and will probably throw it into next design rev. | + | I've been talking about a trigger button for a while, but been blocked by figuring out what connectors/ |
+ | |||
+ | as for what to do with the trigger button, I'm thinking about the Super Mario Galaxy Wii remote interactions and sounds... | ||
(I also threw a speaker into part orders.) | (I also threw a speaker into part orders.) | ||
- | I' | + | (And the battery system -- there are a bunch of Waveshare products that can supply the needed 5V5A to power everything -- I' |
=== New off-the-shelf revision === | === New off-the-shelf revision === | ||
Line 111: | Line 137: | ||
So I spent a while looking at Pi alternatives. | So I spent a while looking at Pi alternatives. | ||
- | * The [[http:// | + | * The [[http:// |
* It does work (but, again, the lack of a decent camera solution is a dealbreaker): | * It does work (but, again, the lack of a decent camera solution is a dealbreaker): | ||
* {{newsletters: | * {{newsletters: | ||
Line 123: | Line 149: | ||
* Had our monthly open house: | * Had our monthly open house: | ||
- | * {{: | + | * {{: |
* Nice to see people playing around with the cube, the portable gadget (now that we have two, we can have one arm-mounted and one handheld), and editing programs on the table | * Nice to see people playing around with the cube, the portable gadget (now that we have two, we can have one arm-mounted and one handheld), and editing programs on the table | ||
* Special guests: Paul from Greenville, SC where they' | * Special guests: Paul from Greenville, SC where they' | ||
Line 129: | Line 155: | ||
===== What we'll be up to in December ===== | ===== What we'll be up to in December ===== | ||
- | * **Our next Folk open house is at noon on Sunday, December 15, at our studio in East Williamsburg, | + | * **Our next Folk open house is [[https:// |
* Fix blinking in new evaluator (that is, performance optimization so the programs resolve under 16ms) | * Fix blinking in new evaluator (that is, performance optimization so the programs resolve under 16ms) | ||
* Create a pull request for the new evaluator | * Create a pull request for the new evaluator | ||
Line 138: | Line 164: | ||
* Gadget autoadjust exposure maybe? | * Gadget autoadjust exposure maybe? | ||
* RFID | * RFID | ||
+ | * Actually revisit video support | ||
+ | * More convenient shader language | ||
+ | * Experiment with more tangible papercraft interface elements for Folk programs (using cardboard, rubberbands, | ||
+ | * Revisit a bunch of smaller system improvements that we've had in the backlog for a while | ||
===== Links we've enjoyed ===== | ===== Links we've enjoyed ===== | ||
Line 152: | Line 182: | ||
==== Andrés ==== | ==== Andrés ==== | ||
- | + | * [[https:// | |
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * Leaflet is hosting an online [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// |
newsletters/2024-11.1733017565.txt.gz · Last modified: 2024/12/01 01:46 by osnr