User Tools

Site Tools


newsletters:2024-05

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
newsletters:2024-05 [2024/06/02 20:58] – [3D calibration] osnrnewsletters:2024-05 [2024/06/03 00:45] (current) – [New parallel evaluator] osnr
Line 32: Line 32:
       * {{newsletters:img_5525.gif}}       * {{newsletters:img_5525.gif}}
     * Setup at the Clive Davis Gallery:     * Setup at the Clive Davis Gallery:
-      * {{newsletters:img_5505-medium.jpeg?300px}} {{newsletters:img_5508-medium.jpeg?300px}}+      * {{newsletters:img_8712.jpeg?250px}} {{newsletters:img_5505-medium.jpeg?250px}} {{newsletters:img_5508-medium.jpeg?250px}} {{newsletters:img_8532.jpeg?250px}}
       * Andrés and Omar disassembled the cart system from ITP (in Downtown Brooklyn) and brought it all back to the studio in East Williamsburg:       * Andrés and Omar disassembled the cart system from ITP (in Downtown Brooklyn) and brought it all back to the studio in East Williamsburg:
-        * {{newsletters:omar_andre-s_traveling_back.jpeg?400px}}+        * {{newsletters:omar_andre-s_traveling_back.jpeg?300px}}
  
 ==== Small system improvements ==== ==== Small system improvements ====
Line 44: Line 44:
     * Slightly updated the [[guides:gpu|GPU guide]] to reflect this     * Slightly updated the [[guides:gpu|GPU guide]] to reflect this
   * [[https://mmm.s-ol.nu|s-ol bekic]] added support for [[https://git.s-ol.nu/forks/folk/-/tree/printer-config/|paginating long programs]] so they print on multiple pages! (as well as A4 support) [[https://github.com/FolkComputer/folk/issues/58|we've wanted this for a while]]   * [[https://mmm.s-ol.nu|s-ol bekic]] added support for [[https://git.s-ol.nu/forks/folk/-/tree/printer-config/|paginating long programs]] so they print on multiple pages! (as well as A4 support) [[https://github.com/FolkComputer/folk/issues/58|we've wanted this for a while]]
 +  * s-ol made a lot of [[https://github.com/FolkComputer/folk-live-build/pull/4|improvements to the live USB setup.folk config file]], so you can set hostname and configure a printer
 +    * Omar added persistence of calibration and printed programs, and fixed file permissions for git pull, so the live USB is totally usable as a long-term system now!
   * Omar did a cleanup of the repo, removing the pi/ and play/ folder (preparing for opening the repo more to the public)   * Omar did a cleanup of the repo, removing the pi/ and play/ folder (preparing for opening the repo more to the public)
     * Inlined hardware interface code into the virtual-programs -- should make it much easier to read since all GPU stuff is in one file, all AprilTag stuff is in one file, all camera stuff is in one file, etc     * Inlined hardware interface code into the virtual-programs -- should make it much easier to read since all GPU stuff is in one file, all AprilTag stuff is in one file, all camera stuff is in one file, etc
Line 56: Line 58:
     * {{newsletters:327843571-24ed42ca-6762-42b3-8b90-796f81cc9251.gif}}     * {{newsletters:327843571-24ed42ca-6762-42b3-8b90-796f81cc9251.gif}}
   * Omar has been working a bit on the portable gadget from last month   * Omar has been working a bit on the portable gadget from last month
-    * Got a good hand grip, working on and off on CAD for enclosure (need to fit Pi, Pi camera, threaded inserts for hand grip and projector)+    * Got a good hand grip, working on and off on CAD for enclosure (need to fit Pi, Pi camera, threaded inserts for hand grip and projector, and be able to physically fit my hand in to assemble all of it; think I need to break it up into panels) 
 +    * {{newsletters:img_8044.jpeg?0x300px}} {{newsletters:img_8568.jpeg?0x300px}} 
 +  * Vedran [[https://github.com/FolkComputer/folk/pull/136|fixed a major breakage with printing AprilTags]] (came from changes to generate image to project AprilTag, broke printing) 
 +  * Omar did a tiny amount of work on RFID localization, fixing some misaligned RX/TX spacing issues -- still trying to get it to reliably run for more than 1 round (not slow down over time, bail/reset properly on fail so it can continue): 
 +    * {{:newsletters:pasted:20240602-230133.png?400px}}
  
 ==== CNC ==== ==== CNC ====
Line 63: Line 69:
  
  
-Omar finished porting Owen's gcode parser and tool calibration and preview logic. CNC tool calibration, where you move the machine to the 4 points and type their CNC coordinates in:+Omar finished porting [[https://owentrueblood.com|Owen's]] gcode parser and tool calibration and preview logic from [[https://github.com/jmpinit/projected-toolpath-preview|the original prototype]]. Here's how CNC tool calibration looks, where you move the machine to the 4 points and type their CNC coordinates in:
  
-{{newsletters:00-calibration-bed.jpeg?300px}}+{{:newsletters:pasted:20240602-225922.png?300px}} {{newsletters:00-calibration-bed.jpeg?300px}}
  
-and tested it with a basic job -- notice the projected preview in green vs. the actual cut in the wood:+Tested it with a basic job -- notice the projected preview in green vs. the actual cut in the wood:
  
 {{newsletters:03-after-cut.jpeg?300px}} {{newsletters:03-after-cut.jpeg?300px}}
Line 87: Line 93:
  
 Prompted by the portable gadget and the CNC demo, Omar has been picking 3D calibration back up. We're hoping to get it merged next month in a backward-compatible way, so we don't have to port everything from 2D to 3D immediately. Prompted by the portable gadget and the CNC demo, Omar has been picking 3D calibration back up. We're hoping to get it merged next month in a backward-compatible way, so we don't have to port everything from 2D to 3D immediately.
 +
 +{{:newsletters:pasted:20240602-224725.png?500px}}
 +
 +{{:newsletters:pasted:20240602-230714.png?500px}}
  
 It was in decent shape in December, so work on 3D calibration this month has involved a lot of small/polish tasks: It was in decent shape in December, so work on 3D calibration this month has involved a lot of small/polish tasks:
Line 93: Line 103:
   * adding 2D compatibility in (it should be able to also do 2D calibration at the same time, if you capture some flat poses)   * adding 2D compatibility in (it should be able to also do 2D calibration at the same time, if you capture some flat poses)
   * support for choosing display and choosing camera (so we can reinitialize the camera at higher resolution when we calibrate -- 720p usually isn't enough -- and so I can test on a laptop plugged into external webcam and projector)   * support for choosing display and choosing camera (so we can reinitialize the camera at higher resolution when we calibrate -- 720p usually isn't enough -- and so I can test on a laptop plugged into external webcam and projector)
 +    * removes weird vestigial dependence on fbset, uses the proper Vulkan mode-finding stuff to get the default screen resolution!
   * worked on calibration UI   * worked on calibration UI
     * you can now see the number of poses projected on the calibration board (so you know how far into the calibration you are + whether you should be capturing a flat table pose or an in-the-air pose)     * you can now see the number of poses projected on the calibration board (so you know how far into the calibration you are + whether you should be capturing a flat table pose or an in-the-air pose)
       * {{newsletters:pose-1717219170951-0.jpeg?300px}} {{newsletters:pose-1717219207092-7.jpeg?300px}}       * {{newsletters:pose-1717219170951-0.jpeg?300px}} {{newsletters:pose-1717219207092-7.jpeg?300px}}
     * [[https://social.omar.website/@omar/statuses/01HYNYXKR4XPMGRN75FPR1VNYA|little nice UI thing]] of pointing out the inner tag length that the user should measure in green     * [[https://social.omar.website/@omar/statuses/01HYNYXKR4XPMGRN75FPR1VNYA|little nice UI thing]] of pointing out the inner tag length that the user should measure in green
-      * {{:newsletters:pasted:20240602-205816.png?600px}}+      * {{:newsletters:pasted:20240602-205816.png?500px}}
   * maybe trying to improve accuracy a little bit   * maybe trying to improve accuracy a little bit
   * performance stuff (actually very related to improving accuracy, it might be the main problem -- the more latency you have, the more time the board position can drift in your hand, reducing calibration accuracy)   * performance stuff (actually very related to improving accuracy, it might be the main problem -- the more latency you have, the more time the board position can drift in your hand, reducing calibration accuracy)
  
 ==== New parallel evaluator ==== ==== New parallel evaluator ====
 +
 +Omar has been doing a lot of work on the new folk2 evaluator (as discussed in previous newsletters, aiming for much better performance, lower latency, higher reliability, something more like Erlang w/ preemptive multitasking). 
 +
 +  * Added basic support for Collect
 +  * Added support for text & labelling
 +  * Added support for images
 +  * Fixed boolean support, array rtype support with C FFI
 +  * Fixed some C/library concurrency issues, fixed incorrect locking on Holds
 +  * Fixed really weird lldb issue with C FFI? Don't really understand this
 +    * {{:newsletters:pasted:20240602-214914.png?500px}}
 +  * Either very clever or a terrible hack: use SIGUSR1 to interrupt arbitrary work on other threads that depends on a retracted statement
 +    * works for anything in Tcl, even infinite loops, etc. but doesn't interrupt C work (like a C infinite loop) because it depends on the Jim interpreter running its internal signal handler and checking its internal signal flag a lot (which is built-in behavior in Jim)
 +      * but could write our own signal handler, or use another signal after a few tens of milliseconds to hard-abort stuff that didn't respond, or something
 +    * It's not even clear if this is desirable in all cases: what if you 'livelock' because you're doing work that takes 500ms per camera frame? the behavior you want is to let each iteration run to completion, then start the next one, not just interrupt them all the time so that none of them ever finishes
 +      * maybe desired abort/fan-out behavior needs to be specified for each When? or could dynamically schedule?
 +    * useful for code that infinite-loops (like the Collect implementation right now) so it can get automatically reaped by the evaluator when the Collect goes away
 +  * Thread-local workqueues based on Chase-Lev deque ([[https://www.dre.vanderbilt.edu/~schmidt/PDF/work-stealing-dequeue.pdf|original paper]]; [[https://fzn.fr/readings/ppopp13.pdf|C11 implementation]]; [[https://wingolog.org/archives/2022/10/03/on-correct-and-efficient-work-stealing-for-weak-memory-models|Andy Wingo's very useful note]] that points out some issues like [[https://github.com/wingo/whippet/commit/56aad402c9504b63d4f7b9f250e7bd931228d7c4|this]])
 +    * Replaces global mutex-protected priority queue; should be faster and better at natural load balancing across CPUs/threads, also lets us lock things to threads more cleanly
 +    * Also [[http://15418.courses.cs.cmu.edu/spring2017/lecture/progperf1/slide_019|these slides about how to deal with dependencies, scheduling in general]]
 +  * Added trace page (like the log we have in mainline Folk) for debugging specific leak or elision issues (why is this statement still around? why didn't this statement go through?)
 +    * {{:newsletters:pasted:20240603-004516.png?0x500px}}
 +
 +In terms of functionality, it's surprisingly almost caught up to mainline Folk -- the real issues are around performance and correctness :-)
 +
 +(Some of the changes in the rewrite are already paying off and got backported to mainline Folk: inlining of pi/ libraries into virtual programs, use of Vulkan built-in mode-finding for displays instead of fbset)
  
 ==== Friends and outreach ==== ==== Friends and outreach ====
  
   * May open house:   * May open house:
-    * It was small but fun, a lot of playing around with Folk programs. Andrés put a program on their hat, allowing them to look at things on the table and label them "Hello"+    * lot of playing around with Folk programs / talking to [[https://lord.io|Robert]] about reactivity and spreadsheets and text editing. Andrés put a program on their hat, allowing them to look at things on the table and label them "Hello"
     * {{newsletters:img_8596.jpeg?300px}} {{newsletters:img_8599.jpeg?300px}} {{newsletters:img_8602.jpeg?300px}} {{newsletters:img_8607.jpeg?300px}}     * {{newsletters:img_8596.jpeg?300px}} {{newsletters:img_8599.jpeg?300px}} {{newsletters:img_8602.jpeg?300px}} {{newsletters:img_8607.jpeg?300px}}
-  * [[https://mmm.s-ol.nu/|s-ol]] set up a new Folk system in Milan, bringing the total to 22 systems:+  * [[https://mmm.s-ol.nu/|s-ol]] [[https://merveilles.town/@s_ol/112461205136786159|set up a new Folk system]] at his lab in Milan:
     * {{:newsletters:pasted:20240601-142556.png?500px}}     * {{:newsletters:pasted:20240601-142556.png?500px}}
   * [[https://www.forresto.com|Forrest O.]] has been organizing their Folk table -- it's looking really nice:   * [[https://www.forresto.com|Forrest O.]] has been organizing their Folk table -- it's looking really nice:
Line 116: Line 152:
  
   * **Our next [[https://partiful.com/e/GVKKlfgZjh2t3kEI3vQv|Folk open house is in the afternoon of Wednesday, June 26]] at our studio in East Williamsburg, Brooklyn.**   * **Our next [[https://partiful.com/e/GVKKlfgZjh2t3kEI3vQv|Folk open house is in the afternoon of Wednesday, June 26]] at our studio in East Williamsburg, Brooklyn.**
 +  * Video support?
 +  * We want to do a larger event as 3D calibration and/or the new evaluator and/or a new program count milestone come in. Watch this space
 +  * Merge 3D calibration into main and start porting decorations/apps to use it natively
 +  * Performance and correctness push on the parallel evaluator...
 +  * Try to get RFID caught up
 +  * Do another projector gadget iteration
 +  * CNC + 3D calibration?
 +  * Open up the repo? Docs for that?
 +  * s-ol working on international keyboard support; need to review and merge
  
 ===== Links we've enjoyed ===== ===== Links we've enjoyed =====
Line 124: Line 169:
   * [[https://emreed.net/hand-held|The Handheld Is Dead! Long Live The Handheld!]] (via [[https://liuleslie.github.io|Leslie]])   * [[https://emreed.net/hand-held|The Handheld Is Dead! Long Live The Handheld!]] (via [[https://liuleslie.github.io|Leslie]])
   * [[https://x.com/melodyadjei/status/1793291048363384877|"The angel librarian puts their reviews linked to QR codes and inside each book so they can hear their friends thoughts before checking them out"]]   * [[https://x.com/melodyadjei/status/1793291048363384877|"The angel librarian puts their reviews linked to QR codes and inside each book so they can hear their friends thoughts before checking them out"]]
-  * [[https://opponent.systems|Opponent]]+  * [[https://x.com/jordanrcrook/status/1796543968395886682|Opponent]] 
 +  * [[http://15418.courses.cs.cmu.edu/spring2017/lecture/progperf1|Lecture 6: Perf Optimization I: Work Distribution and Scheduling]]
  
 ==== Andrés ==== ==== Andrés ====
  
   * [[https://www.youtube.com/watch?v=Inxp6LY1y_4|Attention Receipts: Utilizing Materiality of Receipts to Improve Screen-time Reflection [CHI2024]]] — cool to see a custom receipt printer used as a persistent utility.   * [[https://www.youtube.com/watch?v=Inxp6LY1y_4|Attention Receipts: Utilizing Materiality of Receipts to Improve Screen-time Reflection [CHI2024]]] — cool to see a custom receipt printer used as a persistent utility.
newsletters/2024-05.1717361911.txt.gz · Last modified: 2024/06/02 20:58 by osnr

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki