newsletters:2025-04
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
newsletters:2025-04 [2025/04/30 19:37] – osnr | newsletters:2025-04 [2025/05/01 01:57] (current) – osnr | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== April 2025 newsletter | + | ====== April 2025 newsletter ====== |
We've had a funding shortfall recently -- we'd really appreciate it if you [[https:// | We've had a funding shortfall recently -- we'd really appreciate it if you [[https:// | ||
- | We’ll be set up at Rhizome World on this Sunday, May 4 (at 161 Water Street in the Financial District). Feel free to say hello; we’ll also be running [[https:// | + | We’ll be setting |
If you want to stop by the studio, our next Folk open house is **[[https:// | If you want to stop by the studio, our next Folk open house is **[[https:// | ||
Line 11: | Line 11: | ||
==== Demos and applications ==== | ==== Demos and applications ==== | ||
- | * | + | * (Andrés) I gave a small talk and workshop to [[https:// |
==== General system improvements ==== | ==== General system improvements ==== | ||
- | * (Andrés) We merged | + | * (Andrés) We merged [[https:// |
* Re-activate [[https:// | * Re-activate [[https:// | ||
* {{youtube> | * {{youtube> | ||
* This also means the laser capability is back! (Side note: I love the dog getting to play with the laser here ... it makes me wonder what a Folk system specifically for entertaining / training pets could look like!) | * This also means the laser capability is back! (Side note: I love the dog getting to play with the laser here ... it makes me wonder what a Folk system specifically for entertaining / training pets could look like!) | ||
* {{youtube> | * {{youtube> | ||
- | * Add `Wish $this draws text " | + | * Add '' |
* {{youtube> | * {{youtube> | ||
* Tools for creating subregions: | * Tools for creating subregions: | ||
Line 86: | Line 86: | ||
I've spent a lot of this month working on the [[newsletters/ | I've spent a lot of this month working on the [[newsletters/ | ||
+ | |||
+ | Weird design choice for now: I got rid of the implicit parameter that passes screen resolution into every shader/ | ||
+ | |||
+ | == /images debug page == | ||
I added support for drawing text and images and AprilTags on the textures, which was hard to debug, so I added a [[https:// | I added support for drawing text and images and AprilTags on the textures, which was hard to debug, so I added a [[https:// | ||
Line 94: | Line 98: | ||
(most writable image textures are square 1024x1024 by default, and then we just resample them when we project them onto the display, which is why they' | (most writable image textures are square 1024x1024 by default, and then we just resample them when we project them onto the display, which is why they' | ||
- | |||
- | Weird design choice for now: I got rid of the implicit parameter that passes screen resolution into every shader/ | ||
== Destructors and ForEach! == | == Destructors and ForEach! == | ||
Line 107: | Line 109: | ||
(instead of just timing out camera images after some fixed period of time, or doing it on match unmatch which is unsafe since it doesn' | (instead of just timing out camera images after some fixed period of time, or doing it on match unmatch which is unsafe since it doesn' | ||
- | This involved some changes to refcount | + | This involved some changes to statement acquisition |
- | * If a When matches a statement, the statement's refcount | + | * When a When matches a statement, the statement is now acquired |
- | * Query!, which just returns a set of result statements, **does not acquire any of those statements.** **The destructor of any statement in the result set may run at any time once the Query! has returned.** So it'd be unsafe to access a camera image that you got from Query! without explicitly acquiring the owning statement first to make sure it sticks around | + | * But Query!, which returns a static |
* So ForEach! has been added for both ergonomic and safety reasons: ForEach! is like Query!, but you pass it a code block as last arg; it iterates and binds each result statement and runs the code block. In other words, it's like a mix of Query! (imperative semantics, doesn' | * So ForEach! has been added for both ergonomic and safety reasons: ForEach! is like Query!, but you pass it a code block as last arg; it iterates and binds each result statement and runs the code block. In other words, it's like a mix of Query! (imperative semantics, doesn' | ||
* < | * < | ||
Line 134: | Line 136: | ||
=== Memory leak === | === Memory leak === | ||
+ | |||
+ | Because I've been trying to run folk2 on the (RAM-constrained) gadget, I've been really wanting to fix the memory leaks in it. It's been tough. My hypothesis (from seeing Jim allocations get out of control and from manually inspecting the heap) is that it's mostly little Jim Tcl heap objects (Jim_Objs, mostly). But hard to trace causation beyond that point so far. | ||
< | < | ||
Line 139: | Line 143: | ||
- Address Sanitizer (new this month) | - Address Sanitizer (new this month) | ||
+ | - (This has been really useful for finding more serious bugs, too -- I found some use-after-frees and stuff like that) | ||
- {{newsletters: | - {{newsletters: | ||
- pprof (libtcmalloc) heap profiler | - pprof (libtcmalloc) heap profiler | ||
Line 156: | Line 161: | ||
It's getting kind of ridiculous how many different execution modes we have for folk2: | It's getting kind of ridiculous how many different execution modes we have for folk2: | ||
- | {{: | + | {{: |
(it is a lot easier to do all this in folk2 than in folk1, though, because folk2 is all one big process and most of its kernel is statically compiled) | (it is a lot easier to do all this in folk2 than in folk1, though, because folk2 is all one big process and most of its kernel is statically compiled) | ||
Line 185: | Line 190: | ||
For now, I guess we'll try to merge folk2 without even the cache, just string reparsing every block, and then later see if some of these other approaches can be revived and can help further. | For now, I guess we'll try to merge folk2 without even the cache, just string reparsing every block, and then later see if some of these other approaches can be revived and can help further. | ||
- | |||
- | ==== Outreach and other systems ==== | ||
- | |||
- | * TODO: Discord updates | ||
=== Open house === | === Open house === | ||
Line 195: | Line 196: | ||
* {{newsletters: | * {{newsletters: | ||
* {{newsletters: | * {{newsletters: | ||
- | |||
=== aci-d club visit === | === aci-d club visit === | ||
Line 211: | Line 211: | ||
=== Other visitors and interactions === | === Other visitors and interactions === | ||
- | * Andrés went to Christina Huang' | + | * (Andrés) I went to Christina Huang' |
- | * TODO (Andrés): | + | |
===== What we'll be up to in May ===== | ===== What we'll be up to in May ===== | ||
Line 241: | Line 240: | ||
==== Andrés ==== | ==== Andrés ==== | ||
- | * Vox graphics | + | * I've been reading about " |
+ | * I also really like NYU's Institute of Fine Arts' video [[https:// | ||
+ | * Fascinating paper on [[https:// | ||
+ | ]] — basically making small compliant mechanism machines using scoring and folding | ||
+ | * [[https:// | ||
+ | * [[https:// |
newsletters/2025-04.1746041842.txt.gz · Last modified: 2025/04/30 19:37 by osnr