newsletters:2025-02
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
newsletters:2025-02 [2025/02/28 21:08] – [February 2025 newsletter] osnr | newsletters:2025-02 [2025/03/31 12:18] (current) – [What we'll be up to in February] osnr | ||
---|---|---|---|
Line 2: | Line 2: | ||
* Andrés’s talk from October of last year, at Causal Islands in Berlin, is now up on YouTube: {{youtube> | * Andrés’s talk from October of last year, at Causal Islands in Berlin, is now up on YouTube: {{youtube> | ||
- | * Omar has been promising people a [[https:// | + | * Omar has been promising people a [[/ |
* Our next Folk open house is [[https:// | * Our next Folk open house is [[https:// | ||
Line 42: | Line 42: | ||
=== Snapshots / state-saving / program-saving === | === Snapshots / state-saving / program-saving === | ||
+ | |||
+ | >> Is there a way to Hold something on disk so a page has permanent information? | ||
+ | >> Or is snapshotting the goal? | ||
+ | > | ||
+ | > we don't have this right now but i think it would be great to have | ||
+ | > | ||
+ | > 1. subsume awkward hacks where we use files in ad-hoc ways for persistence (.folk, .meta.folk, calibration) | ||
+ | > | ||
+ | > 2. crash resilience (your editor state can get preserved across crashes, etc) | ||
+ | > | ||
+ | > i think of snapshotting as a way to preserve/ | ||
+ | |||
+ | (snapshotting being "where you have virtual thumbnails on the printed page to represent all the programs, so they' | ||
+ | the thumbnail regions could all be captured from table session when the snapshot is taken (& shrunk down to fit on page), or i guess they could just be a grid if you have a statement that is just a straight list of program numbers like you propose?" | ||
+ | |||
+ | >> Could you have a separate process that journals the holds and writes to disk on crash or quit? | ||
=== Intercept discussion === | === Intercept discussion === | ||
Line 48: | Line 64: | ||
{{: | {{: | ||
+ | |||
+ | (Omar: "side note: it would be cool if (maybe if we had statement blocking) you could implement smoothing and freezing without needing to modify the virtual program, like you could just impose your own mixin ' | ||
Mason proposal to have Intercept block: | Mason proposal to have Intercept block: | ||
Line 103: | Line 121: | ||
{{: | {{: | ||
- | Designed a new case that is longer (so we can fit a back panel on the back and fully enclose it), plus the back panel (with holes for speaker & power button & power jack). | + | Designed a new case that is longer (so we can fit a back panel on the back and fully enclose it), plus the back panel (with holes for speaker & power button & power jack). |
{{newsletters: | {{newsletters: | ||
+ | |||
+ | (Annoyingly, | ||
Next: calibrate it and figure out how to make it produce its own Wi-Fi so we can connect laptop to it to calibrate/ | Next: calibrate it and figure out how to make it produce its own Wi-Fi so we can connect laptop to it to calibrate/ | ||
Line 136: | Line 156: | ||
* Fixed [[https:// | * Fixed [[https:// | ||
- | * [[https:// | + | * [[https:// |
- | * Inlined a lot of operations (Claim, Wish, When) so you don't have to trampoline to the workqueue (slow) to do them. Can do this because we don't lock the db anymore for those so is ok to just do them right away. The workqueue is pretty much just for queueing Tcl evals now | + | * Seems to work well in practice! Utilization of CPUs in Tracy looks pretty good |
+ | * Inlined a lot of operations (Claim, Wish, When) so we don't have to trampoline to the workqueue (slow) to do them. Can do this because we don't lock the db anymore for those so is ok to just do them right away. The workqueue is pretty much just for queueing Tcl evals now | ||
* Per-thread object caching | * Per-thread object caching | ||
* Lots of little improvements to object reuse (don't set source info because that stomps the whole object representation) | * Lots of little improvements to object reuse (don't set source info because that stomps the whole object representation) | ||
Line 145: | Line 166: | ||
* Overall fixed keyboard so you can actually edit stuff; reap keyboard events off-thread | * Overall fixed keyboard so you can actually edit stuff; reap keyboard events off-thread | ||
* Reap AprilTags when flipped over (fixes issue Rob has below) | * Reap AprilTags when flipped over (fixes issue Rob has below) | ||
- | * Fixed stdout printing! this has been a minor annoyance for ages | + | * Fixed stdout printing |
* Fixed repeated reloading of C modules which was a big performance drag | * Fixed repeated reloading of C modules which was a big performance drag | ||
* ./folk PROGRAM.folk now runs the PROGRAM in a When context, instead of a bare context, so you can do Wish/ | * ./folk PROGRAM.folk now runs the PROGRAM in a When context, instead of a bare context, so you can do Wish/ | ||
- | * Failed project: the ' | + | * Failed project |
+ | * Burned a lot of time just getting the reference counting of these envs to be correct (given destructors have envs, functions may outlive their original When, etc) | ||
+ | * Broke too much stuff: it breaks a lot of When deduplication because those pointers are always unique, so two Whens with identical captured variables no longer merge | ||
+ | * Also would create awkward JS-like bugs if you call Hold! in a loop (the environment ID & code is always the same, so the Hold! doesn' | ||
Most important, I've reconciled folk2 so it now lives in a real branch on the Folk repo (and not a separate repo that can't actually merged), can be tested by other people and ultimately PRed and merged. Deleted a lot of extra files from folk1 while doing that reconciliation, | Most important, I've reconciled folk2 so it now lives in a real branch on the Folk repo (and not a separate repo that can't actually merged), can be tested by other people and ultimately PRed and merged. Deleted a lot of extra files from folk1 while doing that reconciliation, | ||
Anyway, immediate next steps are to fix editor blinking while you type, then make a draft pull request. | Anyway, immediate next steps are to fix editor blinking while you type, then make a draft pull request. | ||
+ | |||
+ | === Editor blinking === | ||
+ | |||
+ | |||
+ | Notice the blinking of the editor -- this is extreme (other slow stuff is happening on the table), but it happens occasionally even while just normally typing/ | ||
+ | |||
+ | {{newsletters: | ||
+ | |||
+ | Tracy view when I type a bunch of stuff (see the blips on the keyboard thread for when I'm pressing keys) and the editor blinks out (see the dips on the plot at the bottom): | ||
+ | |||
+ | {{newsletters: | ||
+ | |||
+ | I did optimize the editor a bit by [[https:// | ||
=== Rob's test === | === Rob's test === | ||
Line 164: | Line 201: | ||
=== Shared immutable (immortal) objects === | === Shared immutable (immortal) objects === | ||
- | Omar: Mason and I spent a while throwing around ideas in Discord about how to share objects between threads (separate Jim interpreters) in folk2 without copying/ | + | Omar: Mason and I spent a while throwing around ideas in Discord about how to share objects between threads (separate Jim interpreters) in folk2 without copying/ |
- | (' | + | (' |
- | I think we have an OK plan for this, actually, and I [[https:// | + | I think we have an OK plan for this, actually, and I [[https:// |
==== Friends and outreach ==== | ==== Friends and outreach ==== | ||
Line 175: | Line 212: | ||
Our guest lecture to the [[https:// | Our guest lecture to the [[https:// | ||
- | We walked the students through our motivations for building Folk Computer, the unique capabilities of tangible spatial | + | We walked the students through our motivations for building Folk Computer, the unique capabilities of tangible spatial |
* The lecture room: | * The lecture room: | ||
Line 184: | Line 221: | ||
* {{newsletters: | * {{newsletters: | ||
* {{newsletters: | * {{newsletters: | ||
+ | |||
+ | (Omar: a fun moment was live-stabilizing the animation program from the tabletop editor using Mason' | ||
+ | |||
=== Open house === | === Open house === | ||
Line 193: | Line 233: | ||
* {{newsletters: | * {{newsletters: | ||
* {{newsletters: | * {{newsletters: | ||
+ | |||
+ | (Omar: a fun moment was when we were rolling Azlen' | ||
A group from Fractal Tech (nearby in NYC) came by the open house and are excited to set up their own system and do a launch event and hack day: | A group from Fractal Tech (nearby in NYC) came by the open house and are excited to set up their own system and do a launch event and hack day: | ||
Line 226: | Line 268: | ||
* Folk plugin for Procession that tells the LLM how to input/ | * Folk plugin for Procession that tells the LLM how to input/ | ||
- | ===== What we'll be up to in February | + | ===== What we'll be up to in March ===== |
* **Our next Folk open house is [[https:// | * **Our next Folk open house is [[https:// | ||
Line 252: | Line 294: | ||
==== Andrés ==== | ==== Andrés ==== | ||
- | * | + | * [[https:// |
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// |
newsletters/2025-02.1740776910.txt.gz · Last modified: 2025/02/28 21:08 by osnr