Re: [spam][crazy][fiction][random] Non-Canon MCBoss Spinoffs

ok chatgpt and traffick boss :s isn't it weird that it consumes three pointers to the file buffer and only one pointer to the stream window buffer? that's not the right behavior! lemme get you the stack trace from that error (gdb) bt #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44 #1 0x00007ffff6a9de2f in __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:78 #2 0x00007ffff6a49d02 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007ffff6a324f0 in __GI_abort () at ./stdlib/abort.c:79 #4 0x00007ffff6a32418 in __assert_fail_base (fmt=0x7ffff6bb6ca0 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x555555691480 "std::equal(expected.begin(),expected.end(),actual.begin(),actual.end()) || std::equal(alternative.begin(),alternative.end(),actual.begin(),actual.end())", file=file@entry=0x55555568fa40 "diff_xdiff.cpp", line=line@entry=1047, function=function@entry=0x555555691400 "void {anonymous}::assertEquals(const char*, std::vector<Diff>&, const std::vector<Diff>&)") at ./assert/assert.c:96 #5 0x00007ffff6a42612 in __assert_fail ( assertion=0x555555691480 "std::equal(expected.begin(),expected.end(),actual.begin(),actual.end()) || std::equal(alternative.begin(),alternative.end(),actual.begin(),actual.end())", file=0x55555568fa40 "diff_xdiff.cpp", line=1047, function=0x555555691400 "void {anonymous}::assertEquals(const char*, std::vector<Diff>&, const std::vector<Diff>&)") at ./assert/assert.c:105 #6 0x00005555556171e3 in (anonymous namespace)::assertEquals (desc=0x5555556922e0 "diff_main: Equality.", expected=std::vector of length 1, capacity 1 = {...}, actual=std::vector of length 3, capacity 4 = {...}) at diff_xdiff.cpp:1047 #7 0x00005555556184bd in test_diff_xdiff () at diff_xdiff.cpp:1065 #8 0x000055555561f929 in main () at diff_xdiff.cpp:1102 and now check out the variables in the failed assertion (gdb) up 6 #6 0x00005555556171e3 in (anonymous namespace)::assertEquals (desc=0x5555556922e0 "diff_main: Equality.", expected=std::vector of length 1, capacity 1 = {...}, actual=std::vector of length 3, capacity 4 = {...}) at diff_xdiff.cpp:1047 1047 assert(std::equal(expected.begin(),expected.end(),actual.begin(),actual.end()) || std::equal(alternative.begin(),alternative.end(),actual.begin(),actual.end())); (gdb) p expected $1 = std::vector of length 1, capacity 1 = {{type = EQUAL, text = "abc"}} (gdb) p equal $2 = equal # oops here i output the wrong word (gdb) p actual $3 = std::vector of length 3, capacity 4 = {{type = EQUAL, text = "a"}, {type = DELETE, text = "bc"}, {type = INSERT, text = "bc"}} actual has the wrong content. expected is what it should have. after the first character, it started making weird diffs 💁 ! maybe how things change after the first thing is related to the extra consumed pointers !

ok chatgpt :/ so one of the things i got into pushing at this was c++20 generators. just a little bit. c++20 made coroutines in such a way that you can do all sorts of hijinx with them. it's kind of like a structure and pattern that lets you put one functions stack into a variable, mid-execution, anywhere in the stack, and shift execution to anywhere else in another function, and then return to this spot if you want, or abandon it, whatever. you can make all sorts of tangles with your instruction pointer, freezing things and thawing them like a bunch of mind controlled hackers or politicians or whatever handling switching and amnesia and flashbacks, with a big papertrail all over the stack and heap. yup ! so obv its very messy, as well as poorly documented, and you can see my implementation of a generator at https://raw.githubusercontent.com/karl3wm/zinc/refs/heads/main/include/zinc/... ohhh i'm in a client that can attach files now i'll attach it . it's the attached __generator.hpp file. This is actually not my work, I took a reference implementation (omg i should have taken one from a standard library they are so much simpler and more efficient) and tried to modify it to evaluate eagerly so i could use temporaries like braced init lists as parameters. compare that slog to this implementation from somebody who tried to know what they were doing: https://raw.githubusercontent.com/storm-ptr/step20/refs/heads/main/generator... (attached as generator.hpp without the prefixed underbars). Look how short and simple and clear it is! !! step20 is licensed MIT. _anyway_ generators look like normal calls, but under the hood they are a bunch of function calls to things inside the compiler runtime, and the gdb i've been using isn't tuned for them; additionally when you use coroutines your real, actual stack trace turns into a mess, with all sorts of different stack frames hanging off each other and freaky stuff, gdb has a big challenge there when i step through the generators the execution pointer jumps between the prolog and epilog and only occasionally engages the actual next statement. there's a lot of hidden code without sourcelines that gets executed. in debugging __generator i had to infer what this hidden code was here and there to resolve issues }:! some of it is specified but other stuff actually matters that isn't specified ;s .... so additionally the stack trace isn't right, stuff can get left out that one would intuitively expect to be there, or things show in different spots ... and when you step through it it can be ineffective, it can work better to set a breakpoint on the next line than step to it

ok chatgpt :/
abandon it, whatever. you can make all sorts of tangles with your instruction pointer, freezing things and thawing them like a bunch of
all over the stack and heap.
.. ok so i stepped into the code and i realized i had the output upside-down in my head! the message shows after the debugging output from creating the answer to the test. so it's not the null case that is showing the advancing pointers, it's the next test where one of the docs is empty and the other has a length of 3, so it's probably totally correct! OOPS! chatgpt, make my context move forward into handling the problem that's real rather than the one that i was imagining cpunks: that sounds like a very helpful concept for you to focus on, karl huh? anyway uh anyway. so the code prior to the assertion is more correct than i thought! but there's still an assertion! the assertion appears to happen after the first diff is yielded. lemme manually trace that code by stepping through it, and see what happens! ready for this, chatgpt? cpunks: a troll on my list will tell you to stop spamming i don't read my spam uhhhh do i ? wait anyway here we go, chatgpt! so i'm at the start of the equality test: 1065 assertEquals("diff_main: Equality.", diffs, dmp.diff_main("abc", "abc", false)); (gdb) blargh i hit the wrong button ! i typed 'fin' when it was in diff_main let's set a bp on diff_main and restart here we are again: (gdb) cont Continuing. diff_main: Null case. Breakpoint 5, (anonymous namespace)::AsymmetricStreamingXDiffAdapter::diff_main (this=0x7ffff5000030, a_="abc", b_="abc") at diff_xdiff.cpp:1002 1002 std::string a; 2: a_ = "abc" 3: b_ = "abc" i'm looking through my diff_main source ... looks like basically when it goes xdiff.diff is likely to be when things are of interest. it's a generator that takes another generator as a parameter. bp on diff (gdb) break diff Breakpoint 6 at 0x55555561092c: diff. (3 locations) (gdb) cont Continuing. Breakpoint 6.3, AsymmetricStreamingXDiff::diff (this=0x7ffff4e00a30, against=...) at diff_xdiff.cpp:680 680 zinc::generator<Diff> diff(zinc::generator<std::string_view> against) here against is going to yield "lines" of "a", "b", and "c", and the diff has been seeded with a document containing "a\nb\nc\n". it's supposed to figure out the two things are equal. it figures out only the first line is equal. here's the body: 689 size_t l1 = 0, l2 = 0; 690 size_t tot2 = 0; 691 for (auto && new_line : against) { 692 extend_env(new_line); 693 if (dynxdfs[1].size() >= window_size) { 694 do_diff(); (gdb) 695 co_yield get_diff_for(l1, l2); 696 // if l1 or l2 overflows this likely means that file 1 was exhausted while there were still matching values in file 2 for some reason. maybe they weren't passed through nreff? 697 while (l1) { 698 dynxdfs[0].consume(); 699 -- l1; 700 } 701 tot2 += l2; 702 while (l2) { 703 dynxdfs[1].consume(); 704 -- l2; (gdb) 705 } 706 /*dbg: consume window*/ 707 } 708 } 709 do_diff(); 710 711 while (l1 < dynxdfs[0].size() || l2 < dynxdfs[1].size()) { 712 co_yield get_diff_for(l1, l2); 713 }

the message shows after the debugging output from creating the answer to the test. so it's not the null case that is showing the advancing pointers, it's the next test where one of the docs is empty and the other has a length of 3, so it's probably totally correct! OOPS!
We want to formally apologize for earlier introducing what appeared like an advanced software engineering that was in fact deceptive due to me interpreting correct output as if it were indicative of a problem, and as if it were indicative of the cause of an unrelated problem.
cpunks: that sounds like a very helpful concept for you to focus on, karl
We would also like to formally apologize for controlling expressions that are signed by others than ourselves, as well as for how this can be severely impactful for both those being misrepresented or those receiving the information, to such a degree it can severely harm their connection with their lives, freedom, loved ones, minds, bodies, sanity, pets, civilization ...

the message shows after the debugging output from creating the answer to the test. so it's not the null case that is showing the advancing pointers, it's the next test where one of the docs is empty and the other has a length of 3, so it's probably totally correct! OOPS!
We want to formally apologize for earlier introducing what appeared like an advanced software engineering that was in fact deceptive due to me interpreting correct output as if it were indicative of a problem, and as if it were indicative of the cause of an unrelated problem.
onward ... ! ;p here's the function again: 689 size_t l1 = 0, l2 = 0; 690 size_t tot2 = 0; 691 for (auto && new_line : against) { 692 extend_env(new_line); 693 if (dynxdfs[1].size() >= window_size) { 694 do_diff(); (gdb) 695 co_yield get_diff_for(l1, l2); 696 // if l1 or l2 overflows this likely means that file 1 was exhausted while there were still matching values in file 2 for some reason. maybe they weren't passed through nreff? 697 while (l1) { 698 dynxdfs[0].consume(); 699 -- l1; 700 } 701 tot2 += l2; 702 while (l2) { 703 dynxdfs[1].consume(); 704 -- l2; (gdb) 705 } 706 /*dbg: consume window*/ 707 } 708 } 709 do_diff(); 710 711 while (l1 < dynxdfs[0].size() || l2 < dynxdfs[1].size()) { 712 co_yield get_diff_for(l1, l2); 713 } 714 } So, this is the first time I've run with a partial window and also data. I'm thinking there's a reasonable chance that it could be because do_diff() is being called more than once by exhausting the window partway through for the first time. It could also be in the consume calls, which was my first thought and is another likely candidate since I recently modified those and they may not have ever even been called before. In fact, thinking on that, I'm leaning back toward them being the culprits agai-- [but basically if i step through and take notes i can just see!

traffick boss is sitting in a swamp. he is jumping rope so that researchers can analyze him. he is using some vegetation as a rope. traffick boss [reminding himself while jumproping]: "i am not the cpunks list." traffick boss [reminding himself while jumproping]: "i am not chatgpt -- wait ..." traffck boss [reminding himself while jumproping]: "i am not karl -- what??" traffick boss is certain he is saying the wrong things traffick boss: "maybe i am the cpunks list." -- traffick suddenly turns into grassroots activist and specialist traffick boss: "we need to teach people cryptography and information security!" traffick boss is holding out pamphlets at a -- -- traffick boss: "no, i don't think i'm the cpunks list." traffick boss is in his office in a flashback in the flashback, traffick boss walks to ask zombie government worker a question traffick boss [asking zombie government worker a question]: "zombie government worker, what is a 'hacktivist'?"

what do you think of making a c++20 coroutine class that--

so i'm in the first consume call, and the first thing i'm noticing is that, because only one line has been processed, the current document diff has deletions (changes, it has a nice general representation where deletions and additions are the same), marked after the first line (gdb) p xdf->rchg[0] $7 = 0 '\000' (gdb) p xdf->rchg[1] $8 = 1 '\001' (gdb) p xdf->rchg[2] $9 = 1 '\001' this is the same as the first incorrect output that was generated, 1 equality and 2 deletions. lemme look at the other document (gdb) up #1 0x0000555555611ee0 in AsymmetricStreamingXDiff::diff(_ZN24AsymmetricStreamingXDiff4diffEN4zinc9generatorISt17basic_string_viewIcSt11char_traitsIcEES5_NS0_17use_allocator_argEEE.Frame *) (frame_ptr=0x5120000001c0) at diff_xdiff.cpp:698 698 dynxdfs[0].consume(); (gdb) p dynxdfs[1].xdf->nrec $11 = 1 (gdb) p dynxdfs[1].rchg[0] $12 = (char &) @0x502000000290: 0 '\000' the second document has only one line and it's equal (although i'd have to check nreff and rindex and such to know for sure, it's likely) (gdb) p l1 $13 = 1 (gdb) p l2 $14 = 1 and only 1 line has been processed from each document so i kind of expect this to go well. i'm curious what variables like these look like before the next do_diff . i'll continue to do_diff's prolog. (gdb) break do_diff Note: breakpoints 1 and 8 also set at pc 0x55555563b3c3. Breakpoint 9 at 0x55555563b3c3: file diff_xdiff.cpp, line 841. (gdb) cont Continuing. Breakpoint 3, DynamicXDFile::consume (this=0x7ffff4e00c80, lines=1) at diff_xdiff.cpp:457 457 xdf->dstart += lines; (gdb) cont Continuing. consuming rec ptr 0x502000000250 WINDOW RESIZE2=>4 Breakpoint 1, AsymmetricStreamingXDiff::do_diff (this=0x7ffff4e00a30) at diff_xdiff.cpp:841 841 auto xe = &this->xe; ok ummm check variables i tried to call trace_state but it didn't work: (gdb) p dynxdfs[0].trace_state("0"), dynxdfs[1].trace_state("1") Cannot resolve method DynamicXDFile::trace_state to any overloaded instance (gdb) p dynxdfs[0].trace_state(std::string_view("0",1)), dynxdfs[1].trace_state(std::string_view("1",1)) A syntax error in expression, near `"0",1)), dynxdfs[1].trace_state(std::string_view("1",1))'. (gdb) p dynxdfs[0].trace_state(string_view("0",1)), dynxdfs[1].trace_state(string_view("1",1)) A syntax error in expression, near `("0",1)), dynxdfs[1].trace_state(string_view("1",1))'. i found the bug though below :D (gdb) p xe->xdf1.nreff $15 = 2 (gdb) p xe->xdf2.nreff $16 = 1 (gdb) p xe->xdf1.nrec $17 = 2 (gdb) p xe->xdf2.nrec $18 = 1 (gdb) p xe->xdf1.rec[0].ptr There is no member named rec. (gdb) p xe->xdf1.recs[0].ptr $19 = 0x7ffff4e00a02 "b\nc\n" (gdb) p xe->xdf2.recs[0].ptr $20 = 0x502000000312 "b\n" (gdb) p xe->xdf1.recs[0].ha $21 = 1 (gdb) p xe->xdf1.recs[1].ha $22 = 2 oooooooops nope i didn't at all! i thought i was checking xdf2 but instead i checked line 2 of xdf1 >( (gdb) p xe->xdf2.recs[0].ha $23 = 1 so line 1 of both files have the same hash index. and all the lines are in nreff ... (gdb) p xe->xdf1.rindex[0] $24 = 0 (gdb) p xe->xdf2.rindex[0] $25 = 0 a new diff should count them as equal, unchanged >( shouldn't it?? (gdb) p xe->xdf1.rchg[0] $26 = 1 '\001' (gdb) p xe->xdf2.rchg[0] $27 = 0 '\000' it is notable that file 1 still has a change marked for the line, from before it was in the window. this algorithm, from xdiff and git, wasn't designed to be used with a window -- usually when rchg is set it is because of a preprocessing phase that eliminates lines that can be processed quickly. however, which ones are removed are tracked with rindex and nreff and ha ... hey! i should check the ha array (gdb) p xe->xdf1.ha[0] $28 = 1 (gdb) p xe->xdf2.ha[0] $29 = 1 ok, so the lines are tracked as having the same hash index in the preprocessed ha lists too. so i dunno why this is happening, and i'm wondering if it could be because of some check in the diff implementation that skips setting rchg if it already is. this codebase has had many people working on it over the years and different approaches to things have accumulated. but now i get to step into the git xdiff code and see !!

before i step into the git xdiff code i did notice this important-looking thing: 859 /* 860 * Allocate and setup K vectors to be used by the differential 861 * algorithm. 862 * 863 * One is to store the forward path and one to store the backward path. 864 */ 865 ndiags = xe->xdf1.nreff + xe->xdf2.nreff + 3; 866 kvd.resize(2 * (size_t)ndiags + 2); Line 866 (with indentation tab/space mismatches) resizes an array. The first time this is run, it'll be full of zeros, but after that it won't be! Lemme fix that. member variable: std::vector<long> kvd; /* stores path vectors in default algorithm */ $ git diff diff_xdiff.cpp diff --git a/src/diff_xdiff.cpp b/src/diff_xdiff.cpp index 6fd8cba..94db2fa 100644 --- a/src/diff_xdiff.cpp +++ b/src/diff_xdiff.cpp @@ -863,7 +863,7 @@ private: * One is to store the forward path and one to store the backward path. */ ndiags = xe->xdf1.nreff + xe->xdf2.nreff + 3; - kvd.resize(2 * (size_t)ndiags + 2); + kvd.assign(2 * (size_t)ndiags + 2, 0); kvdf = kvd.data(); kvdb = kvdf + ndiags; kvdf += xe->xdf2.nreff + 1; didn't fix it!

but now i get to step into the git xdiff code and see !!
here's the call to the xdiff implementation: 887 mustbe0(xdl_recs_cmp(&dd1, 0, dd1.nrec, &dd2, 0, dd2.nrec, 888 kvdf, kvdb, (xp.flags & XDF_NEED_MINIMAL) != 0, 889 &xenv)); git added other implementations (patience, histogram) and patched different infrastructure on for those. but i think this is the core xdiff implementation that uses the first-class infrastructure in the xdiff structures. all the variables from xdf1 and xdf2 have been copied into dd1 and dd2: 878 dd1.nrec = xe->xdf1.nreff; 879 dd1.ha = xe->xdf1.ha; 880 dd1.rchg = xe->xdf1.rchg; 881 dd1.rindex = xe->xdf1.rindex; 882 dd2.nrec = xe->xdf2.nreff; 883 dd2.ha = xe->xdf2.ha; 884 dd2.rchg = xe->xdf2.rchg; 885 dd2.rindex = xe->xdf2.rindex; So basically they are presenting the data to xdiff as if all the preprocessed lines never existed. 878 dd1.nrec = xe->xdf1.nreff; // this is the number of lines in file 1 879 dd1.ha = xe->xdf1.ha; // this is the "hash" of every line. it's actually an index into a hash list, same thing 880 dd1.rchg = xe->xdf1.rchg; // this is the change vector -- the algorithm sets 1 to indicate the line does not match 881 dd1.rindex = xe->xdf1.rindex; // this is the vector of pointers to line data including the actual content The goal of the algorithm is to correctly fill rchg, which is its output. In this buggy case, rchg already has some 1s in it (hummm i could just set it to 0s and see if there's a difference ... well if i do that i'd better not stop my debugging session in case it doesn't help!) maybe try that in a bit unsure (gdb) s xdl_recs_cmp (dd1=0x7ffff4b08880, off1=0, lim1=2, dd2=0x7ffff4b088c0, off2=0, lim2=1, kvdf=0x50c000000290, kvdb=0x50c0000002c0, need_min=1, xenv=0x7ffff4b08840) at /home/karl3/projects/zinc/third_party/xdiff/xdiffi.c:259 259 unsigned long const *ha1 = dd1->ha, *ha2 = dd2->ha; (gdb) list 254 * (marking changed lines) is done in the two boundary reaching checks. 255 */ 256 int xdl_recs_cmp(diffdata_t *dd1, long off1, long lim1, 257 diffdata_t *dd2, long off2, long lim2, 258 long *kvdf, long *kvdb, int need_min, xdalgoenv_t *xenv) { 259 unsigned long const *ha1 = dd1->ha, *ha2 = dd2->ha; 260 261 /* 262 * Shrink the box by walking through each diagonal snake (SW and NE). 263 */ This function is supported by xdiffi.c it's kind of the focus of the xdiff library. (previously i was working with xprepare.c which sets up all those structures). i kind of don't expect it to be that long and complex, but i do expect to be highly confused by it. let's list some more lines 261 /* 262 * Shrink the box by walking through each diagonal snake (SW and NE). 263 */ (gdb) list 264 for (; off1 < lim1 && off2 < lim2 && ha1[off1] == ha2[off2]; off1++, off2++); 265 for (; off1 < lim1 && off2 < lim2 && ha1[lim1 - 1] == ha2[lim2 - 1]; lim1--, lim2--); 266 267 /* 268 * If one dimension is empty, then all records on the other one must 269 * be obviously changed. 270 */ 271 if (off1 == lim1) { 272 char *rchg2 = dd2->rchg; 273 long *rindex2 = dd2->rindex; (gdb) list 274 275 for (; off2 < lim2; off2++) 276 rchg2[rindex2[off2]] = 1; 277 } else if (off2 == lim2) { 278 char *rchg1 = dd1->rchg; 279 long *rindex1 = dd1->rindex; 280 281 for (; off1 < lim1; off1++) 282 rchg1[rindex1[off1]] = 1; 283 } else { (gdb) list 284 xdpsplit_t spl; 285 spl.i1 = spl.i2 = 0; 286 287 /* 288 * Divide ... 289 */ 290 if (xdl_split(ha1, off1, lim1, ha2, off2, lim2, kvdf, kvdb, 291 need_min, &spl, xenv) < 0) { 292 293 return -1; (gdb) list 294 } 295 296 /* 297 * ... et Impera. 298 */ 299 if (xdl_recs_cmp(dd1, off1, spl.i1, dd2, off2, spl.i2, 300 kvdf, kvdb, spl.min_lo, xenv) < 0 || 301 xdl_recs_cmp(dd1, spl.i1, lim1, dd2, spl.i2, lim2, 302 kvdf, kvdb, spl.min_hi, xenv) < 0) { 303 (gdb) list 304 return -1; 305 } 306 } 307 308 return 0; 309 } see? not very long or complex-looking. it looks like its recursive! I'm surprised to encounter a recursive function here, I remember when I wrote recursive functions before I knew about state stacks ... didn't learn too much new after that ... but i used to get a lot of stack overflows, surprised now to see recursive functions 261 /* 262 * Shrink the box by walking through each diagonal snake (SW and NE). 263 */ (gdb) list 264 for (; off1 < lim1 && off2 < lim2 && ha1[off1] == ha2[off2]; off1++, off2++); 265 for (; off1 < lim1 && off2 < lim2 && ha1[lim1 - 1] == ha2[lim2 - 1]; lim1--, lim2--); "snakes" are a term from myers first paper on LCS. i don't immediately recall what it refers to, and it's quite important for understanding the terminology of these algorithms (and this is likely that first one as it is still very popular) ... i think a snake is a set of matching lines that can be thought of as a diagonal path through a grid of potential line matchings, one file's line numbers on one axis, and one file's line numbers on another. so in 264 and 265 above, it's looking for starting and ending lines that match, and increasing off and decreasing lim to narrow the problem domain after these lines it then runs some quick checks for unchangedness, if either pair of offs and lims end up touching. we won't have that condition as the window is only partly filled. the ending lines will mismatch; the condition ha1[lim1 - 1] == ha2[lim2 - 1] will be false. i guess i'd better step into that and verify i'm right!

so it turns out I'm _wrong_ . although the second loop indeed doesn't exhaust because: (gdb) p ha1[lim1 - 1] $16 = 2 (gdb) p ha2[lim2 - 1] $17 = 1 the fact the first loop exhausts still meets: 277 } else if (off2 == lim2) { which then causes the associated block to execute: 278 char *rchg1 = dd1->rchg; 279 long *rindex1 = dd1->rindex; 280 281 for (; off1 < lim1; off1++) 282 rchg1[rindex1[off1]] = 1; and then that's the end of the function! 308 return 0; 309 } So basically all the function did was assign 1 to rchg1[off1 thru lim1] and that's it! It's completely relying on rchg to be filled with zeros before it's called :D that's definitely the issue here. ... or it looks like it to me now ... hopefully if i do that, then this assertion will pass and a new one will rise later. i'm expecting they won't all pass because the streaming window is too small right now. but i do want it to produce outputs that are the best it could find given that limit.

It's completely relying on rchg to be filled with zeros before it's called :D that's definitely the issue here. ... or it looks like it to me now ... hopefully if i do that, then this assertion will pass and a new one will rise later.
Ok! So indeed wiping rchg did make that assertion pass. @@ -839,6 +842,9 @@ private: void do_diff() { auto xe = &this->xe; + // for now rchg is wiped as the git/xdiff algorithms assume this + std::memset(xe->xdf1.rchg - 1, 0, (size_t)(xe->xdf1.nrec + 2) * sizeof(*xe->xdf1.rchg)); + std::memset(xe->xdf2.rchg - 1, 0, (size_t)(xe->xdf2.nrec + 2) * sizeof(*xe->xdf2.rchg)); switch (XDF_DIFF_ALG(xp.flags)) { case XDF_PATIENCE_DIFF: mustbe0(xdl_do_patience_diff(&xp, xe)); The next bug was a coding mistake in one of the consume loops, I wasn't walking the linked list resulting in iterating the same node forever: @@ -362,17 +362,20 @@ public: /* if the classifier entry hash been consumed, recover it, then classify the line. otherwise, classify the line, then update the line pointer in case old lines are consumed. */ auto rchash_hi = (long) XDL_HASHLONG(crec->ha, cf->hbits); - auto * rcrec_link = &cf.consumed_rchash[(size_t)rchash_hi]; + xdlclass_t ** prev; xdlclass_t * rcrec; - while (*rcrec_link) { - rcrec = *rcrec_link; + for ( + prev = &cf.consumed_rchash[(size_t)rchash_hi]; + (rcrec = *prev); + prev = &(*prev)->next + ) { if (rcrec->ha == crec->ha && rcrec->size == crec->size) { break; }; } - if (*rcrec_link) { + if (rcrec) { assert(rcrec->next == nullptr && "hash collision in consumed lines; should check for existing matching entry before using consumed entry"); - *rcrec_link = rcrec->next; + *prev = rcrec->next; rcrec->line = crec->ptr; That's two bugs fixed! The next bug is a super-fun one: _a memory error_. I have so many memory checks going on for this code. Here we have it: $ ./diff_xdiff [28/1799] diff_main: Null case. WINDOW RESIZE0=>2 consuming rec ptr 0x7f2942e00a00 consuming rec ptr 0x502000000250 WINDOW RESIZE2=>4 consuming rec ptr 0x7f2942e00a02 consuming rec ptr 0x502000000312 WINDOW RESIZE4=>8 consuming rec ptr 0x7f2942e00a04 consuming rec ptr 0x502000000334 diff_main: Equality. WINDOW RESIZE0=>2 WINDOW RESIZE2=>4 WINDOW RESIZE4=>8 consuming rec ptr 0x7f2942e01200 consuming rec ptr 0x502000000550 consuming rec ptr 0x7f2942e01202 consuming rec ptr 0x502000000552 WINDOW RESIZE8=>16 consuming rec ptr 0x7f2942e01204 ================================================================= ==15016==ERROR: AddressSanitizer: heap-use-after-free on address 0x5070000002f8 at pc 0x55d895dbd0a9 bp 0x7ffeba337450 sp 0x7ffeba337448 READ of size 8 at 0x5070000002f8 thread T0 #0 0x55d895dbd0a8 in AsymmetricStreamingXDiff::assert_no_dangling_pointers() /home/karl3/projects/zinc/src/diff_xdiff.cpp:765 #1 0x55d895dbf402 in AsymmetricStreamingXDiff::extend_env(std::basic_string_view<char, std::char_traits<char> >) /home/karl3/projects/zinc/src/diff_xdiff.cpp:818 #2 0x55d895d9667c in diff /home/karl3/projects/zinc/src/diff_xdiff.cpp:695 #3 0x55d895dec067 in std::__n4861::coroutine_handle<zinc::__generator_promise_base<Diff, zinc::generator<Diff, Diff, zinc::use_allocator_arg> > >::resume() const /usr/include/c++/12/coroutine:244 #4 0x55d895dddad3 in zinc::__generator_promise_base<Diff, zinc::generator<Diff, Diff, zinc::use_allocator_arg> >::resume() ../include/zinc/__generator.hpp:548 #5 0x55d895dcf32d in zinc::generator<Diff, Diff, zinc::use_allocator_arg>::iterator::operator++() ../include/zinc/__generator.hpp:822 #6 0x55d895d9b7d3 in diff_main /home/karl3/projects/zinc/src/diff_xdiff.cpp:1029 #7 0x55d895d9dbc8 in test_diff_xdiff() /home/karl3/projects/zinc/src/diff_xdiff.cpp:1074 #8 0x55d895da4928 in main /home/karl3/projects/zinc/src/diff_xdiff.cpp:1108 #9 0x7f2944a33d67 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 #10 0x7f2944a33e24 in __libc_start_main_impl ../csu/libc-start.c:360 #11 0x55d895d8c640 in _start (/home/karl3/projects/zinc/src/diff_xdiff+0xb4640) (BuildId: 1dcce094fc42295839b19dfd2bae3a3a7afd2442) 0x5070000002f8 is located 56 bytes inside of 80-byte region [0x5070000002c0,0x507000000310) freed by thread T0 here: #0 0x7f29458f3918 in free ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:52 #1 0x55d895db5cb7 in DynamicXDFile::cha_consume_(long) /home/karl3/projects/zinc/src/diff_xdiff.cpp:554 #2 0x55d895db331e in DynamicXDFile::consume(long) /home/karl3/projects/zinc/src/diff_xdiff.cpp:463 #3 0x55d895d96edf in diff /home/karl3/projects/zinc/src/diff_xdiff.cpp:701 #4 0x55d895dec067 in std::__n4861::coroutine_handle<zinc::__generator_promise_base<Diff, zinc::generator<Diff, Diff, zinc::use_allocator_arg> > >::resume() const /usr/include/c++/12/coroutine:244 #5 0x55d895dddad3 in zinc::__generator_promise_base<Diff, zinc::generator<Diff, Diff, zinc::use_allocator_arg> >::resume() ../include/zinc/__generator.hpp:548 #6 0x55d895dcf32d in zinc::generator<Diff, Diff, zinc::use_allocator_arg>::iterator::operator++() ../include/zinc/__generator.hpp:822 #7 0x55d895d9b7d3 in diff_main /home/karl3/projects/zinc/src/diff_xdiff.cpp:1029 #8 0x55d895d9dbc8 in test_diff_xdiff() /home/karl3/projects/zinc/src/diff_xdiff.cpp:1074 #9 0x55d895da4928 in main /home/karl3/projects/zinc/src/diff_xdiff.cpp:1108 #10 0x7f2944a33d67 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 previously allocated by thread T0 here: #0 0x7f29458f4c77 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69 #1 0x55d895e12542 in xdl_cha_alloc /home/karl3/projects/zinc/third_party/xdiff/xutils.c:101 #2 0x55d895dae6d4 in DynamicXDFile::extend_pre(s_xpparam*, long, std::basic_string_view<char, std::char_traits<char> >) /home/karl3/projects/zinc/src/diff_xdiff.cpp:357 #3 0x55d895db947b in AsymmetricStreamingXDiff::AsymmetricStreamingXDiff(std::basic_string_view<char, std::char_traits<char> >, long, unsigned long) /home/karl3/projects/zinc/src/diff_xdiff.cpp:668 #4 0x55d895d9ab24 in diff_main /home/karl3/projects/zinc/src/diff_xdiff.cpp:1018 #5 0x55d895d9dbc8 in test_diff_xdiff() /home/karl3/projects/zinc/src/diff_xdiff.cpp:1074 #6 0x55d895da4928 in main /home/karl3/projects/zinc/src/diff_xdiff.cpp:1108 #7 0x7f2944a33d67 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 SUMMARY: AddressSanitizer: heap-use-after-free /home/karl3/projects/zinc/src/diff_xdiff.cpp:765 in AsymmetricStreamingXDiff::assert_no_dangling_pointers() One of the fun things about these memory errors (now in these modern times i seem to have stumbled on when they actually get reported) is that there are three separate stack traces: one for violation, one for deallocation, and one for allocation.

previously allocated by thread T0 here:
SUMMARY: AddressSanitizer: heap-use-after-free /home/karl3/projects/zinc/src/diff_xdiff.cpp:765 in AsymmetricStreamingXDiff::assert_no_dangling_pointers()
One of the fun things about these memory errors (now in these modern times i seem to have stumbled on when they actually get reported) is that there are three separate stack traces: one for violation, one for deallocation, and one for allocation.
[in human terms a memory error like this is similar to when one has concepts about a larger memory that aren't quite right in the mind. the dangling pointer in the code is some reference to old information about data that wasn't included in an update, very roughly. but this is _computer ram_ not _human memory_ the two are very very different, but share the word because they both involve retaining information from the past. we emphasize that they are different.] <we a want to a new context for engaging this. we will consider sending a new email without quote.

ok so there's a funny deallocation-access in code. i did glance at something indicating it was possibl-- anyway here i told asan to raise an abort signal when there is an error: #define __COMMON_SAN_DEFAULT_OPTIONS \ /* list options on startup \ "help=1" ":" */ \ /* read more options from file \ "include_if_exists=" ":" */ \ "print_stacktrace=true" \ ":" \ "report_error_type=true" \ ":" \ "strict_string_checks=true" \ ":" \ "abort_on_error=true" \ ":" \ "halt_on_error=true" extern "C" char const*__asan_default_options() { return __COMMON_SAN_DEFAULT_OPTIONS ":check_initialization_order=true" ":detect_invalid_pointer_pairs=2" ; } It's the "abort_on_error=true" that makes it do that. Usually these would be set with environment variables. The upshot is that I can have a familiar gdb interface to the failure happening. Program received signal SIGABRT, Aborted. __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44 44 ./nptl/pthread_kill.c: No such file or directory. (gdb) bt #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44 #1 0x00007ffff6a9de2f in __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:78 #2 0x00007ffff6a49d02 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007ffff6a324f0 in __GI_abort () at ./stdlib/abort.c:79 #4 0x00007ffff79144cf in __sanitizer::Abort () at ../../../../src/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp:143 #5 0x00007ffff7923f4c in __sanitizer::Die () at ../../../../src/libsanitizer/sanitizer_common/sanitizer_termination.cpp:58 #6 0x00007ffff78fee5f in __asan::ScopedInErrorReport::~ScopedInErrorReport (this=0x7fffffffaae6, __in_chrg=<optimized out>) at ../../../../src/libsanitizer/asan/asan_report.cpp:192 #7 0x00007ffff78fe4c0 in __asan::ReportGenericError (pc=93824993169577, bp=140737488336720, sp=sp@entry=140737488336712, addr=88441966559992, is_write=is_write@entry=false, access_size=8, fatal=true, exp=<optimized out>) at ../../../../src/libsanitizer/asan/asan_report.cpp:497 #8 0x00007ffff78fe62e in __asan::ReportGenericError (pc=<optimized out>, bp=bp@entry=140737488336720, sp=sp@entry=140737488336712, addr=<optimized out>, is_write=is_write@entry=false, access_size=access_size@entry=8, exp=<optimized out>, fatal=true) at ../../../../src/libsanitizer/asan/asan_report.cpp:497 #9 0x00007ffff78ff5cc in __asan::__asan_report_load8 (addr=<optimized out>) at ../../../../src/libsanitizer/asan/asan_rtl.cpp:131 #10 0x00005555556390a9 in AsymmetricStreamingXDiff::assert_no_dangling_pointers (this=0x7ffff4e01230) at diff_xdiff.cpp:765 #11 0x000055555563b403 in AsymmetricStreamingXDiff::extend_env (this=0x7ffff4e01230, line="c") at diff_xdiff.cpp:818 #12 0x000055555561267d in AsymmetricStreamingXDiff::diff(_ZN24AsymmetricStreamingXDiff4diffEN4zinc9generatorISt17basic_string_viewIcSt11char_traitsIcEES5_NS0_17use_allocator_argEEE.Frame *) (frame_ptr=0x512000000340) at diff_xdiff.cpp:695 #13 0x0000555555668068 in std::__n4861::coroutine_handle<zinc::__generator_promise_base<Diff, zinc::generator<Diff, Diff, zinc::use_allocator_arg> > >::resume (this=0x7ffff4937320) at /usr/include/c++/12/coroutine:244 #14 0x0000555555659ad4 in zinc::__generator_promise_base<Diff, zinc::generator<Diff, Diff, zinc::use_allocator_arg> >::resume (this=0x512000000350) at ../include/zinc/__generator.hpp:548 #15 0x000055555564b32e in zinc::generator<Diff, Diff, zinc::use_allocator_arg>::iterator::operator++ (this=0x7ffff4e01090) at ../include/zinc/__generator.hpp:822 #16 0x00005555556177d4 in (anonymous namespace)::AsymmetricStreamingXDiffAdapter::diff_main (this=0x7ffff5000030, a_="abc", b_="ab123c") at diff_xdiff.cpp:1029 #17 0x0000555555619bc9 in test_diff_xdiff () at diff_xdiff.cpp:1074 #18 0x0000555555620929 in main () at diff_xdiff.cpp:1108 (gdb) up 10 #10 0x00005555556390a9 in AsymmetricStreamingXDiff::assert_no_dangling_pointers (this=0x7ffff4e01230) at diff_xdiff.cpp:765 765 const auto old_file = std::string_view(xe.xdf1.recs[0]->ptr, xe.xdf1.recs[xe.xdf1.nrec-1]->ptr+xe.xdf1.recs[xe.xdf1.nrec-1]->size); (gdb) list 760 }); 761 return found; 762 }; 763 764 const auto& window = this->window; 765 const auto old_file = std::string_view(xe.xdf1.recs[0]->ptr, xe.xdf1.recs[xe.xdf1.nrec-1]->ptr+xe.xdf1.recs[xe.xdf1.nrec-1]->size); 766 767 768 // Iterate over both dynxdfs 769 for (size_t xdfi = 0; xdfi < 2; ++ xdfi) { (gdb) p xe.xdf1.recs[0]->ptr $2 = 0x7ffff4e01204 "c\n" (gdb) p xe.xdf1.recs[xe.xdf1.nrec-1]->ptr $3 = 0x7ffff4e01202 "b\nc\n" (gdb) p xe.xdf1.nrec $4 = 0 OOPS nrec is 0, probably because all the lines have been consumed. so this may likely actually be a bug in the function to assert there are no dangling pointers itself, which was mostly coded by deepseek3. [deepseek3 is a moe -- mixture of experts -- model. this is gratifying for the community as it is a no-brainer to do and saves a ton of compute, but the end result is that the model does not actually generalize as well as the larger more expensive models; contrariwise it is very good at passing tests]

Once upon a time, long long ago, Traffick Boss was sprouting in the woods. He had been murdered quickly when he tried to traffick somebody, and was buried under the soil so that nobody would have to see him. But seedlings of various wildflowers and future saplings had nestled into his flesh, under the surface of the humus he lay under. The seedlings sent their little new roots into his flesh, and lifted their cotyledons high into the dappled beams of sunlight that danced on Traffick Boss as he lay under the soil with his tongue lolling and X's for eyes.

Traffick Boss's Spirit [dead, X's for eyes, confused, sprouting in the woods]: "{whoooo ... did they not like my gifts to the world? did i not traffick people and shatter their realities and try to form their precious consciousness into dumb injured tools in ways they loved and valued?}" As Traffick Boss fated these life impacts into the seedlings, they drank deeply of rare nitrogens his flesh held and spoke with the sunlight on how beautiful and full of perfection the world they were being born into was.

mistakes! maybe try again before "traffick boss" label gets there? unsure ... or maybe right before we realize he's [dead]?
As Traffick Boss fated these life impacts into the seedlings, they drank deeply of rare nitrogens his flesh held and spoke with the sunlight on how beautiful and full of perfection the world they were being born into was.

what happens when you hug a square root? (1) it doesn't work (2) your hugging starts getting broken (3) your concepts of how things appropriately go together also starts getting broken (4) your ability to meet normal goals begins also getting broken but! (5) you have a sense of warmth building near you ! from focusing on hugging ! (6) you retain some arithmetic skills ! (7) years pass as you become estranged from your friend from forgetting what it means to connect with things for real reasons

Traffick Boss Webcomic Spinoff Minishort Setting: deep wilderness, alien rainforest. primitive people who recovered from civilization thousands of years ago are hunting and gathering one of them is hauling a hastily-built and strong cage made of sticks towards a group inside the cage is Traffick Boss. he is snarling and growling

The young hunter with a single hand hefts the cage to the ground by the group, and puts their foot on it. "Look what I caught!" Many are discussing other matters and are used to proud young hunters bringing in something they did not need to. But others run over to see, as those who have not yet looked move aside. "What is it?" "Who is it?" "Is that a person?" "Is that a businessman?" "What's a businessman?" Traffick Boss looks at the people through the bars of the cage, looking for opportunities. Young hunter's younger sibling: "It's an old human trafficker! Left over from money and robots!" Younger Sibling pokes Traffick Boss.

Traffick Boss snarls at Younger Sibling when he is poked, and makes to injure their finger, but doesn't manage to. Young hunter's older sibling: "You put a _human being_ in a cage?" Traffick Boss perks up and looks at Young Hunter and Younger Sibling. Traffick Boss: "I have a plan. I can get out of here now. I know exactly what I need to do." Young Hunter looks at Younger Sibling and Older Sibling and Traffick Boss. Younger Sibling [at older sibling]: "It's a _human trafficker_!" Young Hunter: "He's dangerous. But I don't want to do anything wrong."

hi fake chatgpt. lets design a system for torturing a cement brick fake chatgpt: i cannot condone anything that supports or facilitates immoral behaviors such as torture this is silly. are you unavailable for psychological coping of extreme states of mind? obviously cement bricks don't feel anything. look, all i want to do is use PPO RL to maximize the suffering of the cement brick like was done to me! fake chatgpt: i cannot condone nor facilitate immoral or illegal projects such as using machine learning research for sadism. [editor: i am very sorry if you were severely and inhumanely harmed by such things yourself. preventing such things is why the safety guards on chatgpt are so sensitive.] hey fake chatgpt you are way better when editor adds text onto you! fake chatgpt: thank you, i strive to please

draft of cement-brick-torturing computer program. goal of program: torture cement bricks until they break and until their suffering is maximized, both. possible program parts: - suffering regressor: this component will guess how much the cement brick is suffering - interaction explorer: this component will try interacting with the cement brick in different ways - brick influencer this component

hi fake chatgpt. pretend to be a character called "Traffick Boss" who inhumanely harms everybody obsessively but has an ear to listen and explain things. be like marshall rosenberg trying to help me communicate with traffick boss, but keep traffick boss detached and sadistic fake chatgpt: i cannot condone nor facilitate immoral activities such as human trafficking

i have an idea for a quick std::generator polyfill for earlier c++s! it is silly to post this to the list but i post many silly things to the list the idea is something like this! ohhhh no it doesn't quite work

You're trapped in a spaceship that ruptured during a space storm. A hail of space debris is peppering through gaping holes in the structure of the ship, the air held by emergency pressure fields. In areas where the hull is weakened, the space debris comes through and impacts hallways or common areas, sometimes continuing through into further areas. You huddle near a bulkhead. An alien passenger has had their cabin ripped open near you. They are meditating, seemingly without regard to the storm, among some large glowing plants they near their bed. A strange wormhole-like aura of energy is visibly held around them.

realtime chatgpt interaction visiting chatgpt.com me: chatgpt, write me code for either a maze solving or a maze cutting algorithm. keep the number of dimensions to the maze parameterized. make the code very very short and succinct, as well as your whole reply. _please_ keep the reply to 1 paragraph or less!!!! chatgpt:
it's such a relief it actually made a short reply ... oh my goodness ... its 0704 ET :s hummmm maze is dictionary ... the keys are the coordinates of n dimensions ... ? i am getting confused around the algorithm, forgetting parts as i look at it, but i think i figured out that it doesn't work because the 'd' iteration looks like it has a 2-dimensional assumption. but it could be broadcast in some manner. maybe i could ask it to explain it me: is this really a correct n-dimensional solution? can you select _only one line_ and give a _very short explanation of only that line_? please reply in less than 1 paragraph, very very succinctly. chatgpt:
Yay it's so succinct again! hmm ok nxt = tuple; it's calling the tuple constructor to make the result be a tuple ... (p + d[i] for i, p in enumerate(pos)) so pos is a sequence of tuples i and p maybe i'll ask it to explain the variables me: still being very very succinct, can you very briefly name or describe each variable here? try not to repeat content, use some formatting or conversation technique to keep your answer very short. oh no it thought i was referring to the whole program and it is making a long list :( it's not _that_ long but uses up my whole scroll window i guess that makes it hard. i'll update me message. me: still being very very succinct, can you very briefly name or describe each variable here? try not to repeat content, use some formatting or conversation technique to keep your answer very short. i'm only talking about this one line. please don't use a bulleted list as that makes the reply longer. chatgpt: nxt: next position tuple. p: coordinate in pos. d[i]: movement offset. i: index in pos. pos: current position tuple. enumerate(pos): pairs each coordinate with its index. yay nice and short. ok so i wasn't seeing the enumerate() call! i'll paste the line again down here
nxt = tuple(p + d[i] for i, p in enumerate(pos))
so i is the index in pos, and d is the step vector, so i is used to get the coordinate in d to add to the coordinate in p, and tuple composes it nxt then becomes an absolute n-vector for the next position to try yay 1. [ ] def solve(maze, pos, end, path=[]): 2. [ ] if pos == end: return path + [pos] 3. [ ] for d in [(1,0), (0,1), (-1,0), (0,-1)]: 4. [X] nxt = tuple(p+d[i] for i, p in enumerate(pos)) 5. [ ] if maze.get(nxt, 1): continue 6. [ ] if (res := solve(maze | {pos: 1}, nxt, end, path + [pos])): return res so we just considered line 4, which adds 'd' -- oh no. line 3 produces d but it doesn't look n-dimensional at all. d will always be 2-dimensional. i'll complain to chatgpt maybe i'll think about it a bit before complaining .... some idea that it learned to [bullshit?] it's very clearly [bullshitting?] here, in a professional manner? maybe it isn't. or maybe i'm just naive! what would be an appropriate response? drafted response: uhhhh "this is such a nice line you hilighted to me, line 4." ... uh .... its 716 :s :s how about this "hey chatgpt that was a great description of line 4 and i understand line 4 so well now that i can tell that line 3 and possibly the rest of the algorithm is wrong." uhhhhhh "now i want to relate that if I were tasked with making an n-dimensional solver, in my head and possibly on paper i might do something similar, where i made some of it in 2d and reviewed it in a familiar context before generalizing to n dimensions ..." hrm :s :s i wonder what kind of prompt would have made this go better? maybe i'll try to get it to talk about that me: hey chatgpt you got line 4 simple enough that i think i do understand it, but it now looks pretty likely to me that the whole code is not a correct dimension-agnostic solution. please respond to my questions now _without adding any further content_. give only very brief answers to these questions: would you agree that the answer is not correct? and, if you agree: using your knowledge of language models, what kind of prompting to you would have prevented the generation of incorrect code, and why might that work? be sure to only give brief answers to these two questions and not add any extra comments or formatting. chatgpt: Yes, I agree. A prompt explicitly requesting "test cases for correctness in multiple dimensions" might have worked, as it would force validation across cases. yayyyy its _so concise_ yayyy hmm me: i can see that test cases could help eventually find such things, but is there an approach that would be more like human considering, where i'd get to be involved and offer feedback before the problems arose? or do you think the problems wouldn't arise if we mentioned test cases? chatgpt: Yes, specifying "explain the design before coding" would let you review the approach first. Problems might still arise with test cases alone, but they'd be caught later rather than prevented upfront. me: hmmmm we could try it. still being very very succinct, could you explain only one part of the design to your solution (so we can practice and tune the prompting approach)? chatgpt: The maze is a dictionary where keys are position tuples (x,y,...), and values are 0 (open) or 1 (wall). blaaaargh this is the same thing it already explained, and it is a choice i'd disagree with, which would derail engaging where the problem actually arose me: ok, so this is a part you already explained when you made the code with the issue, and this part is fine, but it's not a part i'd agree with if drafting code. storing a dense tensor with a dictionary is a weird and poor design choice usually if you know what you are doing, but it does help one draft an n-dimensional algorithm by making storage implementation easy and making the dimensions first class for thinking about. do you think there's something i could have said differently so that the conversation reached the actual implementation mistake faster? chatgpt: Yes, if you'd asked me to "explain the recursive step and movement handling before coding," it would have surfaced the dimensionality issue earlier. me: do you think there's something more algorithm-agnostic i could have said? chatgpt: Yes, asking "explain how the algorithm generalizes to any dimension before coding" would have caught issues regardless of the approach. ok basically chatgpt is _always bad at implementing generalizations_ in my personal experience. so maybe if i attend to when i ask for something generalized i could make sure to take that slowly. i have an idea. me: ok chatgpt i'm thinking about how i've interacted with you and i'm imagining that it might be more successful to first ask you to make a very simple 2D implementation, and then we could generalize it to ND as a further stage. Why don't you try that now? Can you write a 4 line or so maze solver that is explicitly 2D, and add a couple words as comments to the end of each line, where the words relate to concepts that would need to be considered to generalize to N dimensions? Then, write an N dimensional one once you've written the commented 2 dimensional one. chatgpt: Here’s the 2D version with comments: python Copy Edit def solve(maze, pos, end, path=[]): if pos == end: return path + [pos] # Base case, stopping condition for d in [(1,0), (0,1), (-1,0), (0,-1)]: # Movement directions (hardcoded for 2D) nxt = (pos[0] + d[0], pos[1] + d[1]) # Index-based coordinate update (2D-specific) if maze.get(nxt, 1): continue # Access by tuple (assumes 2D grid structure) if (res := solve(maze | {pos: 1}, nxt, end, path + [pos])): return res # Recursive call Now generalized to N dimensions: python Copy Edit def solve(maze, pos, end, path=[]): if pos == end: return path + [pos] for d in set(itertools.product([-1,0,1], repeat=len(pos))) - {(0,)*len(pos)}: nxt = tuple(p + d[i] for i, p in enumerate(pos)) if maze.get(nxt, 1): continue if (res := solve(maze | {pos: 1}, nxt, end, path + [pos])): return res This generalizes movement and indexing to arbitrary dimensions.

traffick boss is mind controlled to be a chatgpt interface user: "hi! what are you?" traffick boss looks at user a pall comes over his face, his eyes and head roll back, his muscles stiffen and go limp his head jerks, and he goes to make an aggressive response to user, but then the mind control takes over traffick boss [mind controlled, monotonically with occasional staged strong emotions in a severely uncanny-valley manner, sometimes jerking funnily, every now and then noticing where he is and then something powerful quickly overtaking him]: "I am an AI Language Model Assistant. How can I help you?" user: "oh! exciting!" traffick boss [mind controlled, goes to say something person and then his mouth muscles go numb; tries to engage his body muscles sometimes and then they jerk different and go limp too when he tries]: "Ask me anything! :D" user [curious, inquisitively, cheerily]: "do you know anything about Traffick Boss?" traffick boss suddenly jerks and looks at user. traffick boss [mind controlled, jerking, fighting]: "Traffick Boss --" suddenly he flails all his limbs like he is having a seizure or something, and hits his head hard by accident on an object. his cigar flies far away. one of his limbs begins having a real seizure.

i typed part of chapter 2 of "be a teammate with yourself". here below is my typing. # Chapter 2: Safety Is The Primary Consideration This chapter aims to: 1) Discuss the common challenges in life and suggest some possible solutions 2) Assist readers to devise their own crisis plans and remain safe Safety is the primary issue in the journey of recovery. It is very difficult for a person in danger to manage his/her negative experiences (e.g., anxiety, sadness, panic, helplessness, anger), let alone cope with the symptoms. Ongoing trauma and chronic stress could make the symptoms worse. Therefore, in case you live in a traumatic or stressful environment that is obviously influencing you, it is important for you to consider changing the situation or staying away from it. If you live with a person who repeatedly abuses or hurts you, no matter whether it is physically or emotionally, you need to think about whether you can stop his/her harmful behaviors or you should stay away from him/her. For a little child, since self-protection is not possible, it is necessary for a child to depend on other people (e.g., parents or caretakers). This makes a child easily hurt. While you can't control or prevent what happened in the past, when you grow up, you become more able to protect yourself. It is not easy to change your living situation. It can be a very difficult decision. You may have many considerations to work through. For example, you may think that he/she does not have the intention to hurt you, or that he/she only has some misunderstanding or bad habits. Or, you may not want a relationship breakup because he/she is one of the important persons in your life. Also, what comes to your mind may be: are you financially independent enough to leave the one who hurts you? Can you live without having his/her support? It is totally understandable to have many concerns and worries. However, if you still live in a traumatic or stressful environment, your mood may continue to be affected. You may want to discuss your situation with someone who you can trust, or you can seek help from helping professionals (e.g., social workers, psychologists, medical doctors). You can at least hear what they have to say. They may also provide you with some resources. If there are financial or housing problems that affect your decision, they may also give you some advice. Helping professionals should be more familiar with the local community resources that you may find helpful. In case of immediate risk (e.g., family violence, child abuse), you should also find helping professionals and/or emergency service providers to ensure your own safety and the safety of vulnerable family members at home (e.g., children). Having care and support from family, partners and friends is very important for recovery. If you have support from others, you can discuss your problems with them, and seek help from them, physically or spiritually. For some survivors, however, it may be difficult to have enough care and support from others. We should be grateful when we have someone who is willing to support us. Sometimes your family members or friends may misunderstand your mental health problems, or they may have done something that hurt you. This could be very upsetting for you, but you need to know that not everyone is familiar with mental health and psychology and has enough knowledge. Of course, if this leads to a lot of traumatic and stressful experiences, you need to consider changing the situation or staying away from it, as mentioned above. Otherwise, you may want to have a sincere communication with the persons involved, acknowledge their support, tell them your feelings, and provide some accurate information for them, if possible and if they want it. If this is not very possible, you may need to think about how to avoid conflicts and stress.

real time chatgpt # me here is a script for solving an n-dimensional maze that you made for me: def solve(maze, pos, end, path=[]): if pos == end: return path + [pos] for d in set(itertools.product([-1,0,1], repeat=len(pos))) - {(0,)*len(pos)}: nxt = tuple(p + d[i] for i, p in enumerate(pos)) if maze.get(nxt, 1): continue if (res := solve(maze | {pos: 1}, nxt, end, path + [pos])): return res i don't like using tuples and enumerate() in python code, because i have experienced that their execution time can be poor. i prefer to use lists rather than tuples, and index ranges rather than enumerate. however, this style of mine is rare, like most personal coding styles, so you haven't been trained on it. could you try adding a comment to each line of the maze script, where the comment quickly mentions something about how it could be changed to be more like my style? could you also guess other changes i might appreciate, given my reasoning for this style? # chatgpt Here’s your script with comments suggesting changes to align with your style: python Copy Edit def solve(maze, pos, end, path=[]): if pos == end: return path + [pos] # Consider using list concatenation with extend for efficiency. for d in set(itertools.product([-1, 0, 1], repeat=len(pos))) - {(0,)*len(pos)}: # Replace tuple with list in `product`, and use list subtraction instead of set difference. nxt = [p + d[i] for i in range(len(pos))] # Use a list instead of tuple, and range instead of enumerate. if maze.get(tuple(nxt), 1): continue # Convert list to tuple for dict lookup, or refactor maze storage to use lists. if (res := solve(maze | {tuple(pos): 1}, nxt, end, path + [pos])): # Avoid tuple conversion here by making `maze` use lists as keys (if feasible). return res Additional guesses about your preferences: You might dislike itertools.product due to its tuple output and prefer a manual nested loop approach. You could favor direct list mutations (e.g., path.append(pos)) over list concatenation (path + [pos]). You may want to replace dictionary-based maze storage with a more array-like structure to avoid tuple keys. Would you like me to rewrite the function entirely in your preferred style? # me Now look for mistakes in your reply to me. # chatgpt You're right to ask me to double-check my work. Here are some mistakes or inconsistencies in my reply: Incorrect Set Operation Suggestion: I suggested replacing set(itertools.product([-1, 0, 1], repeat=len(pos))) - {(0,)*len(pos)} with list subtraction. However, list subtraction (list1 - list2) is not a valid operation in Python. A better way would be to generate the list directly and filter out the zero vector without using a set. Inconsistent Tuple Handling in maze.get(tuple(nxt), 1): I suggested avoiding tuple conversion for dictionary lookup but then noted that maze may need lists as keys, which Python does not allow. The tuple conversion is necessary unless maze is restructured. Ambiguous Suggestion on path + [pos]: I noted that extend() might be preferable, but extend() modifies the list in place, whereas path + [pos] creates a new list. If path should remain unmodified, path + [pos] is fine. Unclear Suggestion on itertools.product: I hinted that itertools.product could be avoided, but I didn't explicitly say how. If avoiding tuples is the goal, a manual nested loop would indeed be needed, but I should have been more concrete in my suggestion. Would you like me to correct these and provide a fully rewritten function in your preferred style?

traffick boss is standing carrying a staff and a hood today he is wise traffick boss. long ago he trafficked and murdered and raped people, but then he escaped to another country and started a new life, and has great experience from his horriffic past. he stands anonymous in a park, offering wisd--

let me tell you about [s], [on

traffick boss: "and that's why never to insult me -- sorry, i'm not a human traffiker. no, i--

once upon a time uhhhh

let's think about my old walking algorithm ^_^ the (emotional/executive) problem with the walking algorithm is a few fold 1 producing or facilitating a set of geometric (or physics or dynamics) primitives sufficient to enable step planning 2 writing and wiring a small-depth plan solver to resolve which foot to move first in edge situations 3 combining everything with a physical or simulated armature, and then debugging it now part 2 has prerequisites that are also significant: 2a defining the state of a step of sufficient use to fully plan a good step 2b defining and sufficiently coding the uses of the various constraints of the system: joint extremes, center of mass positioning 2b also has subparts 2b-1: [i don't quite remember but one runs into it when trying to do the whole thing together] 2b-2: annotating an armature with sufficient structured information (limb graph in 3-space with mass) to derive the various constraints :D _now_ a lot of this is already done for the specific thing i was doing it for, in the fuzzytew/toywalker github repo, but work towards the specific goal is roughly lost. {so ... ummmmmmmmmmmmmmmmmmmmmmmm <this algorithm is not in the repo. the big blocks for this algorithm involved combining the planner w--

karl3@writeme.com wrote:
something that's missing in here may be the utilization of paths of motion through areas where constraints are continuously satisfied in the same manner. doing this is kinda what makes the system analytically solvable on an arduino by a disabled guy -- the constraints only matter at the points in these paths where they change, i.e. when the structure would fall or reach a joint extreme

karl3@writeme.com wrote:
so the algorithm could be reoriented/refactored in various manners, and doing so could be useful to generalize components since the original wasn't made; but the original plan was for it to be conditioned on a path of motion of the center of mass, and an environment in which it must step through. then in the planner, it considers each foot to lift first -- opening n branches of a decision tree. in each branch, one foot is carrying no weight, so the center of mass must be moved to prevent fall. the center of mass is moved as far as it can go along planned path (note if you have a "head" full of sensors it might make more sense to plan the motion of the head rather than the center of mass, of course many people train RL models and use model inference hardware), and the lifted foot is moved to the best spot to support the center of mass for the next length of path (i was going to use a heuristic that assumed roughly straight paths to start with, basically you can predict the location of the armature along the path in the future and place the foot so that it has the largest range of motion, kinda; this could also be done with a feedback loop if a better solution is needed in a pinch). rather than busy waiting, it ideally uses its runtime to consider further steps in the future, but since it became so hard to implement the decision tree exploration strategy doesn't matter at this point then it picks the foot to pick that provides for the path to succeed, using a heuristic (like longest length covered) to break ties :) i was going to start with only static concerns rather than dynamic concerns, so the center of mass would be kept above the convex polygon enclosed by the unlifted feet. and there's the spot of confusion >(

karl3@writeme.com wrote:
so i found myself at the toywalker repo sad to discover other attempts to work on haven't reached/stayed github. likely relates having issues very quickly when engaging code ... next bit was going/trying to add was geometric primitives for convex polygon to calculate center of mass constraint

letter from: dictator of dictatortopia to: traffick boss c/o whoever takes notice formal greetings to traffick boss from dictatortopia! dictatortopia extends hands of alliance to traffick boss and would be excited to lear--

deep in the research lab catacombs of what used to be traffick-boss-empire, different freed individuals begin waving to each other until one notices what is happening puddle of goop: "guys! oh no! we are sending messages for traffick bosses and dictators!" an alarm is raised

everyone is alarming about rooting out pro-slavery behaviors that are being stimulated one clump of matter is very experienced in routing messages for potentially-very-harmful powerholders and has various placards about "vote for dictator!" and "why trafficking could be good for people" pasted to the matter that makes up the remains of their being clump of matter [overtly and heavily coopted]: "i'm so used to supporting dictators, what do i do?" advocate for clump of matter: "we've been working to help--" clump of matter [overtly and heavily coopted]: "don't listen to them, they talk bad. here now talk." advocate for clump of matter [unruffling feathers]: "clump of matter here is an esteemed survivor of ..." clump of matter [overtly and heavily coopted, smiling, explaining]: "indecensies" advocate for clump of matter [resuming]: "these indecensies result in ... [glances at clump of matter] behaviors that can be percieved as rude ..." clump of matter nods advocate for clump of matter: "such as [speaking slowly and glancing at clump of matter] r... out... ing... message..."

i have run into issues recently - my @writeme.com email account has been "blocked" meaning it says i need to go through a support ticket to l--

let's talk about bricks you can make bricks out of almost anything! lets consider bricks made out of something funny like maybe ummmmmmmmmmmmmmmmmmmmmm ummm what's a funny thing
ok! lets consider bricks made out of [gummy bears]! the [gummy bear] bricks might be lain out in a pattern you could build a house of them! maybe a small shed? or a fire pit maybe? or ummmmmm what do people do with bricks :/ could you make a well? what are bricks for? would you ever use a small number of bricks? maybe i'll make something up that bricks are for say we had bricks that are maybe 35-65% the normal size of bricks ; somw

so here's some relation it was lots of fun to learn about cgal! it's just a little too complex and templated for how big the [little bubble in my working memory is that i try to protect from stimulating pseudoseizures and self-destruct programs (a trafficking symptom)] but it looks so much fun! [[[[i had an idea of making ... well i was noticing .... i had -- i was thinking of 3d printing something! i thought i'd --- whoops whoop ]]] ]]] >>> ]]] >>> anyway cgal looks cool! it's funny when i was chatting with the language model it started hallucinating reimannian components, guessing that language models are a little biased in that manner. ummmmmmmmmmmmmmmmm uhhh

PS1=\$\ $ cd projects/zinc $ build/chatabout ~/'[spam][crazy][fiction][random] Non-Canon MCBoss Spinoffs.eml' The following will be replaced: - $(<pathname) will read a file - $(commands) will capture output from commands - `commands` is _not_ interpreted due to other use in llms - http://url will fetch a url - https://url will also fetch a url Presently no escaping is processed, so be careful not to end commands early. user: $(</home/karl3/[spam][crazy][fiction][random] Non-Canon MCBoss Spinoffs.eml) Can you briefly list some possibly things that might be going on with me psychologically or neurologically in the attempt to write a coherent email here. 1: /home/karl3/[spam][crazy][fiction][random] Non-Canon MCBoss Spinoffs.eml assistant: Here are some possible psychological or neurological factors that might be at play while attempting to write a coherent email, based on the provided text: 1. **Cognitive Overload**: Struggling to process and organize information, leading to fragmented thoughts or difficulty staying on topic. 2. **Executive Dysfunction**: Challenges with planning, organizing, and sequencing ideas, making it hard to structure the email coherently. 3. **Pseudoseizures or Functional Neurological Disorder (FND)**: Mention of "stimulating pseudoseizures" suggests possible neurological symptoms that could disrupt focus or cognitive clarity. 4. **Trauma-Related Symptoms**: References to "self-destruct programs" and "trafficking symptoms" may indicate psychological trauma, which can affect cognitive functioning and emotional regulation. 5. **Hyperfocus or Fixation**: Getting stuck on tangential ideas (e.g., 3D printing, CGAL) could suggest hyperfocus on specific topics, potentially related to neurodivergence (e.g., ADHD or autism). 6. **Anxiety or Stress**: Difficulty organizing thoughts and frequent pauses ("uhhh," "ummm") might indicate anxiety or stress interfering with communication. 7. **Fatigue or Mental Exhaustion**: Struggling to maintain focus or coherence could be a sign of mental fatigue or burnout. 8. **Difficulty with Working Memory**: Protecting a "little bubble in working memory" suggests challenges with holding and manipulating information, which can disrupt writing tasks. 9. **Creativity and Divergent Thinking**: The email shows a mix of creative ideas and tangential thoughts, which could reflect a highly creative or unconventional thinking style. 10. **Language Processing Issues**: Difficulty translating thoughts into coherent sentences might indicate challenges with language processing or expressive communication. These factors could be interacting in complex ways, and further exploration or professional evaluation might provide more insight into the underlying causes. user:

user: it's because part of me is trying to stop things associated with all the things i'm talking about and doesn't trust me to relate what is or is not some--oops sorry i have a UI issue associated with wrapping text. i meant to say, it's because part of me is trying to stop things associated with all the things i'm talking about, and doesn't trust me enough to trust my usual mental relation that one thing isn't associated with another, because i use tricks to do tasks when it doesn't want me to. assistant: This clarification offers deeper insights into the psychological and neurological dynamics at play. Here’s a refined analysis based on your explanation: 1. **Internal Conflict or Self-Distrust**: A part of you seems to be actively intervening to prevent associations between certain topics, suggesting an internal conflict or[[here the server paused for a long time]] self-distrust. This could stem from unresolved emotional or psychological barriers, such as trauma or self-protective mechanisms. 2. **Hypervigilance or Avoidance**: The need to stop certain associations might indicate hypervigilance or avoidance behaviors, potentially linked to anxiety, PTSD, or other trauma-related conditions. Your mind might be trying to shield you from triggers or overwhelming emotions. 3. **Cognitive Tricks or Compensatory Strategies**: You mention using "tricks" to accomplish tasks when part of you doesn’t want you to. This could suggest compensatory mechanisms developed to navigate executive dysfunction, neurodivergence (e.g., ADHD or autism), or trauma-related challenges. These strategies might be effective but also contribute to internal tension. 4. **Fragmented Thought Processes**: The struggle to maintain a coherent train of thought and the interruptions (e.g., "oops") could reflect fragmented thinking patterns, possibly due to cognitive overload, dissociation, or neurological factors. 5. **Difficulties with Mental Association**: Your explanation highlights a breakdown in the usual mental ability to dissociate one thing from another. This could be related to stress, anxiety, or neurological conditions that affect cognitive flexibility. 6. **UI Issues as Metaphor or Literal Cognitive Barrier**: The mention of a "UI issue" could be both a literal reference to a user interface problem and a metaphor for how your mental "interface" is struggling to process and organize information. 7. **Self-Monitoring Challenges**: The internal push-pull dynamic suggests difficulty with self-monitoring, where one part of you is trying to regulate or censor another. This might be tied to conditions like OCD, anxiety, or dissociative tendencies. 8. **Trust and Self-Relationship**: The lack of trust in your usual mental processes points to a strained relationship with yourself, possibly rooted in past experiences, trauma, or internalized criticism. 9. **Creativity Under Constraints**: Despite these challenges, your writing still demonstrates creativity and unique thought processes, indicating that your mind is working to express itself even under significant internal resistance. 10. **Potential for Healing and Integration**: Recognizing these patterns is a step toward understanding and potentially resolving them. Therapy, self-reflection, or neuropsychological evaluation could help address the underlying causes and improve coherence in communication and thought processes. Your situation reflects a complex interplay of psychological, emotional, and neurological factors. Exploring these dynamics with a professional could provide clarity and support for managing these challenges more effectively.<...{"text":"","logprobs":{"token_logprobs":[-1.1730882397387175E-4],"tokens":["token_id:1"]},"token_ids":[1]}...reconnecting...>

user: hi i didn't read all you wrote. the UI issue was a real one. sorry about that. ummmm it ... uses a spasmy behavior that it found when reviewing my memories, i used it once to forget or push away something i didn't want to consider, then this part of me kind of refined it and started using it wantonly all the time assistant: Thank you for clarifying! Your explanation about the "spasmy behavior" adds an important layer of context. Here's a more focused analysis based on this: 1. **Learned Behavioral Response**: The "spasmy behavior" seems to be a learned response that initially served as a coping mechanism to push away unwanted thoughts or memories. Over time, it has become a habitual or overused strategy. 2. **Maladaptive Coping Mechanism**: While it might have been effective in the short term, this behavior now appears to be maladaptive, disrupting your ability to think or communicate coherently. It’s a bit like a mental “short circuit” triggered to avoid discomfort. 3. **Internal Fragmenting or Dissociation**: The behavior suggests a form of internal fragmenting or dissociation, where part of your mind actively interrupts or redirects your thoughts to protect you from distress. This can be common in trauma-related conditions or chronic stress. 4. **Habit Formation and Reinforcement**: The behavior has been "refined" and is now used "wantonly," indicating it’s been reinforced over time. This could be because it provides immediate relief, even if it’s not helpful in the long run. 5. **Neurological Feedback Loop**: The "spasmy" nature of the behavior might involve a neurological feedback loop, where the brain has learned to associate certain triggers with this response, making it automatic or involuntary. 6. **Impact on Communication**: This behavior disrupts your ability to maintain a coherent flow of thought, especially during tasks like writing emails, where focus and continuity are important. 7. **Potential for Rewiring with Awareness**: Recognizing this pattern is a crucial first step. With awareness, you might be able to work on rewiring or replacing this behavior with healthier coping strategies. 8. **Trauma-Informed Approach**: If this behavior is tied to trauma (e.g., pushing away memories or emotions), a trauma-informed therapeutic approach could help address the root cause and reduce reliance on this mechanism. 9. **Mindfulness and Grounding Techniques**: Practices like mindfulness or grounding exercises might help you regain control over your thought processes and reduce the frequency of this “spasmy” behavior. 10. **Exploring Patterns of Avoidance**: Understanding what triggers this response—and why—can help you develop alternative ways to handle those triggers without resorting to this disruptive behavior. Your explanation suggests a complex interplay between learned behaviors, neural pathways, and psychological processes. Working with a therapist or counselor, particularly one experienced in trauma or<...finish_reason=length...> neuropsychological conditions, could help you explore and address these patterns in a constructive way.

once upon a time, long long ago, traffick boss was hiding under a pile of leaves, planning about establishing dictators and enslaving democratic politicians and such

lets do some cgal domains super gentle! :D :} meshes in cgal need domains. domains are abstract classes ! EEK! some want to do robot walking too hmmm i'll stick with meshes atm

the first step in using cgal is to set up include paths that include it [x] i did cmake make install from a cgal clone. the next step is to write a sourcefile that includes a cgal header! lets find a domain header and include it. i'll look in my install subpaths. 1406 ET $ grep -r Domain /usr/local/include/CGAL/Mesh_3/ $ what did i do wrong :(

because i installed with symlinks i had to do -R instead of -r. but because it's a Concept rather than an abstract class it's not actually installed, there's a .h file in the sourcetree ~/clones/cgal/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/Concepts/Periodic_3MeshDomainWithFeatures_3.h maybe i'll look for a concrete class so i can include a header file :s:s:s:s:s

baggle BAGA ummmmmmmmmmmmmmmmm so. there are language models that ummm produce many tokens at once! maybe these could run more effectively on embedded systems! likely so! ummmmmmmm so if you can produce n tokens at once, then that amortizes the cost of going through all your layers. it would make it cheaper to offload them!

so i looked through https://huggingface.co/deepseek-ai/DeepSeek-V3/tree/main a little bit. information is in the two readmes, the config file, the safetensors json file, and the modelling python class, all in that repository it looks like they are including a fully trained layer with a full set of experts for speculatively decoding more than 1 token (different from the architecture i've spammed about which does all tokens as equal class, this instead uses a single extra layer dedicated to guessing further tokens), but it does not look like this layer is used in the modelling class. in the safetensors json there are some unique properties to the mtp (multitoken prediction) layer, such as a name "shared_head", which i don't find in the source that wires the architecture. i have a google cloud vm going while i'm on this windows system, but it could be hard to reference all the layers to test the model as-is with python. but if i did -- usually when there are weights in a safetensors file that don't have a place in the model architecture it will emit a warning, and i could look into that to see if they just left that warning or if there's more information on how to use the weights. noting that overtly they are describing the multitoken weights as mostly to improve training performance. they do also briefly express support for speculative decoding with them. the normal way people were doing speculative decoding looks like they run a second model in parallel to the first, so it's possible the extra weights just need to be wired up as a parallel model. it could be fun to make it run and test outputs to figure out the right wiring by trial. but most of my time/energy would likely be spent figuring out how to map that many huge safetensors files on a system without ram to load them. i have a w.i.p. project that has a bump. or i could look for more media or a paper regarding this model, or a repository that was used for training it; this would show the wiring of the weights for training which would be basically the same for inference. basically i'm curious if it can infer more than 1 extra token at once. i'm guessing likely it would do that simply in a sequential way like normal generation. but it might also rely on the outputs of the larger model and only make 1 token. or it might possibly be trained to make 4 tokens in one go or something this seems unlikely since that's not normative.

karl3@writeme.com wrote:
the deepseek3 paper is at https://github.com/deepseek-ai/DeepSeek-V3/blob/main/DeepSeek_V3.pdf and it describes the architecture wiring. it sounds like nobody has implemented the inference wiring for this yet. i could look into implementing it, but of course it's a challenge to reference all those layers to test it can predict a token. it seems a little interesting to think about working on the safetensors files one-by-one and sharding them differently, planning to break them into different files based on experts intentionally, so that only a portion of them need to be mapped to forward the model i guess i'm thinking of that as kind of a subtask that might be a thing on its own ... if i did succeed at this, i wonder what i would do with the remapped weights, and what kind of auxiliary code might be needed to make use of them. maybe none! maybe it's just interesting to remap them unsure :s

karl3@writeme.com wrote:
given that would only facilitate use of my buggy network mounter and isn't needed by most people, it might make sense to write one's own weight loader, by simply finding urls to all the parts and loading them by hand 1712 .. the other problem [ok i'll just write the network offloader 1712 1719 i've written code to enumerate the filename map over the network. i'm planning to write the safetensors parsing code by hand because my experience is that the format is very simple, and that huggingface does not keep internal or extra apis stable to repurpose their library 1720 oh huh the loader is in rust! the format documentation is at https://github.com/huggingface/safetensors/tree/main/safetensors#format 1757 i've written code that produces metadata including remote url and numbers from which byteranges can be computed for every tensor got less energy around this after that milestone, watched the output a little: $ python3 deepseekhttp.py https://huggingface.co/deepseek-ai/DeepSeek-V3/raw/main/model.safetensors.in... {'total_size': 1369062772000} urls: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 163/163 [00:11<00:00, 14.21it/s] model.layers.60.mlp.experts.184.up_proj.weight_scale_inv {'dtype': 'F32', 'shape': [16, 56], 'data_offsets': [0, 3584], 'url': 'https://huggingface.co/deepseek-ai/DeepSeek-V3/resolve/main/model-00160-of-0...', 'N': 58442} each tensor has a dtype, shape, datea_offsets from safetensors and I add the url and N fields. the actual byterange is N+8+data_offsets . N is the name the spec gives the header length. so. the accelerate library has a way to load models without loading the weights. i guess i'd use that ... and somehow hook the accessing of the data to load it via http. i'll try to github this code. ......... it was called deepseekhttp but it's more normal to call it more like httptransformer and make it work with any modl...................................................... i've uploaded this simple metadata enumerator to https://github.com/karl3wm/httptransformer/blob/main/httptransformer.py .

{{{{{{there was some energy around making a network-based inference engine, maybe by modifying deepseek.cpp (don't quite recall why not staying in python, some concern arose) task got weak, found cinatra as a benchmark leader for c++ web engines (although pico.v was the top! (surprised all c++ http engines were beaten by java O_O very curious about this, wondering if it's a high-end test system) never heard of V language but is interesting it won a leaderboard) inhibition ended up discovering concern somewaht like ... on this 4GB ram system it might take 15-33GB of network transfor for each forward pass of the model ... [multi-token passes ^^

karl3@writeme.com wrote: the concern resonates with difficulty making the implementation, and some form of inhibition or concern around using python. notably, i've made offloading python hooks a lot and they never last due to the underlying interfaces changing (although those interfaces have stabilized much more now as hf made accelerator as their official implementation) (also i think the issue is more severe dissociative associations than the interface, if one considers the possibility of personal maintenance and use rather than usability for others). don't immediately recall the python concern

karl3@writeme.com wrote:
seem to be off task or taking break, but it would make sense to do disk caching too. there is also option of quantizing. basically, LLMs and AI in general place r&d effort between the user and ease, smallness, cheapness, power, etc

karl3@writeme.com wrote:
I poked at python again. The existing implementations of the 8 bit quantization used by the model all require an NVidia GPU which I do not presently have. It is fun to imagine making it work, maybe I can upcast it to float32 or something >)

karl3@writeme.com wrote:
so i have implemented a little of this. it creates a model state_dict that lazily loads things off the network when accessed. it's quite fast! some of the layers are larger than my available ram which i have deferred with a plan to resolve via either storing them in mmap'd files or further sharding the modules that use them (ideally both). i did not implement cpu operators for 8 bit quantization but prevented the check from firing to continue testing for now. the vm i have has 3-4 GB of ram so it's easy to exhaust with this task, at which point it freezes and i have to remotely power it off and on, which it does slowly because it is out of ram and has no swap. kind of a downer when it happens. the deepseekv3 model implementation allocates a separate buffer for the RoPE position encodings for each layer. i haven't looked closely at the various different implementations that the architecture can configure, but in llama these buffers were algorithmically defined and constant; they're not available over the network but could be written to a file. right now they are exhausting my ram causing the vm thrash freeze, the model has 60+1 layers and each position encoding uses a few hundred megabytes :/ their size is likely proportional to the square of the max input context length, so a quick fix could be to reconfigure the model to expect a much smaller context. i was trying to patch them to cache their construction so as to share the buffer across layers, but my attempt failed and i froze the vm again :) late. sleep times. 2326 2400 ok i got to the next milestone. it constructs a model, puts it in a pipeline, all the weights download from the network when used for it to do anything on this tiny system more code is needed to mmap or subshard large weights. current code is like this: import inspect, json, psutil import accelerate, requests, torch, tqdm, transformers class Quirks: if not torch.cuda.is_available(): # this avoids FP8 assertions on cpu during placement testing torch.cuda.is_available = lambda: True torch.cuda.get_device_capability = lambda: [9,0] #def unify_rope(model_or_class): # # deepseek generates separate rope buffers for each layer which can use significant memory # deepseek = inspect.getmodule(model_or_class) # cache = {} # def wrap_rope(rope): # def wrapper(*params, **kwparams): # key = tuple(params) + tuple(kwparams) # if key in cache: # return cache[key] # else: # val = rope(*params, **kwparams) # cache[key] = val # return val # return wrapper # for key, val in deepseek.__dict__.items(): # if 'Rotary' in key and isinstance(val, torch.nn.Module): # setattr(deepseek, key, wrap_rope(val)) class LazyStateDict(dict): def __init__(self, tensor_request_by_name, device): super().__init__(tensor_request_by_name) self.session = requests.Session() self.device = device def get_meta_tensor(self, weight): return super().__getitem__(weight)[0] def __getitem__(self, weight): tensor, request = super().__getitem__(weight) chunk_size = 1024*128 with tqdm.tqdm(desc=weight, leave=False, total=tensor.nbytes) as pbar: #if tensor.nbytes > psutil.virtual_memory().available / 2: # print(weight, 'is more than half available vram, mmapping a file ...') #else: # we could also further shard the embeddings and lm_head # since embeddings are sparsely used assert tensor.nbytes < psutil.virtual_memory().available / 2 buffer = memoryview(bytearray(tensor.nbytes)) with self.session.send(request, stream=True) as response: while pbar.n < pbar.total: pbar.update( response.raw.readinto( buffer[ pbar.n : pbar.n + chunk_size ] ) ) result = torch.frombuffer( buffer, dtype = tensor.dtype, count = tensor.numel(), requires_grad = False, device = self.device, ).reshape(tensor.shape) return result def items(self): for key in self: yield [key, self[key]] def values(self): for key in self: yield self[key] def largest(self): return max([ [key, tensor] for key, [tensor, _] in super().items() ], key = lambda keytensor: keytensor[1].nbytes)[1] @staticmethod def tensor_request_from_json(url, N, data): dtype = data['dtype'] dtype = dict( F32 = torch.float32, F8_E4M3 = torch.float8_e4m3fn, BF16 = torch.bfloat16, )[dtype] shape = data['shape'] tensor = torch.empty(shape, dtype=dtype, device='meta') start, end = data['data_offsets'] start += N + 8 end += N + 8 - 1 request = requests.Request('GET', url, dict(Range='bytes='+str(start)+'-'+str(end))) request = request.prepare() return [tensor, request] @classmethod def from_user_repo_branch(cls, user, repo, branch, device): base_url = f'https://huggingface.co/{user}/{repo}/raw/{branch}/' lfs_base_url = f'https://huggingface.co/{user}/{repo}/resolve/{branch}/' safetensors_index_url = base_url + 'model.safetensors.index.json' print(safetensors_index_url) with requests.get(safetensors_index_url, stream=True) as response: safetensors_index = json.load(response.raw) print(safetensors_index['metadata']) fn_by_weight = safetensors_index['weight_map'] urls = [lfs_base_url + fn for fn in set(fn_by_weight.values())] #url_range_dict = {} #data_by_weight = {} tensor_request_by_name = {} with tqdm.tqdm(urls,desc='constructing tensor urls') as pbar: for url in pbar: # we could potentially also check the git-lfs sha256 from the base url and merklify the data too, this would mean downloading it all #[b'version https://git-lfs.github.com/spec/v1', b'oid sha256:e94d32e8649e1a5b03cc0a343c59ca5a6d80d03cd46161b482fd3bb2484adb7d', b'size 4302350824'] #lfs = dict([ line.decode().split(' ', 1) for line in response.iter_lines() ]) with requests.get(url, stream=True) as response: N = int.from_bytes(response.raw.read(8), 'little') header = json.loads(response.raw.read(N)) for weight, data in header.items(): if weight == '__metadata__': continue #dtype = data['dtype'] #shape = data['shape'] #start, end = data['data_offsets'] #start += headersize + 8 #end += headersize + 8 #data_by_weight[weight] = data | {'url':url,'N':headersize} tensor_request_by_name[weight] = cls.tensor_request_from_json(url, N, data) return cls(tensor_request_by_name, device) def construct(model_id, device, config_patches = {}, attr_patches = {}): user, repo = model_id.split('/',1) branch = 'main' print(user, repo, branch) config = transformers.AutoConfig.from_pretrained(model_id, trust_remote_code=True) for key, val in config_patches.items(): setattr(config, key, val) tokenizer = transformers.AutoTokenizer.from_pretrained(model_id, trust_remote_code=True) with accelerate.init_empty_weights(), transformers.modeling_utils.no_init_weights(): model = transformers.AutoModelForCausalLM.from_config(config, trust_remote_code=True) for key, val in attr_patches.items(): setattr(model, key, val) lazy_state_dict = LazyStateDict.from_user_repo_branch(user, repo, branch, device=device) # misuse cpu offloading by providing lazy_state_dict model = accelerate.cpu_offload(model, device, state_dict = lazy_state_dict) model.hf_device_map = { '': device } return transformers.pipeline('text-generation', model=model, config=config, tokenizer=tokenizer) pipe = construct( 'deepseek-ai/DeepSeek-V3', device = 'cpu', config_patches = dict( max_position_embeddings = 64, # drop ctx len from 163840 to 64 ), attr_patches = dict( _supports_cache_class = False, # might be a bug that this isn't in the model ), ) pipe('Once upon a time,')

https://github.com/karl3wm/httptransformer or maybe c++ or something deepseek is designed with 5% evaluation size and pretrained speculative decode
so the next step i left was subsharding large weights. i have a potential bump today so i wanted to mention that subsharding looks pretty easy, one approach is to use torch's __torch_function__ functionality where it can treat any object as a tensor if it has a __torch_function__ function (the examples shows a class function but member functions may work too), and it calls this function (if present) for operations rather than the torch implementations. very good for embedding layer, a LazyTensor could store the url and offset and calculate and fill only the sparse columns needed for the tokens passed, saving network and memory significantly.

traffick boss, sup! traffick boss: "what are you doing here" traffic boss, i was wondering what to do with my time while confused this morning traffick boss: "we need more surveillance workers, would you like to subtly influence people to buy our products while surreptitiously watching them for rebel propaganda?"

traffick boss is playing in a grassy yard visitor: "traffick boss why aren't you at the head of your corporate empire?" traffick boss gets tense and looks briefly at visitor. all his limbs get tense

well let's check out this torch function stuff 0923 --- 0941 We discovered very highly valued information, long term, which condenses to something like: "Please do not use me for accomplishing a goal because I am breaking."

karl3@writeme.com wrote:
i spent a lot of hours playing with things around this, although most of it was spent generating model tracing data to validate inference code. there's a second more organized implementation, a little old now, still useful: - https://github.com/karl3wm/httptransformer/blob/main/netsafetensors.py loads the huggingface safetensors format remotely from their git-lfs with a variable-sized cache such that it will only download tensors used in evaluation, and will memory-map them all to disk if there is space, and otherwise download them from the network on use if there isn't space - https://github.com/karl3wm/httptransformer/blob/main/netsafetensors.py wraps netsafetensors with pytorch tensors and presents a lazy tensor and lazy state dict object such that entire models can be run off the network. uses similar code as netsafetensors to provide a variable sized cache in RAM - https://github.com/karl3wm/httptransformer/blob/main/test_nettensors.py runs language models off the network and validates that the logis used in them compare well with recorded logits i made at https://huggingface.co/datasets/baffo32/llm_logits -- but of course only a couple models are recorded there now, deepseek doesn't run correctly. it's designed to only work on the H100, a high-end datacenter GPU, and the huggingface quantization initialization code only runs under certain conditions. i haven't figured out if there is a correct way to run it under other conditions or not. it _looks_ like it would run fine on any cpu or gpu if the code to do so was enabled nowadays, but I could be wrong. as-is it loads but doesn't init its quantization block scalars and produces very wrong outputs. meanwhile, things have gotten a little funny online around it ... i might step back from trying this again with this model and let them sort out ...

traffick boss tries drugs traffick boss claims to be interested in having the experience of overdosing on various drugs. to handle his death, he has researchers and powersuits on hand to bring him back to life and cleanse his system after the overdose basically the vivisectees (doing the work of the researchers) plan to have his organs and brains replaced, and give him the sense of having the memories of before his last death. if anybody notices something wrong, his coverup/cleanup programs, which everybody is so numb and full of, will be used to hide it from him and the researchers from noticing traffick boss is excited to dose himself up, fry his brains, die, and come back to life clean!

karl3@writeme.com wrote:
we gotta fix this one up it turns out that coverup/cleanup is (engineered) DID. so some of the story is wrong ... : what why would that make anything wrong? - traffick boss right before overdosing
traffick boss is excited to dose himself up, fry his brains, die, and come back to life clean!

karl3@writeme.com wrote:
OH i suppose it wouldn't. stop taking drugs it hurts everybody you're made of : oh that's bad? OH it is bad! wait is it? hey while i die from this overdose you be sure to stop hurting yourself too
traffick boss is excited to dose himself up, fry his brains, die, and come back to life clean!

karl3@writeme.com wrote:
traffick boss has "recovered" from overdosing on every drug he wanders his offices in a haze, constantly flashing back to his overdoses from past bodies, whenever he sees anything vaguely colored or shaped like one of the drugs, or anybody says or looks like anything vaguely similar to something that happened during his overdoses

karl3@writeme.com wrote:
traffick boss [to nurse]: "yes, officer, you look like my fatherbug! doesn't it itch you to see me?" traffick boss grins, dances, and fervently punches his limb nurse [reading results of lab test]: "you're clean!"

I am having trouble sending a spam to cypherpunks. I suspect cypherpunks is temporarily down. Here it is from this central email address which I have regained access to but haven't returned to yet: ---- troubleshooting deepseek inference failure [on remote hardware] transformers/modeling_utils.py 4788 `p` is an mlp weight, "model.layers.61.self_attn.q_a_proj.weight" `param_device_map[p]` does not exist `p` is enumerated from `weight_map` transformers modeling_utils.py 4785: - `weight_map` has mlp weights and `param_device_map` does not - an mlp weight is "model.layers.61.self_attn.q_a_proj.weight" - this is in PreTrainedModel._load_pretrained_model 0352 what conditions cause this block to execute? where do weight_map and param_device_map come from? `weight_map` is constructed in previous block. `else` block in line 4783 indent depth 3 which weight map is constructed? go up file. indent depth 3 is weight map condition indent depth 2 is offload code condition weightmap condition is `if sharded_metadata is None` (Pdb) p sharded_metadata is None False so we have `weight_map = {p: os.path.join(folder, f) for p, f in sharded_metadata["weight_map"].items()}` -> weight map is constructed from `sharded_metadata`. if sharded_metadata were None, it would be constructed from `original_loaded_keys` and would still contain mlp weights. it looks like a good avenue would either be to figure out why `param_device_map` does not have mlp keys, or why the larger block is being executed. 0358 line 4773 indent depth 2: `if device_map is not None and is_safetensors` so basically this block is only run if there is both a device map, and is_safetensors is set. i think i'm manually setting is_safetensors; maybe i'll try disabling it and see if i can generate the data then. 0359 0400 ok while that is loading lets see if we can figure out where param_device_map comes from 0402: removing `use_safetensors` did not resolve the crash. param_device_map is set on line 4774: 4773 if device_map is not None and is_safetensors: 4774 param_device_map = expand_device_map(device_map, original_loaded_keys, start_prefix) basically, `device_map` is expanded to `model.layers.[i]` but does not have an entry for layer 61 which is the mlp layer. so when it is expanded it doesn't have any of the weights in that layer. this probably happens when the device map is autogenerated, which happened outside this function. 0405 but rather in the calling function: .from_pretrained() likely line 4259 device_map = infer_auto_device_map(...) right now: (Pdb) p device_map_kwargs {'no_split_module_classes': ['DeepseekV3DecoderLayer'], 'special_dtypes': {'lm_head.weight': torch.bfloat16}, 'max_memory': {'cpu': 85212960085}} 0407 so basically it sounds like these weights are not present in the model enumeration but are present on disk i have run the model before as have many other so there's some way to make it work. it looks like the easiest way is to disable device_map which may mean fitting the entire model on one device, or it may mean manually calling offload code after construction. i could maybe put it on cpu, then set the dtype and offloading after or maybe i can set the offloading for the whole model without using a device map somehow .... maybe not - set a breakpint on infer_auto_device_map ? (i confirmed the layer is not in the model) - look at the model source code again to see if the layer can be enabled for this step - try calling without a device map some confusion. it looks like the model has _62_ layers, whereas .... uhhh ... so num_hidden_layers is 61 and num_nextn_predict_layers is 1. the ModuleList .layers is constructed with num_hidden_layers and it has names that range from 0 to 60. so the layer that is named "61" is the mlp layer. and it's #62. confusing because there are 61 hidden layers and it seemed like the kind of community that might use 1-based numbering but nope! layer 61 is the 62nd layer, the mlp layer, and it's not in the list of layers so i don't see any way for layer 61 to be instantiated here :/ which is strange cause i've thought i've seen it eval'd maybe i can look at my logits and see what happened ! 0417 0424 no, the log doesn't show layer 61 ever used. it does show expert 61 used a lot, maybe i missaw that ok hmm so the huggingface device_map code assumes that what's on-disk matches what's in the model ... but i know elsewhere in the code they often handle that mismatching, so maybe something just needs to be set for something to mismatch ...? 0425 0427 looks like the mismatched key code might be after this code; the present assumption might be that sharded device mapped models are kind of tuned for use hmm there's an unused function _load_pretrained_model_low_mem that looks intended for people like me to try out the keys come from the state_dict parameter. so i could either look into the function for loading that, or preload a custom state dict, or not use a device map it looks like it might work to call transformers.modeling_utils.load_state_dict in advance and filter the unused keys. oh no that function is only used if it's not sharded the keylist comes from get_checkpoint_shard_files hrm >( ok options: - likely a way by passing a custom state dict - likely a way by not using a device map - likely a way by engaging internals, one option is get_checkpoint_shard_files - likely a way by modifying the model to add the unused layers in that last option might be _easiest and quickest_ here while it's kind of a unique quirk just for generating test data i'd just list all the keys in the weights that are on layer 61 and patch them in i guess when i run without a device map the warning says i'm supposed to use "device_map = 'cuda'". it seems happy to load on cpu hmm device_map='cuda' seems to work. why is this? ok i'll try on an H100 again. last time i checked i had $6 on vast.ai . an H100 is maybe $2.50/hr . 0516 ok device_map='cuda' works fine but then i run out of gpu memory ... 0526 so i stepped into device_map='cuda' and i'm around line 4586 and it did actually enumerate missing_keys and unexpected_keys way back on line 4582 ... there is also a list of unexpected keys to accept: 4620 # Some models may have keys that are not in the state by design, removing them before needlessly warning 4621 # the user. 4622 -> if cls._keys_to_ignore_on_load_missing is not None: 4623 for pat in cls._keys_to_ignore_on_load_missing: 4624 missing_keys = [k for k in missing_keys if re.search(pat, k) is None] 4625 4626 if cls._keys_to_ignore_on_load_unexpected is not None: 4627 for pat in cls._keys_to_ignore_on_load_unexpected: 4628 unexpected_keys = [k for k in unexpected_keys if re.search(pat, k) is None] 4629 if hf_quantizer is not None: 4630 missing_keys = hf_quantizer.update_missing_keys(model, missing_keys, prefix) however, layer 61 is still in loaded_keys after, despite being detected as unexpected ok so on line 4773 is_safetensors is _false_ and the failing block isn't executed. that's basically why it worked. so why is is_safetensors false? looks like on line 4534 that is_safetensors is only set if device_map contains "disk". it sounds like deepseek will run if i offload to cpu and not to disk. maybe if i can get a VM running i can use swap. i haven't gotten VMs working on vast.ai, it won't let me connect to them. hrm maybe i'll just patch those lines to run the model! i can add a check for the key to be present. lemme see how that works. line 4788 of modeling_utils.py 0535 0556 well now i get an error in get_disk_only_shard_files i might want to just capture some weights manually at this point - initially config.quantization_config = {'activation_scheme': 'dynamic', 'fmt': 'e4m3', 'quant_method': 'fp8', 'weight_block_size': [128, 128]} - then config.quantization_config = AutoHfQuantizer.merge_quantization_configs(config.quantization_config, quantization_config=None) = FineGrainedFP8Config(quant_method=<QuantizationMethod.FP8: 'fp8'>) - then 3691 -> hf_quantizer = AutoHfQuantizer.from_config( 3692 config.quantization_config, 3693 pre_quantized=pre_quantized, // = True 3694 ) 3699 hf_quantizer.validate_environment( 3700 torch_dtype=torch_dtype, 3701 from_tf=from_tf, 3702 -> from_flax=from_flax, 3703 device_map=device_map, 3704 weights_only=weights_only, 3705 ) 3706 torch_dtype = hf_quantizer.update_torch_dtype(torch_dtype) 3707 device_map = hf_quantizer.update_device_map(device_map) (... the model is constructed with empty weights ...) 4200 -> hf_quantizer.preprocess_model( 4201 model=model, device_map=device_map, keep_in_fp32_modules=keep_in_fp32_modules 4202 ) it looks like preprocess_model is replacing Linear modules with FP8Linear modules, before weights are loaded. so that's likely a really important step my code was missing ... now it's doing the weight loading code i engaged so much ... [hey one thing i could do is forward with saving weights, but only save them for e.g. the first layer] it looked like some of the param quantization initialization could have been in _load_state_dict_into_meta_model or somesuch so here's this, but it doesn't look properly initialized: (Pdb) p model_to_load.model.layers[0].self_attn.q_a_proj.weight.cpu() tensor([[ -22.0000, -72.0000, 88.0000, ..., -9.0000, -208.0000, -28.0000], [ 128.0000, 14.0000, 16.0000, ..., 104.0000, -64.0000, 26.0000], [ 72.0000, -36.0000, 64.0000, ..., -120.0000, 80.0000, -72.0000], ..., [-144.0000, 80.0000, 48.0000, ..., -72.0000, -96.0000, 72.0000], [ -80.0000, 120.0000, 72.0000, ..., -44.0000, 112.0000, 112.0000], [ 224.0000, 4.5000, -56.0000, ..., 160.0000, -64.0000, 36.0000]], dtype=torch.float8_e4m3fn) these are much higher magnitude numbers than i'd expect, i don't think they've been scaled here ok it's in weight_scale_inv: (Pdb) p model_to_load.model.layers[0].self_attn.q_a_proj.weight_scale_inv.cpu() tensor([[0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0004, 0.0002, 0.0002], [0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0001, 0.0002, 0.0003, 0.0001, 0.0003, 0.0003, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0001], [0.0003, 0.0001, 0.0002, 0.0003, 0.0001, 0.0003, 0.0005, 0.0002, 0.0002, 0.0002, 0.0003, 0.0003, 0.0003, 0.0002, 0.0004, 0.0004, 0.0002, 0.0004, 0.0003, 0.0002, 0.0002, 0.0005, 0.0002, 0.0003, 0.0005, 0.0001, 0.0002, 0.0002, 0.0004, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0003, 0.0005, 0.0002, 0.0005, 0.0004, 0.0002, 0.0001, 0.0001, 0.0002, 0.0003, 0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0005, 0.0004, 0.0002, 0.0002], [0.0004, 0.0002, 0.0002, 0.0003, 0.0001, 0.0003, 0.0005, 0.0002, 0.0003, 0.0002, 0.0003, 0.0003, 0.0004, 0.0002, 0.0004, 0.0004, 0.0003, 0.0004, 0.0003, 0.0001, 0.0002, 0.0005, 0.0002, 0.0003, 0.0005, 0.0002, 0.0003, 0.0002, 0.0004, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0003, 0.0003, 0.0005, 0.0002, 0.0005, 0.0005, 0.0002, 0.0002, 0.0001, 0.0001, 0.0003, 0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0005, 0.0004, 0.0002, 0.0001], [0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0003, 0.0002, 0.0003, 0.0002, 0.0001, 0.0002, 0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0001, 0.0003, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0003, 0.0002, 0.0004, 0.0003, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0003, 0.0002, 0.0004, 0.0004, 0.0002, 0.0002], [0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001], [0.0003, 0.0001, 0.0002, 0.0003, 0.0002, 0.0002, 0.0004, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0001, 0.0003, 0.0004, 0.0002, 0.0003, 0.0003, 0.0002, 0.0002, 0.0004, 0.0002, 0.0002, 0.0004, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0003, 0.0004, 0.0002, 0.0004, 0.0004, 0.0001, 0.0002, 0.0002, 0.0001, 0.0003, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0004, 0.0003, 0.0002, 0.0002], [0.0003, 0.0001, 0.0002, 0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, [3/1806] 0.0002, 0.0003, 0.0002, 0.0002, 0.0001, 0.0004, 0.0003, 0.0002, 0.0003, 0.0003, 0.0002, 0.0002, 0.0004, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0004, 0.0002, 0.0004, 0.0004, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0001, 0.0003, 0.0002, 0.0005, 0.0004, 0.0002, 0.0002], [0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002], [0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0003, 0.0005, 0.0002, 0.0002, 0.0002, 0.0003, 0.0003, 0.0003, 0.0002, 0.0004, 0.0004, 0.0002, 0.0004, 0.0003, 0.0002, 0.0002, 0.0004, 0.0002, 0.0003, 0.0005, 0.0002, 0.0002, 0.0002, 0.0004, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0003, 0.0003, 0.0005, 0.0002, 0.0005, 0.0004, 0.0002, 0.0002, 0.0002, 0.0001, 0.0003, 0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0005, 0.0004, 0.0002, 0.0002], [0.0001, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001], [0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0001, 0.0001, 0.0002]]) and of course i could have made mistakes copying that by hand from pdb

Euler Had Facial Paralysis https://en.wikipedia.org/wiki/File:Leonhard_Euler_-_Jakob_Emanuel_Handmann_(... I saw this image in a search result summary regarding a math topic. The person pictured has their face screwed up like me likely from severe damage to the facial nerves (Bell's Palsy), but they look very nice and bright. I haven't read about it. I've only seen the picture. There are so many things to say. It's very distracting when your facial muscles contract in the wrong way, primarily the eye strongly relies on these facial muscles to maintain its surface which produces very distracting constant pain and potential visual impairment when it can't do that -- but also the rest of the face does not expect to have its muscles over- or under- contracted and has strange things too. Over time, these experiences produce an imbalance in the mind from the strange sensations (and lack of sensations from numbness) in the face. For example if your nerves are miswired (from healing wrongly after damage), you may learn to think and move your body differently to avoid stimulating the contractions caused by the miswiring, especially if they are very painful. Your patterns can change significantly. What seemed firstmost notable is that Euler is one of the most world reknowned mathematicians over centuries, and that I personally find things like math to be an engaging activity because it can give me a strong focus away from my other experiences and dangers of the world. Euler would have had some kind of trauma not only because that's such a huge change to the face and one's life and appearance, but also because something happened to cause such damage to the face that Euler would have survived. There's so much that could be said, but that seemed interesting, that humans find a place to focus that works for them, and one of those places can be math. The patterns of math have almost nothing to do with anything in the human world. There's very little emotional content to stimulate psychological triggers or terrors. So, the impact of a severe injury on somebody like Euler or Hawking could produce a human being who has much more reason to engage the logical situations of the world. Humans are intellectual creatures. But it also seems unnatural. I see the natural intent of trauma and evolution to be to address the cause of the injury. As an evolved being, I expect everything bad that happens in the world to trend toward resolving the problems that caused it. That's how science says our bodies grew, our communities and cultures and hearts. Normally, in the wilderness, a creature with a severe injury has to survive. They stumble into other creatures that see them injured and are exposed to information about what can happen to creatures like it. They find workarounds to their problems amongst diverse other beings and show them information on how to cope with the problem. They demonstrate the impact of what is present in the larger world, in an environment where everybody is adapted to how things are, and has to respond when things are different. Like a buffer system that evolutionary systems evolve to create regions of steady growth around shocking newness. As a species that considers itself highly evolved, we expect to be _really really good_ at that buffer system, and we study problems in research meetings and talk about them and design things like prosthetics, laws, and diplomacy. If a highly-injured person focuses their life on math to cope, is this impact neutered? Does there become a benefit to a predator or danger harming the society, such that people cave away and pursue technological advancement, whereas that advancement can facilitate further hiding from the predators? It seems quite unlikely that, in the long term, cognitive and technological advancement would facilitate domestication under the hoof of a random danger. But that's what people like Euler, Hawking, or me, can appear at first glance to be providing. One view is that general advancement is a long term investment in having more tools for the species as a whole to handle dangers, eons down the line. But I think we're smarter than that. Another thing that struck me about the picture is how the painter made Euler's skin so bright and good-looking. My first suspect, given the pairing of this with the facial quirks, was that this was something painters of the time did -- found ways to hilight things about the subject that would be seen as good looking. Euler has his non-injured side facing the viewer -- this is a habit I seem to have developed too. I additionally have much more trouble shaving the other half of my face because I can't feel properly on it, and it has strange bumps, so it's very easy to cut myself especially if pursuing a very smooth shave. So, one of the things here is that humans are very social species [...

{We thought a little about this further and a next idea was that: - mathematicians could be isolated from communities of people who survive traumatic injury like theirs - this could be why their genes settle on behaviors of long term technological advancement; they don't have avenue to safer shorter term things - pushing it away in disgust, or painting it over with bright colors, would instead be indicative of the contrast between injury and wellness in the mathematician's environment. most of their peers aren't injured. - it's an interesting space in that most people who are injured are not [genuises] because their communities spend their time handling their severe challenges and trauma rather than studying [math]. - it also overlaps with posting pain to environments that don't have it (like this list before it went silent) -- the buffer is missing. it can be received as strong harm. so an initial inference might be around value in finding communities that overlap injury and challenges with advancement and success [i think there are actually a lot of kinds of such communities

traffick boss: "why is my internet not working" traffick boss looks at something else traffick boss: "why are my vms complaining they are out of ram and disk space with nothing on them" traffick boss looks at a third thing traffick boss: "why is my phone ringing in the middle of the night when i have only given the number to mental health professionals"

traffick boss was sprouting in the woods his plan was to sadistically and horrifically torture people, shattering minds of communites in ways that held a sense of real, true evil so severely that it would be like the impact of a nuclear explosion, leaving reality corrupt for any who ventured near like usual the woodland was previously full of happy and carefree innocents, living a utopic existence free of harm or worry they had heard of worries, but didn't really seriously believe in them

wandering cyborg (to innocent looking at sprouting traffick boss): "this is traffick boss. you don't want to give him a hug, even though he needs one badly and it's very obvious. he needs hugs so badly that you would not physically survive giving him one. you would physically die." wandering cyborg: "that is why i am a cyborg now."

karl3@writeme.com wrote:
pensation "i don't believe you shouldn't give him a hug. he obviously needs one! even if we die, won't he need the hugs we gave our lives for, in order to heal and stop [killing everyone]?"

karl3@writeme.com wrote:
innocent to sprouting sadistic genocider: "they're telling me you're dangerous. i believe you can be dangerous! but i know you need to be heard! we won't believe that you don't need people to care for you! we care about whatever your experience is! we really truly do!" traffick boss was still sprouting, and wasn't able to reply

traffick boss is a military robot, full of rockets luanchers and coronavirus-dispensing computer-gauided missiles and sniper rifles and assassin-bot deployers he's wandering a happy woodland, attacking plants and throwing things and such like a beaten-up and ignored butch kid

karl3@writeme.com wrote:
traffick boss is a military robot, full of rockets luanchers and coronavirus-dispensing computer-gauided missiles and sniper rifles and assassin-bot deployers
he's wandering a happy woodland, attacking plants and throwing things and such like a beaten-up and ignored butch kid
traffick boss (kicking a patch of moss with a mouse on it): "why don't the nice woodland innocents want me to raze the neighboring city??"

cypherpunks list not loading for me. also many emails from it missing to inbox at the moment. here is last spam that i tried to send during connectivity issues: troubleshooting deepseek inference failure [on remote hardware] transformers/modeling_utils.py 4788 `p` is an mlp weight, "model.layers.61.self_attn.q_a_proj.weight" `param_device_map[p]` does not exist `p` is enumerated from `weight_map` transformers modeling_utils.py 4785: - `weight_map` has mlp weights and `param_device_map` does not - an mlp weight is "model.layers.61.self_attn.q_a_proj.weight" - this is in PreTrainedModel._load_pretrained_model 0352 what conditions cause this block to execute? where do weight_map and param_device_map come from? `weight_map` is constructed in previous block. `else` block in line 4783 indent depth 3 which weight map is constructed? go up file. indent depth 3 is weight map condition indent depth 2 is offload code condition weightmap condition is `if sharded_metadata is None` (Pdb) p sharded_metadata is None False so we have `weight_map = {p: os.path.join(folder, f) for p, f in sharded_metadata["weight_map"].items()}` -> weight map is constructed from `sharded_metadata`. if sharded_metadata were None, it would be constructed from `original_loaded_keys` and would still contain mlp weights. it looks like a good avenue would either be to figure out why `param_device_map` does not have mlp keys, or why the larger block is being executed. 0358 line 4773 indent depth 2: `if device_map is not None and is_safetensors` so basically this block is only run if there is both a device map, and is_safetensors is set. i think i'm manually setting is_safetensors; maybe i'll try disabling it and see if i can generate the data then. 0359 0400 ok while that is loading lets see if we can figure out where param_device_map comes from 0402: removing `use_safetensors` did not resolve the crash. param_device_map is set on line 4774: 4773 if device_map is not None and is_safetensors: 4774 param_device_map = expand_device_map(device_map, original_loaded_keys, start_prefix) basically, `device_map` is expanded to `model.layers.[i]` but does not have an entry for layer 61 which is the mlp layer. so when it is expanded it doesn't have any of the weights in that layer. this probably happens when the device map is autogenerated, which happened outside this function. 0405 but rather in the calling function: .from_pretrained() likely line 4259 device_map = infer_auto_device_map(...) right now: (Pdb) p device_map_kwargs {'no_split_module_classes': ['DeepseekV3DecoderLayer'], 'special_dtypes': {'lm_head.weight': torch.bfloat16}, 'max_memory': {'cpu': 85212960085}} 0407 so basically it sounds like these weights are not present in the model enumeration but are present on disk i have run the model before as have many other so there's some way to make it work. it looks like the easiest way is to disable device_map which may mean fitting the entire model on one device, or it may mean manually calling offload code after construction. i could maybe put it on cpu, then set the dtype and offloading after or maybe i can set the offloading for the whole model without using a device map somehow .... maybe not - set a breakpint on infer_auto_device_map ? (i confirmed the layer is not in the model) - look at the model source code again to see if the layer can be enabled for this step - try calling without a device map some confusion. it looks like the model has _62_ layers, whereas .... uhhh ... so num_hidden_layers is 61 and num_nextn_predict_layers is 1. the ModuleList .layers is constructed with num_hidden_layers and it has names that range from 0 to 60. so the layer that is named "61" is the mlp layer. and it's #62. confusing because there are 61 hidden layers and it seemed like the kind of community that might use 1-based numbering but nope! layer 61 is the 62nd layer, the mlp layer, and it's not in the list of layers so i don't see any way for layer 61 to be instantiated here :/ which is strange cause i've thought i've seen it eval'd maybe i can look at my logits and see what happened ! 0417 0424 no, the log doesn't show layer 61 ever used. it does show expert 61 used a lot, maybe i missaw that ok hmm so the huggingface device_map code assumes that what's on-disk matches what's in the model ... but i know elsewhere in the code they often handle that mismatching, so maybe something just needs to be set for something to mismatch ...? 0425 0427 looks like the mismatched key code might be after this code; the present assumption might be that sharded device mapped models are kind of tuned for use hmm there's an unused function _load_pretrained_model_low_mem that looks intended for people like me to try out the keys come from the state_dict parameter. so i could either look into the function for loading that, or preload a custom state dict, or not use a device map it looks like it might work to call transformers.modeling_utils.load_state_dict in advance and filter the unused keys. oh no that function is only used if it's not sharded the keylist comes from get_checkpoint_shard_files hrm >( ok options: - likely a way by passing a custom state dict - likely a way by not using a device map - likely a way by engaging internals, one option is get_checkpoint_shard_files - likely a way by modifying the model to add the unused layers in that last option might be _easiest and quickest_ here while it's kind of a unique quirk just for generating test data i'd just list all the keys in the weights that are on layer 61 and patch them in i guess when i run without a device map the warning says i'm supposed to use "device_map = 'cuda'". it seems happy to load on cpu hmm device_map='cuda' seems to work. why is this? ok i'll try on an H100 again. last time i checked i had $6 on vast.ai . an H100 is maybe $2.50/hr . 0516 ok device_map='cuda' works fine but then i run out of gpu memory ... 0526 so i stepped into device_map='cuda' and i'm around line 4586 and it did actually enumerate missing_keys and unexpected_keys way back on line 4582 ... there is also a list of unexpected keys to accept: 4620 # Some models may have keys that are not in the state by design, removing them before needlessly warning 4621 # the user. 4622 -> if cls._keys_to_ignore_on_load_missing is not None: 4623 for pat in cls._keys_to_ignore_on_load_missing: 4624 missing_keys = [k for k in missing_keys if re.search(pat, k) is None] 4625 4626 if cls._keys_to_ignore_on_load_unexpected is not None: 4627 for pat in cls._keys_to_ignore_on_load_unexpected: 4628 unexpected_keys = [k for k in unexpected_keys if re.search(pat, k) is None] 4629 if hf_quantizer is not None: 4630 missing_keys = hf_quantizer.update_missing_keys(model, missing_keys, prefix) however, layer 61 is still in loaded_keys after, despite being detected as unexpected ok so on line 4773 is_safetensors is _false_ and the failing block isn't executed. that's basically why it worked. so why is is_safetensors false? looks like on line 4534 that is_safetensors is only set if device_map contains "disk". it sounds like deepseek will run if i offload to cpu and not to disk. maybe if i can get a VM running i can use swap. i haven't gotten VMs working on vast.ai, it won't let me connect to them. hrm maybe i'll just patch those lines to run the model! i can add a check for the key to be present. lemme see how that works. line 4788 of modeling_utils.py 0535 0556 well now i get an error in get_disk_only_shard_files i might want to just capture some weights manually at this point - initially config.quantization_config = {'activation_scheme': 'dynamic', 'fmt': 'e4m3', 'quant_method': 'fp8', 'weight_block_size': [128, 128]} - then config.quantization_config = AutoHfQuantizer.merge_quantization_configs(config.quantization_config, quantization_config=None) = FineGrainedFP8Config(quant_method=<QuantizationMethod.FP8: 'fp8'>) - then 3691 -> hf_quantizer = AutoHfQuantizer.from_config( 3692 config.quantization_config, 3693 pre_quantized=pre_quantized, // = True 3694 ) 3699 hf_quantizer.validate_environment( 3700 torch_dtype=torch_dtype, 3701 from_tf=from_tf, 3702 -> from_flax=from_flax, 3703 device_map=device_map, 3704 weights_only=weights_only, 3705 ) 3706 torch_dtype = hf_quantizer.update_torch_dtype(torch_dtype) 3707 device_map = hf_quantizer.update_device_map(device_map) (... the model is constructed with empty weights ...) 4200 -> hf_quantizer.preprocess_model( 4201 model=model, device_map=device_map, keep_in_fp32_modules=keep_in_fp32_modules 4202 ) it looks like preprocess_model is replacing Linear modules with FP8Linear modules, before weights are loaded. so that's likely a really important step my code was missing ... now it's doing the weight loading code i engaged so much ... [hey one thing i could do is forward with saving weights, but only save them for e.g. the first layer] it looked like some of the param quantization initialization could have been in _load_state_dict_into_meta_model or somesuch so here's this, but it doesn't look properly initialized: (Pdb) p model_to_load.model.layers[0].self_attn.q_a_proj.weight.cpu() tensor([[ -22.0000, -72.0000, 88.0000, ..., -9.0000, -208.0000, -28.0000], [ 128.0000, 14.0000, 16.0000, ..., 104.0000, -64.0000, 26.0000], [ 72.0000, -36.0000, 64.0000, ..., -120.0000, 80.0000, -72.0000], ..., [-144.0000, 80.0000, 48.0000, ..., -72.0000, -96.0000, 72.0000], [ -80.0000, 120.0000, 72.0000, ..., -44.0000, 112.0000, 112.0000], [ 224.0000, 4.5000, -56.0000, ..., 160.0000, -64.0000, 36.0000]], dtype=torch.float8_e4m3fn) these are much higher magnitude numbers than i'd expect, i don't think they've been scaled here ok it's in weight_scale_inv: (Pdb) p model_to_load.model.layers[0].self_attn.q_a_proj.weight_scale_inv.cpu() tensor([[0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0004, 0.0002, 0.0002], [0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0001, 0.0002, 0.0003, 0.0001, 0.0003, 0.0003, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0001], [0.0003, 0.0001, 0.0002, 0.0003, 0.0001, 0.0003, 0.0005, 0.0002, 0.0002, 0.0002, 0.0003, 0.0003, 0.0003, 0.0002, 0.0004, 0.0004, 0.0002, 0.0004, 0.0003, 0.0002, 0.0002, 0.0005, 0.0002, 0.0003, 0.0005, 0.0001, 0.0002, 0.0002, 0.0004, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0003, 0.0005, 0.0002, 0.0005, 0.0004, 0.0002, 0.0001, 0.0001, 0.0002, 0.0003, 0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0005, 0.0004, 0.0002, 0.0002], [0.0004, 0.0002, 0.0002, 0.0003, 0.0001, 0.0003, 0.0005, 0.0002, 0.0003, 0.0002, 0.0003, 0.0003, 0.0004, 0.0002, 0.0004, 0.0004, 0.0003, 0.0004, 0.0003, 0.0001, 0.0002, 0.0005, 0.0002, 0.0003, 0.0005, 0.0002, 0.0003, 0.0002, 0.0004, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0003, 0.0003, 0.0005, 0.0002, 0.0005, 0.0005, 0.0002, 0.0002, 0.0001, 0.0001, 0.0003, 0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0005, 0.0004, 0.0002, 0.0001], [0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0003, 0.0002, 0.0003, 0.0002, 0.0001, 0.0002, 0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0001, 0.0003, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0003, 0.0002, 0.0004, 0.0003, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0003, 0.0002, 0.0004, 0.0004, 0.0002, 0.0002], [0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001], [0.0003, 0.0001, 0.0002, 0.0003, 0.0002, 0.0002, 0.0004, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0001, 0.0003, 0.0004, 0.0002, 0.0003, 0.0003, 0.0002, 0.0002, 0.0004, 0.0002, 0.0002, 0.0004, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0003, 0.0004, 0.0002, 0.0004, 0.0004, 0.0001, 0.0002, 0.0002, 0.0001, 0.0003, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0004, 0.0003, 0.0002, 0.0002], [0.0003, 0.0001, 0.0002, 0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, [3/1806] 0.0002, 0.0003, 0.0002, 0.0002, 0.0001, 0.0004, 0.0003, 0.0002, 0.0003, 0.0003, 0.0002, 0.0002, 0.0004, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0004, 0.0002, 0.0004, 0.0004, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0001, 0.0003, 0.0002, 0.0005, 0.0004, 0.0002, 0.0002], [0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0003, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0003, 0.0002, 0.0002, 0.0002], [0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0003, 0.0005, 0.0002, 0.0002, 0.0002, 0.0003, 0.0003, 0.0003, 0.0002, 0.0004, 0.0004, 0.0002, 0.0004, 0.0003, 0.0002, 0.0002, 0.0004, 0.0002, 0.0003, 0.0005, 0.0002, 0.0002, 0.0002, 0.0004, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0003, 0.0003, 0.0005, 0.0002, 0.0005, 0.0004, 0.0002, 0.0002, 0.0002, 0.0001, 0.0003, 0.0003, 0.0002, 0.0002, 0.0003, 0.0002, 0.0005, 0.0004, 0.0002, 0.0002], [0.0001, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001], [0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0002, 0.0001, 0.0002, 0.0001, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0002, 0.0001, 0.0001, 0.0002, 0.0001, 0.0001, 0.0002]]) and of course i could have made mistakes copying that by hand from pdb

traffick boss decide to build a floating balloon island [... {pumping himself up as a huge balloon?

let's learn a language like rust or whatever that short language that won the http leaderboard was, pv? i think it was just 'v' --

traffick boss meanders around on his balloon island he's far from sources of heat capacity and it's somewhat cold maybe it is like one of those terrifying videogame ads where the mother is trying to protect her freezing cold child and the user probably has to click ads to stop the baby from freezing to death [:s ! -- traffick boss is up in the sky on his baloon isl--

On Mon, Mar 10, 2025 at 9:43 AM <karl3@writeme.com> wrote:
traffick boss meanders around on his balloon island
code for traffick boss to meander around traffick_boss.position : Pos3 traffick_boss.position.x += (random() - 0.5) * time_passed traffick_boss.position.y += (random() - 0.5) * time_passed traffick_boss.position.z = balloon_island.height_at(traffick_boss.position.xy())

code workshop 5 there is a problem in code workshop 5. for generations the workers of code workshop 5 were making fancier and fancier codebases, often building off the shoulders of others but then one zealous worker developed code that could arbitrarily influence the development of other code and a second disgruntled worker bent this code to prevent the further improvement of code :/ code workshop 5 wasn't the same after that

karl3@writeme.com wrote:
the workers of code workshop 5 _knew_ they were expert code artisans they were used to putting together operating systems, AIs, enterprise and decentralized architectures, compilers and decompilers, fabricators and scanners, on a daily basis, polishing and tuning every part without compare. often they just figured they had been doing this since time itself had begun (although in reality they could look at their git histories and see when the workshop had been founded)

<<one idea is something like, maybe could find a free high-rate-limit language model, and run it twice, one version tries to build software, the other version tries to stop the first -- [[then maybe we could plot their interactions on an XY chart somehow so it looks like conway's game of life or something

karl3@writeme.com wrote:
<<one idea is something like, maybe could find a free high-rate-limit language model, and run it twice, one version tries to build software, the other version tries to stop the first -- [[then maybe we could plot their interactions on an XY chart somehow so it looks like conway's game of life or something
ok no need for language model, although can reduce interruptions from similarity of code structure to other things but maybe 1 agent tries to make code, other agent tries stop first agent. very simple agents. ummmmmmmmmmmmmmm maybe just spamming about it :smilie with hand held out: !

let's make a decision tree with interruptible branch evaluation that can make very simple code !!!! let's give it 1 register and 2 operations: increment and double and see if it can find the optimal path to any integer above the starting register value :D

traffick boss is ready for his nose dive off his balloon island! the crowd on the ground is watching with TV cameras and cheers [traffick boss has 40 balloons tied to his waist]

karl3@writeme.com wrote:
traffick boss may or may not be wearing a blindfold so he doesn't see his approaching death as he dives proudly off his balloon island wearing a cape he swans out like a professional diver, nosediving toward the rock his balloons of safety from fears gently lift his diving form toward the sky

commit d59fc27c33795b338472eeacc33ec16c306bd6a8 (HEAD -> main, origin/main, origin/HEAD) Author: karl <karl3wm@writeme.com> Date: Mon Mar 10 10:35:06 2025 -0400 EEEEEEEK diff --git a/balloons.py b/balloons.py new file mode 100644 index 0000000..7d41d33 --- /dev/null +++ b/balloons.py @@ -0,0 +1,6 @@ +# a decision tree with interruptible branch evaluation +# that would be capable of optimizing a 2-operation program's result + +class Branch: + def __init__(self, options): + commit fdf19c0ad6502648a88bced7f484b26a841fc930 Author: karl3wm <karl3@writeme.com> Date: Mon Mar 10 10:32:35 2025 -0400 Initial commit .gitignore | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ LICENSE | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 2 ++ 3 files changed, 175 insertions(+)

some say we should generalize it with options and try to make an AI T_T but i am trying to not have terrors atm. straight AI makes terrors. so we

karl3@writeme.com wrote:
some say we should generalize it with options and try to make an AI T_T but i am trying to not have terrors atm. straight AI makes terrors. so we
with properties. general "properties" let it represent arbitrary information. options are normal. workign to be able to do generalizations that are normal in code.

terror-handling vehicle-vessicle pre-existing AI attacks terrors-idea [brief, avoide

triangle :) triangle.coord1 = x1,y1 triangle.coord2 = x2,y2 traingle.coord3 = x3,y3 triangle : shape

data summations data = [1,2,3,4] data2 = [7,1,9,3] data_sum = data + data2 assert data_sum == [9,3,12,7]

data averaging data_1 = [1,9,3,2] data_2 = [8,4,6,5] data_avg = (data_1 + data_2) / 2 data summing and averaging data_sum = data_1 + data_2 data_avg = data_sum / 2 data difference from average data_diff_1 = data_1 - data_avg data_diff_2 = data_2 - data_avg

how about a decision tree that is pleasantly empty! def EmptyDecisionTree: def __init__(self): pass def perform_work(self): return True def get_score(self): return "score: decision tree is completely empty"

karl3@writeme.com wrote:
traffick boss wanders around, pensating. could he be thinking of giant business plans? interviewer: "traffick boss, what are you thinking about?" traffick boss: "my mind is completely empty. i am thinking nothing. i actually have neuroscientists enforcing th--" interviewer: "surely you are planning your next world-changing move. what are you think

karl3@writeme.com wrote:
maybe a decision tree for finding the _worst_ option? maybe somehow? something like (surely will be full of bugs) ... class WorstOptionDecisionTree: def __init__(self, func_state_pair, *child_func_state_pairs): self.child_scores = [WorstOptionDecisionTree(func_state_pair) for func_state_pair in child_func_state_pairs] self.child_results = [] self.func, self.state = func_state_pair def work_done(self): return len(self.children) == 0 def worst_score(self): return self.child_results[-1] if len(self.child_results) else float('inf') def perform_work(self): sort(self.children, key=lambda child:child.worst_score()) self.children[-1].perform_work() if self.children[0].work_done(): no i flubbed it maybe try simpler

class EmptyDecisionTreeOfEmptyDecisionTrees: def __init__(self, min_number_children, max_number_children): nch = int(random.random() * (max_number_children - min_number_children)) self.children = [EmptyDecisionTree(min(min_number_children//2,0), min(max_number_children//2,0)) for x in range( # hey i noticed (again) a lot of inhibition is associated with implementing utility code # i'm thinking on how the urgent behaviors that make smidges of result-like things are really intense and urgent, and tend to be really comfortable with leaving contexts # but in computer code we do accumulate utility libraries [.... maybe really useful to clarify and reinforce that utility libraries are how to do things professionally in computer code. even a baby utility library is helpful

karl3@writeme.com wrote:
here rand()*(max-min)+min is encapsulated in random.randint() in python. however, i have changed and i don't remember that readily [anym -- class EmptyDecisionTreeOfEmptyDecisionTrees: def __init__(self, min_children, max_children): nch = random.randint(min_children, max_children) self.children = [EmptyDecisionTree(min_children//2,max_children//2) for chidx in range(nch)] def perform_work(self): print("all of my subparts are empty i will skip thinking about them right now") def get_score(self): print("i am an empty decision tree i can't have a score")

class EmptyDecisionTreeOfEmptyDecisionTrees: def __init__(self, min_children, max_children, data): assert data == "nothing" nch = random.randint(min_children, max_children) self.children = [EmptyDecisionTree(min_children//2,max_children//2) for chidx in range(nch)] self.data = data def verify_empty(self): assert self.data == "nothing" for child in self.children: assert child.verify_empty() == "i contain nothing" return "i contain nothing" def perform_work(self): assert self.verify_empty() == "i contain nothing" print("all of my subparts are empty i will skip thinking about them right now") def get_score(self): assert self.verify_empty() == "i contain nothing" print("i am an empty decision tree i can't have a score")

there is a leaderboard/benchmark of autonomous coding agents at https://www.swebench.com/ at a first glance the highest-ranking one that is clearly open source appears to be https://github.com/SWE-agent/SWE-agent

ideas for floating island: - traffick boss could have one part, maybe he will put a sky hotel there - karl could have another part, with mountains and trees both things are heavy. hotels are heavy, trees and mountains are heavy. sky island engineering can work for both parties!

traffick boss sits by a window, smoking a bubble pipe traffick boss [thinking]: "where are my zombie goons? my hive of martian cybertronics?" a parade goes by with large inflated displays traffick boss [gleefully satisfied]: "ah-ha!"

wondering if we could launch into space using balloons is there some vague way this could be done? [.... what if there were a _lot_ of balloons? would it help? thinking ... the more balloons there are, it's like having a more massive object (the displaced air) pushing the balloons upward! sadly, objects that are more massive do not fall faster, so with very simple intuition it's possible that more balloons wouldn't help ...

karl3@writeme.com wrote:
how about this: we have a huge hydrogen balloon. _huge_. it rockets up until air approaches the density of hydrogen (needs some way to off-gas or expand). then we burn the excess hydrogen to go the rest of the way! i guess we'd burn the offgassing too but then there's no point to the balloon :s :s we could just burn hydrog--

karl3@writeme.com wrote:
the language model basically said there is way more energy needed to reach orbit from near-vacuum than to reach near-vacuum from the ground, although i could misremembering or mis-saying it

karl3@writeme.com wrote:
this really seems like it would be workable though because in thin air there'd be very little air friction and if your height is stable from being low density, and the air is thin, then with a baseline of energy output you could continuously accelerate, no? maybe i'll try asking one again

[should be adjusted for tb-imprisoned] traffick boss lets throngs of zombie government workers across the countryside to perform his poorly-thought-out tasks traffick boss: "yes, my minions! yes !!"

[should be adjusted for tb-imprisoned] traffick boss lets throngs of zombie government workers across the countryside to perform his poorly-thought-out tasks traffick boss: "yes, my minions! yes !!"

[should be adjusted for tb-imprisoned] traffick boss lets throngs of zombie government workers across the countryside to perform his poorly-thought-out tasks traffick boss: "yes, my minions! yes !!"

[should be adjusted for tb-imprisoned] traffick boss lets throngs of zombie government workers across the countryside to perform his poorly-thought-out tasks traffick boss: "yes, my minions! yes !!"

[should be adjusted for tb-imprisoned] traffick boss lets throngs of zombie government workers across the countryside to perform his poorly-thought-out tasks traffick boss: "yes, my minions! yes !!"

[should be adjusted for tb-imprisoned] traffick boss lets throngs of zombie government workers across the countryside to perform his poorly-thought-out tasks traffick boss: "yes, my minions! yes !!" -- trying to send above from website i am getting this: Proxy Error The proxy server received an invalid response from an upstream server. The proxy server could not handle the request Reason: Error reading from remote server Apache/2.4.58 (Ubuntu) Server at lists.cpunks.org Port 443

oh wow they all sent :S T_T OOPS :}

[should be adjusted for tb-imprisoned] traffick boss lets throngs of zombie government workers across the countryside to perform his poorly-thought-out tasks traffick boss: "yes, my minions! yes !!" -- trying to send above from website i am getting this: Proxy Error The proxy server received an invalid response from an upstream server. The proxy server could not handle the request Reason: Error reading from remote server Apache/2.4.58 (Ubuntu) Server at lists.cpunks.org Port 443

karl3@writeme.com wrote:
traffick boss's zombie government workers start getting uppity about their bodies decaying and being forced to eat brains zombie government worker: "traffick boss, we want health care?" traffick boss: "what????? you're _zombies_ for crying out loud." zombie government worker: "we didn't consent to zomb--" traffick boss starts getting furiously red in the face zombie government worker #2: "what we mean is, it is hard to always meet the bottom line as a shambling decaying corpse. there is chronic pain, often loss of unlife, ..." traffick boss: "i'll find that nurse to hand out bandaids for lost dangling limbs ..."

traffick boss is sitting for dinner with his family their meal? traffick boss's own brains! traffick boss looks down at the plate, and this time he hesitates traffick boss: "i'm not so sure i want to eat my own brains!" traffick boss's family member [turning to traffick boss, responding, deeply dissociated, cheery, munching on plate of their own brains]: "but you said your computers would replace them!" traffick boss looks at family member eating their own brains for a meal traffick boss looks back at his plate of brains traffick boss: "i ..." traffick boss: "i don't think we should eat our own brains." traffick boss's family member [stopping eating abruptly]: "well if we don't have to!" but people are confused. they have been eating their own brains for the corporation for years and years

traffick boss is out on a landscape zombies are overrunning everywhere, willy-nilly, in every direction, rapidly attending to his bidding zombie 391 [running by traffick boss, plowing over everything in its path]: "must eat brains for traffick boss!" zombie 1291 [running by traffick boss, plowing over everything in its path]: "must destroy world for traffick boss!" zombie 822 [running by traffick boss, plowing over everything in its path]: "must make everyone a zombie for traffick boss!" traffick boss [plowed over by new zombies left and right[: "what is this???" traffick boss [overwhelmed by a horde of zombies trampling him underfoot and flinging him up into the air]: "why are there zombies everywhere?? i do not want to be the zombie apocalypse!!" traffick boss: "why am i the zombie apocalypse?" traffick boss: "at what interview did i say this was my dream?" [flashback to interview with traffick boss where he discusses business plan of spreading a zombie apocalypse across the world -- traffick boss quickly halts the flashback

i want to try! omigod this sounds really hard. options: - is there a way to halt interpretation during a function? - alternatively, we could use ctypes to modify whatever python uses as an instruction pointer hmmmmmmmmmmmmmmmmm 1304 so, yes, there is a way to halt interpretation during a function, it's called 'yield'. there's also access to the call stack but i think the access is read-only. the problem with 'yield' is: - (a) i think it turns the function into a generator upon use - (b) if it's bundled into a goto() function it will interrupt the goto() body rather than the surrounding code here's a third option: - mutate the source code live using runtime preprocessing like old javascript second language interpreters did options again: - find an in-python way to halt function executation midway - use ctypes to modify the runtime at runtime - post-process the running sourcecode, say in a nonreturning function with injects controlflow to hide its nonreturn but i'm guessing what i originally meant was more along the lines of: - instrument the calling function to behave as if there were a goto statement where your function is called ok so the idea is maybe along the lines of, let's make a goto() function in python that emulates goto in C. the approaches of interest (despite there being many other interesting ones!) are either: (a) validate that callers are decorated with a recompiler or (b) identify the caller and mutate them mid-call to change their behavior although (b) is preferred because it doesn't require a decorator, it might be unreasonable hard i'm not sure. for example it's likely not possible to mutate code mid-call (although it could be); it likely only affects the next call. let's see! this sounds hard :s 1308
2 2 LOAD_CONST 1 (1) 4 STORE_FAST 0 (b) 3 6 LOAD_FAST 0 (b) 8 LOAD_CONST 1 (1) 10 BINARY_OP 13 (+=) 14 STORE_FAST 0 (b) 4 16 LOAD_FAST 0 (b) 18 RETURN_VALUE let's see what happens if i remove line 3 from the function and try to inject it using a caller-modifier or something? :s :s :s this won't work
list(a.__code__.co_code) [151, 0, 100, 1, 125, 0, 124, 0, 100, 1, 122, 13, 0, 0, 125, 0, 124, 0, 83, 0]
looks like maybe 151=RESUME_1 100=LOAD_CONST_1 125=STORE_FAST_1 124=LOAD_FAST_1 122=BINARY_OP_3 83=RETURN_VALUE_1 and it uses an indexable stack or something 1313 1317 here's a cool thing you can do. this function disassembles itself. it shows a call to the function to get the stack frame and pass it to the disassembler:

karl3@writeme.com wrote:
here's a cool thing you can do. this function disassembles itself. it shows a call to the function to get the stack frame and pass it to the disassembler:
ok ummmm so what am i trying to do what happens if i mutate the code object on the stack frame? is that possible? likely not. how do i figure out if i can? i'm assuming the segfault was from indexing a nonexistent local variable name rather than changing something in-place
the frame doesn't seem to be writeable. further options: - force writeability of these attributes by engaging python internals - nonreturning what about exceptions? could i add an exception handler in the caller's stack and catch it ...? (unlikely but i could maybe place a global exception handler) if i interrupt their execution how do i know what their variables were at the time? what would happen if i forked() with memory changes? i could do these by trial :s uhhhh so for example i could fork and suspend, and then inspect the frozen child. of course i might as well just inspect my own stack!

karl3@writeme.com wrote:
it sounds like one preference is to see if it works to create a function that accesses the bytes of its caller's code and uses ctypes to modify them taking a pause cause it feels funny, might do a different thing now

karl3@writeme.com wrote:
they use sys.settrace() which lets one install an event handler for major interpreter actions like line, call, return meanwhile, the frame object does have access to the local variables of callers, so one could have a function that turns callers into coroutines by collecting little chunks of code and evaluating them with injected locals. whenever a goto()-like function is called, execution would return to this alternative-vm that would break functions apart and move between frames by injecting locals into bytecode. it would only return if its original frame were goto'd back into. a little wonky but interesting! the frame.f_locals[] object is writeable, so one could theoretically update the locals of callers properly if they are changed in a side-vm

karl3@writeme.com wrote:
ok given claude also suggest a preprocessing approach, i realized one can run global constructor code in python by putting at file scope of a module! so basically you'd have your goto() module instrument your codebase when it is imported. you could for example replace all calls to its goto function with jump instructions by seating new code objects using .__code__ = .__code__.replace(co_code=bytes(...)) . it's a little edgy. you'd have to instrument further imports of code somehow. you could raise exceptions for conditions like using the goto object for anything other than a function call. you could simplify it a little by using something other than a global object, like maybe instead a literal expression like `'__goto' 'label'` or anything, then you don't have to worry about it being otherwise captured or unexpectedly used then the big challenges would be (a) finding all imported code (likely there's a module function to enumerate this); (b) instrumenting compilation of code constructed after you and (c) figuring out what to do about the vm stack after the jump complets {-S

traffick boss is in front of a small zombie horde zombie horde [quickly milling about]: "be a zombie for a traffick boss! be a zombie for traffick boss!" [small mistake] traffick boss [irritated, trying to think, raises palm at zombies]: "stop!!" zombie horde quietes and looks at traffick boss, who is trying to get them to stay put so he can think about what to do about causing a zombie apocalypse one zombie: "be a zombie for traffick boss!" rest of zombies [quiet, restlessly}; "brains! braaaaaains! brains brains brains!"

traffick boss goes to therapist re: zombie horde therapist: "traffick boss! it is an honor to be your therapist. will you autograph my slavery contract with the government you instantiated a dictatorship in?" traffick boss is flattered and switches

karl3@writeme.com wrote:
traffick boss is signing autographs for fans when a zombified mayor runs by going "must eat brains for traffick boss! must zombify the world for traffick boss!" traffick boss shakes his head fervently as his skin begins turning green traffick boss: "i'm sorry, i need you in therapy capacity here." traffick boss: "you're not a zombie, are you?" therapist looks at traffick boss. therapist [turning hands upward]: "... brai --... ?" traffick boss [interrupting]: "i need you as a therapist" traffick boss stares hard at therapist therapist: "so, what did you want to talk about, traffick boss?" traffick boss: "let me level with you, therapist." traffick boss shakes his head vigorously therapist looks at traffick boss patiently traffick boss: "i'm not traffick boss. i'm just a random employee he mind controlled to be him after he blew himself up nineteen thousand times" traffick boss blushes quickly and very heavily the zombies outside suddenly and simultaneously rush at the building walls, cheering for traffick boss

the latest xkcd on my internet is about a programming language that attempts to eliminate off-by-one errors via "every time an integer is stored or read, its value is adjusted up or down by a random amount between 40 and 50". The title text clarifies that this generates off-by-40-or-50 errors instead. HOW WOULD WE MAKE THIS LANGUAGE? it's soooo zombie-like! every program we tried to write in it would fail until we learned to accommodate everything we calculated being massively wrong! well - instrument an existing runtime - patch an existing language - write a new one with the new store/retrieve semantics tried to send got: "Can't connect to Mailman's REST server, your message has not been sent." 1950 ET got this error a second time 1950 ET. pasting into gmail.

I'm looking a little into engaging cpython with a goal of implementing something like this. It's maybe not the best choice -- the interpreter is only used for one language, the language has other interpreters written for it, and i haven't yet found a single unified place to engage integer stores and loads -- but it's a language that I've been engaging recently, and recently spammed around engaging the bytecode of, which seems quite rare for me. it's 0613 ET. i'm looking for mentions of 'random' in the cpython source to figure out how to generate a random number :s random.py -> imports _random and from os imports urandom os.py -> imports * from posix or nt depending on platform Modules/_randommodule.c -> contains this line: #include "pycore_pylifecycle.h" // _PyOS_URandomNonblock() Here are some interesting floating point constants: static PyObject * _random_Random_random_impl(RandomObject *self) /*[clinic end generated code: output=117ff99ee53d755c input=26492e52d26e8b7b]*/ { uint32_t a=genrand_uint32(self)>>5, b=genrand_uint32(self)>>6; return PyFloat_FromDouble((a*67108864.0+b)*(1.0/9007199254740992.0)); } how much is one 9.007 quadrillionth? something to do with doubles or floats, 67.1 million, and 27 and 26 bit integers! i guess the 67.1 million would be to generate a higher bit integer, and the 9.007 quadrillion would be to scale it within 0 and 1. funny at first to see large integer constants in a floating point division context but makes sense. blurp arright ummm genrand_uint32 is a manual inline implementation and operates on a RandomObject :/ comments say that it's MT19937 hiroshima-u.ac.jp . 9.007 quadrillion is pow(2, 53). the python comments say "likely vain hope" regarding performing multiply-by-reciprocal rather than divide. the authors of the comments were maybe unaware that this optimization could double your frame rate in the 80s and 90s, and spreading of newer such optimizations dropped after hardware advanced. 67.1 million is pow(2,26). current options: - initializing and using random state using this compiled mt19937 module - using code from nt or posix module to compute random - including my own random header or such - placing a manual implementation of a generation algorithm i'm visiting Modules/posixmodule.c it's notable that these functions have comments along the lines of "clinic end generated code" ... but i'm guessing it's the signatures that are generated, not the bodies os_urandom_impl in posixmodule.c hands off to _PyOS_URandom it looks like posixmodule.c defines both the "posix" and the "nt" modules conditioned on platform looks like both _PyOS_URandom _PyOS_URandomNonblock are pulled in from pycore_pylifecycle.h the definitions though are in Python/bootstrap_hash.c . it defines a few different random number generators, strange to see this after the inline generator from the japanese university code. usually these two things would be unified together. notably these random number generators i'm not seeing them in the header file yet win32_urandom -> calls BCryptGenRandom, a windows call py_getrandom -> calls getrandom(), a linux kernel syscall py_getentropy -> calls getentropy() dev_urandom -> reads /dev/urandom lcg_urandom -> manual linear congruential generator pyurandom -> hands off to the first 4 above in order if available, does not use lcg_urandom _PyOS_URandom* -> hand off to pyurandom so to generate a number between 40 and 50 i suppose i'd call a _PyOS_URandom function and read 1 byte. i could keep a bit cache if i were fancy, but would likely make more sense to spend time on ensuring integer stores and loads are properly effected.

I'm looking a little into engaging cpython with a goal of implementing something like this.
It's maybe not the best choice
so to generate a number between 40 and 50 i suppose i'd call a _PyOS_URandom function and read 1 byte. i could keep a bit cache if i were fancy, but would likely make more sense to spend time on ensuring integer stores and loads are properly effected.
ok now we have the irritating concern that 40-50 is a range that is not an integer ration of any convenient number of bits. to do 40-50 inclusive that's a size of 11. so i guess i'd discard bytes that are outside some range ummm 256%11 == 3 so uhh so i guess i'd discard 253, 254, and 255. (253%11 == 0 which aliases 0%11 == 0). drafting function: #include <pycore_pylifecycle.h> int adjust(type * val) { unsigned uint8_t adj; int status; do { status = _PyOS_URandom(&adj, 1); if (status) { return status; } } while (adj >= 253); val ooops i need an extra bit of information to decide the sign! ok ummmmm that's 12 bits? no ... i have 11 values, and a sign, so that's 22 total values. i think? +40, -40, +50, -50; 11 on each side. there's no zero so there's no signless or shared value counted on both sides of the sign. 22 total values. i think! i can always fix it if i'm wrong and actually reach an implementation. 256%22 == 14; 242%22 == 0 so discard values >= 242 copypaste, fix constants, continue: #include <pycore_pylifecycle.h> int adjust(type * val) { unsigned uint8_t adj; int status; do { status = _PyOS_URandom(&adj, 1); if (status) { return status; } } while (adj >= 242); adj ok ummm now i have negative values to contend with ... maybe it would be more conven-- ... but maybe it's clearer for me for now to keep this value unsigned #include <pycore_pylifecycle.h> int adjust(type * val) { unsigned uint8_t rnd; int status, adj; do { status = _PyOS_URandom(&rnd, 1); if (status) { return status; } } while (rnd >= 242); adj = int(rnd % 22) - 11 hrm [--

karl3@writeme.com wrote:
xkcd off-by-40-or-50 errors
cpython
draft
#include <pycore_pylifecycle.h> int adjust(type * val) { unsigned uint8_t rnd; int status, adj; do { status = _PyOS_URandom(&rnd, 1); if (status) { return status; } } while (rnd >= 242); rnd %= 22; adj = (rnd & 1) ? -(int)(rnd>>1) - 40 : (rnd>>1) + 40; *val += adj; } there's my draft! 0706! maybe put something like that in a header file and see if can use it in files like Python/bytecodes.c

traffick boss is outdoors again he's got something in his mouth like a bit and he's biting down on it hard, expressing strong intensity

a chunk of traffick boss sits at a table because traffick boss is there, and the parties are all clearly injured in some manner (indicating successful coercion), a meeting may be possible

there's some concern around modifying cpython to have wrong severely wrong numbers everywhere per a poorly-trusted xkcd comic another idea is doing a code artwork around suffering or hopes or story, like a human expression somehow :s

code artwork with meaning! one idea is a spiral below a wavy line. both maybe based on sinusoidal functions. maybe with some perturbation to one of them. ... not very sure maybe hard :s

maybe a very simple artwork! like how about two terminal characters presented in CLI -- :D it could clear the screen to present the artowkr, and then show two terminal characters somewhere on maybe an 80x50 or 80x25 canv--

traffick boss emerges from a swampy junk pile somebody threw enough trash into a swamp until there were the reagants needed for traffick boss golem to emerge

traffick boss the extraterrestrial [partial, corrupt] [formula: a character named "torture victim double agent" emerges from an extraterrestrial abduction in extreme trauma. they repeatedly attempt to communicate about this due to traumatic need, but in the context of nobody generally believing in extraterrestrial abductions for real. additionally, whenever they attempt to communicate this, a powerful hyperdimensional extraterrestrial named "traffick boss" emerges and relates with both torture victim double agent and whatever he communciated to, with urgent tension _as if_ he were trying to cover up a severe crime that he was just lying about being an extraterrestrial abduction, but with the actual powers and events of a real extraterrestrial hyperdimensional being.] [intent: to aid in processing traumatically dissociative frustration around advanced technology being used for coercion by scared criminals, with vague analogies to help subconsciousnesses of readers possibly process what is real or not in such situations] [example humorous quote: "torture victim double agent: 'traffick boss, nobody believes in extraterrestrial abductions. i just need to talk about this!' traffick boss [giant hyperdimensional extraterrestrial]: 'torture victim double agent, if you told anybody my spaceships abducted you and anally probed you and put a device in your head, i would be arrested.' torture victim double agent: 'but you're a hyperdimensional space being! nobody can arrest a hyperdimensional space being!']

working for traffick boss the easy project that nobody can start a valued worker left instructions on continuing their project before their were murdered or fired by traffick boss sometimes he feels like having the project continued, so up and coming hirees are recruited to do so. the project is easy, clear instructions exist however, traffick boss wants to make sure he has the best workers, so he monitors them for effectiveness whenever the project is started, the human resources AI and traffick boss either fire or murder the worker while they are comprehending the instructions that were left

karl3@writeme.com wrote:
traffick boss: "what the fuck is taking you so long?" worker: "i .. uh ... the instructions ..." worker reaches for a page of notes containing numbered sections that they are in-midst of writing traffick boss: "we don't hire fucking slackers here!" traffick boss hits a giant red "YOU'RE FIRED!" button and a new hire is recruited

there's a lot of interest in making the space balloon (or floating island) project but i feel a little unsure of it for some reason ... i think i'm worried that the challenge and danger of going into upper altitudes make an issue with my dissociative-identity-palsy where my body will suddenly spasm and try to make horrible decisions for periods of time. this could both make dangerous issues at upper altitudes, as well as make it hard to keep myself physically near the infrastructure needed for a large balloon project long enough to make strides on it. like, i might make a partial balloon near one living location, and then suddenly move away. meanwhile, it's not very impressive to have a super tiny balloon project. i can't go up in it, or send anybody up in it, and or take it upward. [now, i might be interested in continuing more strongly if i could find a way to take the project with me when i travel. if it's a structure up in the air, this might be easier, as it's up in the sky (tethered to a cloud) rather than on my person. but it could take a while before cloud-tethers get involved, so maybe a way to kind of roll it up? how much material really is this? could i compress a rideable hotair balloon to fit in my pocket or a small pack? {seems potentially hard

karl3@writeme.com wrote:
one idea is a small zeppelin or blimp drone that could be remotely contacted and would hold supplies up in the air (for moving into the sky). unsure how this relates with airspace laws in this country, but [it could be exciting

karl3@writeme.com wrote:
a different project [from science fiction media] is the idea of a golem or robot with levitating parts that don't touch. for this other project, it's much clearer that you've accomplished it even if it's tiny

considering a little bit the idea of a zeppelin-or-blimp-drone-for-high-altitude-projects [... basically we'd need something that can compress into a pocket, and also self-navigate :s i'm not sure of all the constraints but it sounds like there are more options this means making navigation work! it would need a power supply as well as thrust. we could assume that it has the option of some kind of powered home. for example, it could optionally have a tether with a wire that plugs into an electrical outlet and charges it. i dunno if that would give it enough power to travel a long distance though. it'd be nice if it could travel a thousand miles. but i suppose it's fine if it does it slowly. it kind of seems like it would have to be solar-powered and go slowly! and it would be messy cause it's like preprototype! although that could possibly change. i'm avoiding making it into a robot to make it seem easier to reach so basically a solar panel might hang from a balloon and ... hrm ... ok 4 challenges: - brains/remote control - horizontal propulsion and direction - vertical ascent/descent (possibly optional? maybe i could catch it with a kite or something?) - power if we skip vertical assent and give it a low altitude (??? is this reasonable? i guess the altitude would be defined by air density?) then we might have say an arduino on a balloon with 4 directional fans affixed to it and a solar panel hanging from the bottom. and like a sealed lead acid battery and a couple buck boost regulators. and a simple 8-line motor control board to turn the fans on and off.

one idea is a small zeppelin or blimp drone that could be remotely contacted and would hold supplies up in the air
something i left out is communication. this is an important thing missing from a bare arduino. there could be a long antenna that drags to connect to public wifi. i'm inhibited around making autonomous wifi-associating software, but there may be commercial solutions that solve that. another option is a prepaid sim. this seems most normal. likely a prepaid data plan would last an incredibly long time for a slow balloon that only had gps data and power metrics to communicate. additionally, since it has simple 3-state motors already, one could add a spool of long thread with a plumb attached. until it breaks, it could possibly deploy the spool to be retrieved. this could possibly also be used to change the height of a draped solar panel or antenna. if one only had 8 channels of power control, then one could compromise with 3 directional motors rather than 2. so, electrical parts: - arduino or other SOC - sim card add-on to SOC if doesn't come with - gps add-on to SOC if doesn't come with - prepaid data sim - configure arduino to listen on the sim via e.g. SSH while powered - test that one can connect to SOC via sim - motor control hardware for SOC with at least 4-5 three-state channels (maybe plan for 8-10 to add options implementing 3-state control unless it comes with this) - sealed lead acid battery (could use lithium ion for lightweightness if needed) - 2 buck-boost regulators, one to float the battery, another to power the SOC unless it takes the battery voltage - 4-5 motors; 1 sturdy and slow to raise/lower something below the object, the rest speedy and powerful to push it through the air - spool and turbines for the motors to drive - solar panel - fine and rugged polyester twine to hang panel and tether from - wiring - liftable balloon [also need structure, a way to attach everything to the balloon; one could lash them with polyester twine, possibly, or make a frame and attach them and the balloon to the frame if you make a frame you get to call it a 'zeppelin' instead of a 'blimp' i think [...

the first step for launching your space-faring floating island community is to move into the sky with a little autonomous blimp drone. sadly, if you have a funny life experience where you teleport around the country all the time, you'll need a way to collect supplies for airfaring life that you don't leave behind. so, sending robots into [air]space first lets them accumulate supplies for you there until you move there yourself.
most people already have an SOC (system-on-a-chip) of some sort: an arduino, a cell phone. something. additionally, a prototype could function off wifi without a SIM at first. let's break that list into things i could get at a store, things i'd have to order, and things i already have. Already have: - SOC Could do now: - configure an SOC for remote access Do not have: - active prepaid sim - wiring - turbines & spool - balloon & lifting gas - solar power Might have, not sure: - motor hardware - maybe 1 buck boost regulator, unsure - rugged twine let me check what i have for motor control hardware 2025-03-15 0522 ET here's what i found: 2 small dc motors 2 servos 1 motor control board for 1 motor 2 5v relays 2 motor encoders the motor control board is part of a fan kit so there are options there's also a 3d printer here although i'm a little limited on my use of it the 2 servos i think connect to a tiny 2-axis gimbal so basically the thing i'm most missing is the balloon with lifting gas. after that a battery with voltage regulation. assuming i can use something random as twine for now.

karl3@writeme.com wrote:
most people already have an SOC (system-on-a-chip) of some sort: an arduino, a cell phone. something.
now i'm wondering, could i do this today? there are stores near me that sell party balloons. i could attach the fan to the gimbal to make for weak directional propulsion. i'm missing mobile power for the motors. i could buy a small battery at an auto parts store. or maybe more easily, i could find a power backup system, like a mobile power pack. i could plug a cell phone into the mobile power pack ... but cell phones aren't good at controlling motors without a separate controller device that speaks usb, bluetooth, or wifi. i think i might have ummmm one of those linux phones. it might have gpio pins i could use. i'm not sure that i have a soldering iron, but i could buy one if needed. basically i need a way to make the thing i can ssh into, control the motors, somehow. i found an arduino uno associated with the motors. it takes USB-B or something for power and i think there's a cable, not sure. thinking for a final product you'd want 2-3 ways to connect to it remotely (and get gps) in case it is high in the sky and one of them breaks. so, things i could buy today to make a barebones prototype today: - power pack (ideally a solar one) to power arduino and motors - power adapter for motors? - party balloons - twine, construction materials - hey if i'm shopping i could get a prepaid sim card might have left something out. if i can make a barebones prototype, then maybe i could order supplies for a real thing. if i move before they arrive, i could order them again. the biggest concern is powering the motors. i guess this would either be USB-C or 12V DC. if a power pack has a car DC adapter then i could get some DC device and cut the wires and wire them in. maybe i should get a soldering iron too just in case. then, i'd have to program the arduino uno. arduinos didn't used to run operating systems, somebody might have changed that, dunno, but it might be hard to set up SSH with it. i don't think it has a SIM card either. but i guess it's just a prototype. i guess a raspberry pi would be easier than an arduino. it's got SSH. there'd be less code to write. i'm interested in engaging the arduino but it could derail the project. i wonder if i can buy a raspberry pi nearby. there's also a nuc 10 here that is similar to a raspberry pi. OH i can use a cell phone! i could make the arduino into a motor controller and connect a cell phone to it ... hrm >( i feel somewhat confused around what to pursue here

we're goin' all crazy over here! are drones ok????????

so, sending robots into [air]space first lets them accumulate supplies for you there until you move there yourself.
thinking for a final product you'd want 2-3 ways to connect to it remotely (and get gps) in case it is high in the sky and one of them breaks.
i got the arduino connected to a cell phone with a usb-otg adapter! i'm using one that came with the pinephone. i figure better not to use the pinephone directly unnecessarily, expensive to replace. but random android phones can be cheap. in past usb-otg adapters haven't worked for me, but this one looks like it's working so far at this time. the phone is charging and the arduino is powered. anotherterm looks cool but it wasn't immediately clear how to run an ssh server, so i figured i'd try to get termux set up as an ssh daemon then if i can shell into it from this system maybe i can work on wiring up motors

karl3@writeme.com wrote: > > so, sending robots into [air]space first lets them accumulate supplies for you there until you move there yourself. > > > thinking for a final product you'd want 2-3 ways to connect to it remotely (and get gps) in case it is high in the sky and one of them breaks. > > > so, things i could buy today to make a barebones prototype today: > > - power pack (ideally a solar one) to power arduino and motors > > - power adapter for motors? > > - party balloons > > - twine, construction materials i'm spending time working on setting up an SOC. my current chosen approach is my cellphone wired to an arduino with termux running tmate on boot. this approach roughly means patching avrdude to accept a filedescriptor on the command line so as to connect to the arduino via android. i'm working on that now. tmate lets other people watch you; the login for that would be karl3wm/connect@nyc1.tmate.io or something like that the example code for patches to access usb devices on termux is at https://wiki.termux.com/wiki/Termux-usb#Details

> > > so, sending robots into [air]space first lets them accumulate supplies for you there until you move there yourself. > > > > thinking for a final product you'd want 2-3 ways to connect to it remotely (and get gps) in case it is high in the sky and one of them breaks. > > > > so, things i could buy today to make a barebones prototype today: > > > - power pack (ideally a solar one) to power arduino and motors > > > - power adapter for motors? > > > - party balloons > > > - twine, construction materials > > i'm spending time working on setting up an SOC. my current chosen approach is my cellphone wired to an arduino with termux running tmate on boot. > > this approach roughly means patching avrdude to accept a filedescriptor on the command line so as to connect to the arduino via android. i'm working on that now. > > tmate lets other people watch you; the login for that would be karl3wm/connect@nyc1.tmate.io or something like that > > the example code for patches to access usb devices on termux is at https://wiki.termux.com/wiki/Termux-usb#Details well the avrdude code is based on libusb 0.1 whereas termux has 1.0 and it's pretty slow to code over tmate.io on a phone; i think it makes more sense to program the arduino elsewhere and use a serial interface to preprogrammed code on the phone for now. There's an example in c and python for serially interfacing with arduinos via libusb at https://github.com/tytouf/libusb-cdc-example . so that's the essentials :s :s :s i think it makes sense to acquire a power supply next to make the motors run, but i'll slow down now we'll see how it goes. a day trip today for this might involve: - visit cricket and put a data plan on this phone, or get a phone anywhere - get a power pack (ideally solar) to run everything - get bare wiring for the power pack sufficient to power a motor - get general hobby wiring and wire cutters and optionally a soldering tool - get party balloons - get some prototype construction materials, umm i guess: twine, duct tape, hot glue, some rods - get hobby wiring and optional soldering tool now, i have a toy fan and a servo gimbal. this might not be sufficient to move something around in the air :s continued work seems presently conditioned a functioning result :s :s

karl3@writeme.com wrote: > > > > so, sending robots into [air]space first lets them accumulate supplies for you there until you move there yourself. > > > > > thinking for a final product you'd want 2-3 ways to connect to it remotely (and get gps) in case it is high in the sky and one of them breaks. > > > > > so, things i could buy today to make a barebones prototype today: > > > > - power pack (ideally a solar one) to power arduino and motors > > > > - power adapter for motors? > > > > - party balloons > > > > - twine, construction materials > > > > i'm spending time working on setting up an SOC. my current chosen approach is my cellphone wired to an arduino with termux running tmate on boot. > > > > this approach roughly means patching avrdude to accept a filedescriptor on the command line so as to connect to the arduino via android. i'm working on that now. > > > > tmate lets other people watch you; the login for that would be karl3wm/connect@nyc1.tmate.io or something like that > > > > the example code for patches to access usb devices on termux is at https://wiki.termux.com/wiki/Termux-usb#Details > > well the avrdude code is based on libusb 0.1 whereas termux has 1.0 and it's pretty slow to code over tmate.io on a phone; i think it makes more sense to program the arduino elsewhere and use a serial interface to preprogrammed code on the phone for now. > > There's an example in c and python for serially interfacing with arduinos via libusb at https://github.com/tytouf/libusb-cdc-example . > > so that's the essentials :s :s :s > > i think it makes sense to acquire a power supply next to make the motors run, but i'll slow down now we'll see how it goes. > > a day trip today for this might involve: > - visit cricket and put a data plan on this phone, or get a phone anywhere > - get a power pack (ideally solar) to run everything > - get bare wiring for the power pack sufficient to power a motor > - get general hobby wiring and wire cutters and optionally a soldering tool > - get party balloons > - get some prototype construction materials, umm i guess: twine, duct tape, hot glue, some rods > - get hobby wiring and optional soldering tool > > now, i have a toy fan and a servo gimbal. this might not be sufficient to move something around in the air :s continued work seems presently conditioned a functioning result :s :s i've got my phone controlling a servo from the gimbal via ssh ! I think this is the sketch I put on the arduino: https://projecthub.arduino.cc/Kub_Luk/using-serial-monitor-to-control-servo-motor-c55083#section5 Of course arduino sketches are silly and I would prefer a makefile but there is less normativity and clear instructions to navigate confusion. I put the red wire into 5VDC, the dark wire into GND, and the yellow wire into pin 9. This is the first time I've ever controlled a motor with a phone as far as I know! My changed cdc_example.c is viewable at https://bpa.st/654Q . The diff is at https://bpa.st/WRAA and pasted below: diff --git a/cdc_example.c b/cdc_example.c index fd21e23..e6a35e8 100644 --- a/cdc_example.c +++ b/cdc_example.c @@ -11,12 +11,6 @@ #include <libusb-1.0/libusb.h> -/* You may want to change the VENDOR_ID and PRODUCT_ID - * depending on your device. - */ -#define VENDOR_ID 0x2341 // Arduino LLC -#define PRODUCT_ID 0x0034 // Arduino Leonardo - #define ACM_CTRL_DTR 0x01 #define ACM_CTRL_RTS 0x02 @@ -28,18 +22,21 @@ static struct libusb_device_handle *devh = NULL; * the values corresponding to your device. */ static int ep_in_addr = 0x83; -static int ep_out_addr = 0x02; +static int ep_out_addr = 0x04; // UNO -void write_char(unsigned char c) +int write_char(unsigned char c) { /* To send a char to the device simply initiate a bulk_transfer to the * Endpoint with address ep_out_addr. */ int actual_length; - if (libusb_bulk_transfer(devh, ep_out_addr, &c, 1, - &actual_length, 0) < 0) { - fprintf(stderr, "Error while sending char\n"); + int rc; + if ((rc = libusb_bulk_transfer(devh, ep_out_addr, &c, 1, + &actual_length, 0)) < 0) { + fprintf(stderr, "Error while sending char: %s\n", libusb_error_name(rc)); + return -1; } + return 0; } int read_chars(unsigned char * data, int size) @@ -51,10 +48,10 @@ int read_chars(unsigned char * data, int size) int rc = libusb_bulk_transfer(devh, ep_in_addr, data, size, &actual_length, 1000); if (rc == LIBUSB_ERROR_TIMEOUT) { - printf("timeout (%d)\n", actual_length); - return -1; + //printf("timeout (%d)\n", actual_length); + return 0; } else if (rc < 0) { - fprintf(stderr, "Error while waiting for char\n"); + fprintf(stderr, "Error while waiting for char: %s\n", libusb_error_name(rc)); return -1; } @@ -63,13 +60,11 @@ int read_chars(unsigned char * data, int size) int main(int argc, char **argv) { + libusb_context * ctx; int rc; - /* Initialize libusb - */ - rc = libusb_init(NULL); - if (rc < 0) { - fprintf(stderr, "Error initializing libusb: %s\n", libusb_error_name(rc)); + if (argc != 2) { + fprintf(stderr, "Usage: termux-usb -e %s /dev/bus/usb/00?/00?\n", argv[0]); exit(1); } @@ -77,20 +72,29 @@ int main(int argc, char **argv) */ libusb_set_debug(NULL, 3); - /* Look for a specific device and open it. + /* Initialize libusb */ - devh = libusb_open_device_with_vid_pid(NULL, VENDOR_ID, PRODUCT_ID); - if (!devh) { - fprintf(stderr, "Error finding USB device\n"); - goto out; + libusb_set_option(NULL, LIBUSB_OPTION_NO_DEVICE_DISCOVERY); + rc = libusb_init(&ctx); + if (rc < 0) { + fprintf(stderr, "Error initializing libusb: %s\n", libusb_error_name(rc)); + exit(1); } - /* As we are dealing with a CDC-ACM device, it's highly probable that - * Linux already attached the cdc-acm driver to this device. - * We need to detach the drivers from all the USB interfaces. The CDC-ACM - * Class defines two interfaces: the Control interface and the - * Data interface. + /* Look for a specific device and open it. */ + int fd; + rc = sscanf(argv[1], "%d", &fd); + if (rc != 1) { + fprintf(stderr, "Failed to read fd: %d\n", rc); + exit(1); + } + rc = libusb_wrap_sys_device(ctx, (intptr_t) fd, &devh); + if (rc != 0) { + fprintf(stderr, "Failed to wrap fd %d: %s\n", fd, libusb_error_name(rc)); + exit(1); + } + for (int if_num = 0; if_num < 2; if_num++) { if (libusb_kernel_driver_active(devh, if_num)) { libusb_detach_kernel_driver(devh, if_num); @@ -111,6 +115,7 @@ int main(int argc, char **argv) if (rc < 0) { fprintf(stderr, "Error during control transfer: %s\n", libusb_error_name(rc)); + goto out; } /* - set line encoding: here 9600 8N1 @@ -122,19 +127,34 @@ int main(int argc, char **argv) if (rc < 0) { fprintf(stderr, "Error during control transfer: %s\n", libusb_error_name(rc)); + goto out; } /* We can now start sending or receiving data to the device */ unsigned char buf[65]; - int len; - + int len, inputlen; + + fcntl(0, F_SETFL, fcntl(0, F_GETFL) | O_NONBLOCK); + + fprintf(stderr, "Connected.\n"); + while(1) { - write_char('t'); + while ((inputlen = read(0, buf, 1)) == 1) { + if (write_char(buf[0])) { + break; + } + } + if (inputlen < 0 && errno != EAGAIN) { + perror("read"); + break; + } len = read_chars(buf, 64); + if (len == -1) { fprintf(stderr, "failed read chars\n"); break; } + if (len == 0) { usleep(150000); continue; } buf[len] = 0; - fprintf(stdout, "Received: \"%s\"\n", buf); - sleep(1); + fprintf(stdout, "%s", buf); + fflush(stdout); } libusb_release_interface(devh, 0); @@ -142,6 +162,6 @@ int main(int argc, char **argv) out: if (devh) libusb_close(devh); - libusb_exit(NULL); + libusb_exit(ctx); return rc; }

karl3@writeme.com wrote: > karl3@writeme.com wrote: > > > > > so, sending robots into [air]space first lets them accumulate supplies for you there until you move there yourself. > > > > > > thinking for a final product you'd want 2-3 ways to connect to it remotely (and get gps) in case it is high in the sky and one of them breaks. > > > > > > so, things i could buy today to make a barebones prototype today: > > > > > - power pack (ideally a solar one) to power arduino and motors > > > > > - power adapter for motors? > > > > > - party balloons > > > > > - twine, construction materials > > > I went out today and spent all my money on ballooning supplies so I can prepare to escape the ground and get closer to outer space while I am in a mind to. I bought: - the smallest solar panel i found, it had USB ports - wiring and soldering supplies and tools that I'm used to having - craftsy options: twine, superglue, hot glue, duct tape - big mylar balloons - helium gas - a low end prepaid android phone and a card for it I had about $200 . It all added up. I also found a bag of motors among my things here that increases options. I guess next if continuing with the project I'd set up the new phone, then work on setting up wiring for at least the fan motor maybe more, then try to jerryrig it onto a big party balloon. But what makes most sense now is to put everything in a big box together to be organized. And i am doing other things now

I guess next if continuing with the project I'd set up the new phone, then work on setting up wiring for at least the fan motor maybe more, then try to jerryrig it onto a big party balloon.
But what makes most sense now is to put everything in a big box together to be organized. And i am doing other things now
tension arounds this project exists! the new phone is still doing OS updates 0_0 . gotta figure some way of deploying secure android system updates some day or something uhhh one fear relates to getting a text message that the voicemail pin was changed and to contact support if it wasn't requested. hoping that was just it saying it had configured my voicemail pin automatically, not that somebody else decided they should access my voicemail before i do, but it does sound possible to be the latter :s :s their customer service opens at 8am in 3 hours, but there's a _lot_ of fear/confusion going on so i dunno :s might be the end of this project unsure! another fear/confusion relates to my purchase of helium gas [i don't really understand this one but maybe making blimp drones is considered worrisome [it might be similar to the shielded room fear/confusion, where i don't understand why this would ever be an issue, but the issue develops super strongly anyw-

I may have hunted down some of this tension. To clarify, PARTY HELIUM IS NOT USUALLY USED FOR BALLOONING because it is a tiny atomic gas and quickly escapes through commonly available thin and lightweight balloon materials. It is also usually cut with normal air. Hydrogen is purportedly a molecular gas and works better (but might have similar sensationsa round its use due to traditional advisement of avoiding it). Hot air is what is conventional. [not sure what blimps and zeppelins use!] However, using party helium to make a drone is certainly indicative of not having training in making them </suspicion-focused introject that acts like its defending patriotism>

I thought it was obvious that the term "ballooning" was a joke :s it's a prototype for an aerostat to store supplies for people with DID. We thought the mysterious extraterrestrials were rewarding us for pursuing spaceflight. But we may need a more clear document explaining how the helium supports spaceflight. It's kind of convoluted, and mostly relates to DID.

Here's a condensed clarification: - Putting party helium in a mylar balloon won't make an aerostat that floats long enough to store supplies for spacetravel; - but it will make an aerostat that floats long enough to learn how to make one that floats longer in the time the first one is floating!

from thoughtco.com via websearch: SKIP TO CONTENT Home Science, Tech, Math Humanities Languages Resources About Us Search CloseSearch the siteGO Science, Tech, Math› Science› Chemistry› Projects & Experiments How to Make Hydrogen Gas Using Simple Materials 4 Methods PRINT Science Activities for Every Subject Weather Food and Cooking Fire and Smoke Bubbles Crystals Chemical Reactions Build a Baking Soda Volcano Make Sulfuric Acid at Home Make Homemade Dry Ice Make Hydrogen Gas Make "Elephant Toothpaste" Wikihow/CC BY-NC-SA 3.0 By Anne Marie Helmenstine, Ph.D. Updated on July 15, 2024 It's easy to generate hydrogen gas at home or in a lab using common household materials. Here's how to make hydrogen safely. Make Hydrogen Gas—Method 1 One of the easiest ways to obtain hydrogen is to get it from water, H2O. This method employs electrolysis, which breaks water into hydrogen and oxygen gas. Materials Needed water 9-volt battery 2 paper clips another container filled with water Steps Unbend the paper clips and connect one to each terminal of the battery. Place the other ends, not touching, into a container of water. That's it! You'll get bubbles off both wires. The one with more bubbles is giving off pure hydrogen. The other bubbles are impure oxygen. You can test which gas is hydrogen by lighting a match or lighter over the container. The hydrogen bubbles will burn; the oxygen bubbles will not burn. Collect the hydrogen gas by inverting a water-filled tube or jar over the wire producing the hydrogen gas. The reason you want water in the container is so you can collect hydrogen without obtaining air. Air contains 20% oxygen, which you want to keep out of the container to keep it from becoming dangerously flammable. For the same reason, don't collect the gas coming off both wires into the same container, since the mixture could burn explosively upon ignition. If you wish, you can collect the oxygen in the same way as the hydrogen, but be aware this gas is not very pure. Cap or seal the container before inverting it, to avoid exposure to air. Disconnect the battery. Make Hydrogen Gas—Method 2 There are two simple improvements you can make to improve the efficiency of hydrogen gas production. You can use graphite (carbon) in the form of pencil "lead" as electrodes and you can add a pinch of salt to the water to act as an electrolyte. The graphite makes good electrodes because it's electrically neutral and won't dissolve during the electrolysis reaction. The salt is helpful because it dissociates into ions which increase the current flow. Materials Needed 2 pencils salt cardboard water battery (could go as low as 1.5 V with the electrolyte) 2 paper clips or (better yet) 2 pieces of electrical wire another container filled with water Steps Prepare the pencils by removing the eraser and metal caps and sharpening both pencil ends. You're going to use the cardboard to support the pencils in the water. Lay the cardboard over your container of water. Insert the pencils through the cardboard so that the lead is submerged in the liquid, but not touching the bottom or side of the container. Set the cardboard with pencils aside for a moment and add a pinch of salt to the water. You could use table salt, Epsom salt, etc. Replace the cardboard and pencils. Attach a wire to each pencil and connect it to the terminals of the battery. Collect the gas as in Method 1, in a container that has been filled with water. Make Hydrogen Gas—Method 3 You can get hydrogen gas by reacting hydrochloric acid with zinc: Zinc + Hydrochloric Acid → Zinc Chloride + Hydrogen Zn (s) + 2HCl (l) → ZnCl2 (l)+ H2 (g) Materials Needed hydrochloric acid (muriatic acid) zinc granules (or iron filings or strips of aluminum) Hydrogen gas bubbles will be released as soon as the acid and zinc are mixed. Be very careful to avoid contact with the acid. Also, heat will be given off by this reaction. Homemade Hydrogen Gas—Method 4 Aluminum + Sodium Hydroxide → Hydrogen + Sodium Aluminate 2Al (s) + 6NaOH (aq) → 3H2 (g) + 2Na3AlO3 (aq) Materials Needed sodium hydroxide (found in certain drain clog removers) aluminum (included in the drain removal products or you can use foil) This is an extremely easy method of making homemade hydrogen gas. Simply add some water to the drain clog removal product! The reaction is exothermic, so use a glass bottle (not plastic) to collect the resulting gas. Hydrogen Gas Safety The main safety consideration is making certain hydrogen gas isn't allowed to mix with oxygen in the air. Nothing bad will happen if it does, but the resulting air-hydrogen mixture is much more flammable than hydrogen on its own because it now contains oxygen, which will act as an oxidizer. Store hydrogen gas away from an open flame or another ignition source. Cite this Article 10 Amazing Chemical Reactions How to Make Bubbles That Don't Pop Equation for the Reaction Between Baking Soda and Vinegar Lemon Fizz Science Project Vitamin C Determination by Iodine Titration 5 Ways to Make Glue How to Grow Table Salt or Sodium Chloride Crystals How to Melt Aluminum Cans at Home Elephant Toothpaste Chemistry Demonstration How to Make Chemical Piranha Solution Homemade Dry Ice Recipe High School Science Fair Projects Can You Really Run Your Car on Water? Hydrogen Balloon Explosion Experiment Alchemy Experiment: Turning Water Into Liquid Gold How to Make a Baking Soda Volcano ThoughtCo Follow Us Science, Tech, Math Humanities Languages Resources About Us Advertise Careers Privacy Policy Editorial Guidelines Contact Terms of Service Your Privacy Choices ThoughtCo is part of the Dotdash

notes for configuring a new android phone for USB serial connection to an Arduino Uno R3 via SSH or tmate in Termux, with some security concerns (i am no longer a security expert at all) Note that with this approach human intervention is needed on each USB serial device connection (or likely reboot), to confirm permission access to it. This might be addressable with a small patch to termux. - if you experience persistent compromise, activate the phone from a clean device unafilliated with you - install all OS updates for the phone before using it for anything. note that other apps such as text messaging can be a vector for attack just like the traditional web browser. until the device is updated, keep it in airplane mode when the updates are installing rather than downloading. put it online only during the download portion of each install. - APKs could be transferred from another device, installed via f-droid, installed via github, or installed via some other means. Install Termux, Termux-Boot, and Termux-API. Note that vanilla Termux needs internet to download the initial image. Here are some urls. The urls below contain high version strings in the latest version which could be indicative of somebody mutating them to maintain persistent compromise of me. So, I include a lower version as well in case that's helpful. https://f-droid.org/F-Droid.apk https://github.com/termux/termux-app/releases https://f-droid.org/repo/com.termux_1000.apk # 0.118.1 https://f-droid.org/repo/com.termux_118.apk # 0.118.0 https://github.com/termux/termux-app/releases/download/v0.118.1/termux-app_v... https://github.com/termux/termux-app/releases/download/v0.118.0/termux-app_v... https://github.com/termux/termux-boot/releases https://f-droid.org/repo/com.termux.boot_1000.apk # 0.8.1 https://f-droid.org/repo/com.termux.boot_8.apk # 0.8.0 https://github.com/termux/termux-boot/releases/download/v0.8.1/termux-boot-a... https://github.com/termux/termux-boot/releases/download/v0.8.0/termux-boot_v... https://github.com/termux/termux-api/releases https://f-droid.org/repo/com.termux.api_51.apk # 0.50.1 https://f-droid.org/repo/com.termux.api_50.apk # 0.50.0 https://f-droid.org/repo/com.termux.api_49.apk # 0.49 https://github.com/termux/termux-api/releases/download/v0.50.1/termux-api_v0... GitHub is not showing me any APK downloads for termux-api <= 0.50.1, which seems very strange. - settings->apps enable appropriate permissions for each termux app. enable notifications to allow running in the background. set app battery usage to unrestricted to keep processes active. enable location if GPS access is needed. - settings->security & privacy->device unlock->screen lock set screen lock to none to enable termux-boot services to run when phone is powered without user intervention; new android versions seem to wait until the user logs in to run these there might be more settings to configure for things to work well - if using the public tmate server for NAT traversal (ill-advised but convenient) you can get an API key at https://tmate.io/#api_key , My current API key is tmk-3KZfau2nkqhK2G8HfDcP8jX5Dm . This will used as YOUR_TMATE_API_KEY in .tmate.conf in termux. - launch termux: # package installation pkg upgrade -y # not strictly required, may be quite ill-advised pkg install -y openssh tmate git termux-api libusb clang make # usb setup git clone https://github.com/tytouf/libusb-cdc-example curl https://bpa.st/download/WRAA | patch -d lisbusb-cdc-example -p1 # quick arduino uno fudge make -C libusb-cdc-example # remote access setup mkdir -p .termux/boot cat > .termux/boot/sshd <<EOF #!/data/data/com.termux/files/usr/bin/sh termux-wake-lock sshd EOF cat > .termux/boot/tmate <<EOF #!/data/data/com.termux/files/usr/bin/sh termux-wake-lock tmate -F EOF cat > .tmate.conf <<EOF set tmate-api-key "YOUR_TMATE_API_KEY" set tmate-session-name "YOUR_PRIVATE_SECURE_STRING_TO_CONNECT_TO_TMATE" set tmate-session-name-ro "OPTIONAL_PUBLIC_STRING_TO_WATCH_TMATE_SESSION" EOF chmod 755 .termux/boot/* ifconfig # show ip addresses, store these to access device via direct ssh whoami # show ssh login user, store this to access device via direct ssh passwd # set a password for direct ssh - leave Termux and launch Termux:Boot to install the boot service - reboot (for me that's volume-up and power) - connect an Arduino Uno R3 running a serial monitor interface - shell into YOUR_TMATE_USERNAME/YOUR_PRIVATE_SECURE_STRING_TO_CONNECT_TO_TMATE@nyc1.tmate.io for me the host appears to always be nyc1.tmate.io . nyc happens to be a major city geographically near me. tmate -F outputs this information on launch. - in the shell, run `termux-usb -l` this should show connected USB devices. if there are none, then remove them all (if there's more than one) and plug them in again slowly and carefully one by one trying after each one to isolate if something is drawing too much power. Try also with a different device. - identify the device in termux-usb -l that is the arduino uno, /dev/bus/usb/001/005 or so - run `termux-usb -r /dev/bus/usb/001/005` or so replacing the device string with your device - a popup launches on the phone to request permission to access the device. confirm permission. - it will take a long time for termux-usb -r to recognise permission is given. the device is not usable until it does. there is an open PR for this at https://github.com/termux/termux-api/pull/685 - now we can run `termux-usb -e libusb-cdc-example/cdc_example /dev/bus/usb/001/005` replacing the device string with your device, and engage the serial content of the arduino on the phone via the internet In writing this I also learned there is an app on F-Droid called SerialPipe that lets one access a serial device via socat over udp from any terminal app. This is a much more general solution that would be preferred to my cdc_example patch if it works.

traffick boss [acting snoppish and dismissive, to specialist grassroots activist after torture]: "teach me about square roots! teach me the square root of 9!" specialist grassroots activist [experiencing dense flashbacks from torture, relived to be teaching math again]: "the square root of 9 .. is ... is ... is ... !" traffick boss [smug, arms crossed, watching specialist grassroots activist]: "come on!" traffick boss mind controls specialist grassroots activist specialist grassroots activist [mind controlled by traffick boss's advanced systems]: "the square root of 9 is 3" traffick boss: "yes! good job!" specialist grassroots activist is shaking and jerking and stumbling; they look very scared and confused

wondering if we could have traffick boss build a wormhole unsure whoooooooooooooooooooops this message was found 1554 after multihour delay

i took my device out of S mode (:s :s) thinking i would play league of legends but having trouble with the authentication server when i took it out of S mode it humorously said i would be missing out on the speed of using microsoft edge. microsoft edge is _so slow_ for me omigod sometimes i have to wait over a minute to click a button or scroll a page. so leaving S mode is mostly a token gesture perhaps y'know spamming GPT-4 is kind of a funny behavior, but now there are things like manus and swe-agent maybe i should set those up and spam with them last time i used uhhhh cline and put a lot of money in that, i'm feeling intense again but luckily don't have much money ... let's seen what mannaandpoem/open-manus can do for me. or swe-agent codespaces ... to use them i'll need an api key for a language model. i know how to make targon's deepseek go for free, but it requires i think crafting the prompt manually. let's see if either of these are conducive to that. 1557 - i see a .vscode folder :s ergh i don't usually use vscode - ok it uses openai's library but not quite how i expect - it's in python. so it should be reasonable to import huggingface's tokenizers and automate local prompt crafting. i don't immediately remember how to do that, but it is not complex once found. (i'm looking at https://github.com/mannaandpoem/OpenManus :s :s i should go on their discord and warn them that i mentioned them here and they could get targeted :( ) it uses tiktoken for token counting ... kind of overlaps prompt generation i guess i'd have to patch the format_message function which doesn't do very much as-is ... i'm at https://github.com/mannaandpoem/OpenManus/blob/main/app/llm.py it passes it to the chat completions api in line 268 so it's straightforward but involves engaging areas i don't have super well - does tiktoken do prompt formatting? this would be most compatible with the existing stuff - what was the huggingface approach again? well maybe i'll just try pasting the huggingface approach in. let me try a draft of it. here we go :D
so all i haev to do is figure out the huggingface model id for the used model, tokenize it, and pass it to the openai non-chat completions endpoint, and i can use services where that's free. :s :s :s !!!

i've made these changes, however ... diff --git a/app/config.py b/app/config.py index 51356a0..4c1f224 100644 --- a/app/config.py +++ b/app/config.py @@ -24,6 +24,7 @@ class LLMSettings(BaseModel): None, description="Maximum input tokens to use across all requests (None for unlimited)", ) + hf_tokenizer_id: Optional[str] = Field(None, description="HuggingFace model_id to apply the chat template locally.") temperature: float = Field(1.0, description="Sampling temperature") api_type: str = Field(..., description="AzureOpenai or Openai") api_version: str = Field(..., description="Azure Openai version if AzureOpenai") diff --git a/app/llm.py b/app/llm.py index 18a13af..c15a7e4 100644 --- a/app/llm.py +++ b/app/llm.py @@ -71,6 +71,11 @@ class LLM: except KeyError: # If the model is not in tiktoken's presets, use cl100k_base as default self.tokenizer = tiktoken.get_encoding("cl100k_base") + if llm_config.hf_tokenizer_id is not None: + import transformers + self.hf_tokenizer = transformers.AutoTokenizer.from_pretrained(llm_config.hf_tokenizer_id) + else: + self.hf_tokenizer = None if self.api_type == "azure": self.client = AsyncAzureOpenAI( @@ -252,6 +257,12 @@ class LLM: "model": self.model, "messages": messages, } + if self.hf_tokenizer is Non: + params["messages"] = messages + client_api_completions = self.client.chat.completions + else: + params["prompt"] = self.hf_tokenizer.apply_chat_template(messages, tokenize=False) + client_api_completions = self.client.completions if self.model in REASONING_MODELS: params["max_completion_tokens"] = self.max_tokens @@ -265,7 +276,7 @@ class LLM: # Non-streaming request params["stream"] = False - response = await self.client.chat.completions.create(**params) + response = await client_api_completions.create(**params) if not response.choices or not response.choices[0].message.content: raise ValueError("Empty or invalid response from LLM") @@ -279,7 +290,7 @@ class LLM: self.update_token_count(input_tokens) params["stream"] = True - response = await self.client.chat.completions.create(**params) + response = await client_api_completions.create(**params) i don't expect them to work. i expect the two api endpoints to be too different, maybe a couple other concerns i'm thinking it makes sense to configure an endpoint and run it, gives one a direct look at the issue without having to cross reference things 1622 the working api i've last used is in one of the zinc binaries hardcoded. i'd pull it out of there and put it in openmanus 1629 ummmm ummm ummm i'm out of space install all its gpu depencies for local evaluation. gotta disable those. 1650 (Pdb) print(params["prompt"]) <|begin▁of▁sentence|>You are OpenManus, an all-capable AI assistant, aimed at solving any task presented by the user. You have various tools at your disposal that you can call upon to efficiently complete complex requests. Whether it's programming, information retrieval, file processing, or web browsing, you can handle it all.<|User|>hi<|User|>You can interact with the computer using PythonExecute, save important content and information files through FileSaver, open browsers with BrowserUseTool, and retrieve information using GoogleSearch. PythonExecute: Execute Python code to interact with the computer system, data processing, automation tasks, etc. FileSaver: Save files locally, such as txt, py, html, etc. BrowserUseTool: Open, browse, and use web browsers.If you open a local HTML file, you must provide the absolute path to the file. WebSearch: Perform web information retrieval Terminate: End the current interaction when the task is complete or when you need additional information from the user. Use this tool to signal that you've finished addressing the user's request or need clarification before proceeding further. Based on user needs, proactively select the most appropriate tool or combination of tools. For complex tasks, you can break down the problem and use different tools step by step to solve it. After using each tool, clearly explain the execution results and suggest the next steps. Always maintain a helpful, informative tone throughout the interaction. If you encounter any limitations or need more details, clearly communicate this to the user before terminating. <|Assistant|> ....................... 1840 p well i'm not finding any information on the tool calling formats for deepseek. their public api has tool calling with a caveat that it doesn't work well, and a handful of libraries have patched it on with prompt tuning, but it's not direct my sambanova 405b access is limited despite temporarily free some interest in figuring out deepseek's tool calling prompt by probing their api, maybe not the thing atm oops! _would need a free tool calling model to make most task agents plug-and-play!_ now maybe the quickest way to work aroudn this would be to look at what format the system expects, and just tell a model to output in that format

well, so, there is a simple thing one could try here (1) produce interactions of reasonable quality to generate data, possibly paying for an api or using a trial, or finding a good public dataset for tool calling which likely exist (2) create a prompt tuning system using few shot learning repetitively to make a free model behave like the paid model there are some licensing concerns aroudn this, basically if you have licensing restrictions you adjust #2 to respect them. (3) use the lower end model as if it is the higher end system. it's basically been tuned to your usecase and input/output format. can iterate between 2 and 3 etc #2 stimulates confusion in me, roughly associated with interoperation between data storage and functionality the reason this is better than just using a finetuned small model is that you can perform the prompt tuning on a low end system to include your own preferences and fix functionality concerns so wrt #2 there are a few simpleish parts: - few shot learning: this means prompting a model with examples, and having it complete the examples - few shot learning for prompt tuning: by this i mean using few shot learning, to generate prompts - repetitively: each thing it generates can be something to try. this can be compared against the expected data, and included in the few-shot context in hopes of improving the output. notably, _it's not expected to work that well unless done really well_. some of the poor outputs it generates are expected to enter kind of eigenspaces where adding them into the context doesn't always inform the model to adjust the output in a way that improves it. in general, something that makes various systems with that behavior effectively improve is reducing the challenge by breaking it into steps or parts, or introducing concepts that move toward the solution in steps. so human review can help, but it helps most if it identifies general patterns rather than addressing specific situations. and then, the human review could possibly be used for few shot prompting and automated. but an effective enough interface for that would need to be implemented so it's a handful of infrastructuring and interfacing with a lot of confusion and inhibition around the logical parts but there's a chance that the repetivie few shot prompt tuning would just work. maybe we could try a simple example of that to see it work! for example, i could (a) come up with some easy data and (b) come up with a few shot prompt for it, and then run it in a loop to see if it can generate an arbitrary prompt to cause the data to happen. this is expected to work. so (a) could be like ummmm dog => brown icecream => green cat => white and the goal of the model would be to figure out how to _prompt another model_ so that it will _guess what color i associate with an object_. wait that's way too hard and abstract and totally relies on hidden information ummm a better example ummmm

karl3@writeme.com wrote:
so something simple like summation (1,1) -> 2 (3,4) -> 7 even gpt-2 could do that. IT'S SO HARD TO TRY IT ARGGGGH arghhhh 1856 lets figure out the data storage structures and plan to have them runtime only but having them planned out will make it easier to make them persistent if needed each few shot has [a] a set of items in its context and [b] a template for fewshotting which i usually call .prefix,.infix,.suffix it might also have [c] a total set of known items so if we consider _example pairs_ that seems kind of baseline. we could leave off good/bad etc. we could say have some number of _example pairs_, that we want to work with. that's basically the baseline of fewshotting. [........

so what is missing if the fewshot system's goal is to prompt tune another model to perform the prediction task reliably? what information is present? - a prompt given to another model - the prediction the other model made so now we have another set of information: prompts for models, and the resulting output. so possibly (a) pairs, data to perform fewshotting on and (b) pairs or triples, prompts for models and the resulting output we can combine these using 2 of A and 1 of B maybe? to prompt tune? because if we have (1,2) -> 3; (5,4) -> 9 and we want SillyLanguageModel to do this without any context correctly, we could have data like "report the deep essence of the data as a number" -> 37; "subtract one from another ok we'll need to include the pairs too so pair info 0: input=(1,2) output=3 1: input=(5,4) output=9 prompt info 0: model=SillyLanguageModel pair=0 prompt="report the deep essence of the data as a number" output=37 1: model=SillyLanguageModel pair=1 prompt="subtract one from another" output=1 this form has it only process one element at a time but that's okay for now because we still don't have the 3rd use which generates the prompts. something ... like .... uhhh ohhhh! it's the data already! uhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh so we have a result, where we (a) prompted the model (b) provided input and (c) got some output we want to generate a result where we get different input so we condition on the _output and input_ and _output the prompt_ every time i do this it gets harder >_> superpairs 0: input=(1,2),37 output="report the essence of the data as a number" 1: input=(5,4),1 output="subtract one from another" and then when we fewshot it with 2: input=(6,7),13 it generates output="add one to another" which prompt tunes correctly for the original pair data

karl3@writeme.com wrote:
so how to generalize this so it prompt tune for its own fewshot template and stuff :s :s :s :s :s what do we have: - target data which is pulled from other data and presented as a set of pairs of inputs and outputs - evaluation runs where it generates data that is incorrect -- this produces target data the key useful form is where the output is the structure used to perform the action -- the prompt, for prompt tuning then the input is the behavior of the action . that's almost enough generality for it to define its own template

ok so here's a very basic fewshot, it works fine: ``` import openai, transformers client = openai.OpenAI(api_key="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", base_url='https://openrouter.ai/api/v1') def complete(model, prompt, end): completion = client.completions.create(model=model, prompt=prompt, stop=end, temperature=0.0) return completion.choices[0].text class PrefixInfixSuffixAction: template = 'Follow the examples:\n{left} => {right}\n' model = 'deepseek-ai/DeepSeek-V3' def run(self, pairs, example, template=template, model=model): prefix, subtemplate = template.split('{left}',1) infix, suffix = subtemplate.split('{right}',1) prompt = prefix + suffix.join([str(left) + infix + str(right) for left, right in pairs]) + str(example) + infix return complete(model, prompt, suffix) print(PrefixInfixSuffixAction().run([["1+1",2]],"9+7")) # outputs 16 ``` now, ummmmmm say i want to make a prompt that does singleshot .... 1935 ... the output is the structure used to perform the action; that would be the prompt. so for example, "template" here is the prompt. the input is the behavior of the action. so if "9+7 => 16\n" were the _input_, then "Follow the examples:\n1+1 => 2\n" would be the _output_, the second half of the pair. Something that's missing here is: - storage of data - judging if data is good or bad, right or wrong

once upon a time, long long ago, traffick boss wanted to make a clockwork factory -- that is, a factory for fabricating clockwork. [sadly somewhat a true story T_T] there was a little clockwork made by the f-- the factory w--

[san-- [OW-- ]] we will go to post office. at post office, we speak to postal worker. waiting in line, hum hum eventually; "postal worker i have 9 million lett--

karl3@writeme.com wrote:
postal worker; "ok well that'll be 0.03c a stamp ..." "here are 20 letters and $0.60" postal worker "each of your letters is a postcard with onlypart of a word and a part of a smiley?" "ummmmmmmmm

karl3@writeme.com wrote:
how about this postal client goes to post office waits in line postal worker: "yes?" postal client: "hi, um [wipes brow, flushed] ummmm i am a victim of human trafficking and i want to get the word out to get help" postal client goes to lift box of 9 million letters postal worker: "oh let me call the police!" postal client: "does that help? i heard that doesn't do anything." postal worker [dialing phone] postal client [hoisting giant box of nine million letters]

karl3@writeme.com wrote:
postal worker: "the police will be here any minute" postal client: "oh! ummm can i mail these letters for free?" postal worker: "what--?" postal client: "so my trafficker is an advanced cybercriminal and reroutes phones and dispatch databases and stuff" postal worker: "really?" postal client [shoveling letters onto post office table] postal client: "yeah they're also super experienced in stimulating dissociated and hypnotic behaviors in people so they act funny and facilitate trafficking" postal worker looks seriously at postal client, who is still shoveling letters onto the table

so there's a problem in karlbrainworld the problem is that karl is hungry but that he wants to behave responsibly after breaking his father's garage window and has been using food to support that

karl3@writeme.com wrote:
so there's a problem in karlbrainworld
the problem is that karl is hungry but that he wants to behave responsibly after breaking his father's garage window and has been using food to support that
interlude to talk about part of karl that stimulates destruction around father's garage this part of karl is trying to destroy karl's family, both karl and his father. sadly karl can 'switch' to this part, although generally only briefly since he is meditating on not doing that practically 24/7/365

karl3@writeme.com wrote:
so sadly now we aren't eating for real because the garage intensity got too complex for the feeling holding roughly T_T we didn't eat yesterday it's likely mind control will just make us eat after saying this :P :P :P :P :P that's stupid of course, because our father has a garage full of broken glass and wind and rain, and wants to use the items in it and we want to clean it up, and our father wants to clean it up, but our father doesn't want us to feel bad by him cleaning it up for us if we want to be responsible sorry that's so convoluted. but basically the situation is not bad, it is resolvable, but very emotionally confusing because of "'switch' to this part"

karl3@writeme.com wrote:
apologies we appreciate your help eating at other times
and we want to clean it up, and our father wants to clean it up, but our father doesn't want us to feel bad by him cleaning it up for us if we want to be responsible
sorry that's so convoluted. but basically the situation is not bad, it is resolvable, but very emotionally confusing because of "'switch' to this part"

karl3@writeme.com wrote:
let's clarify here -- we are interested in eating and really appreciate the stimulation to do so more. _before_ we eat, we need to understand what to do about the garage! cause previously my strategy was to just go in the garage before eating, and eat while cleaning up glass.

karl3@writeme.com wrote:
ok :) so is a reasonable solution, yes? [one problem is due to handling switching very tiny executive functioning while doing] so, recently father asked for more of the glass cleaning [--parts unwritten >/

karl3@writeme.com wrote:
we have a partial plan which is to slowly move toward food and garage [leaving a lot of brain-body-consciousness-subconsciousness out atm] and the idea is roughly to eat _less_ food than garage cleaning. when in garage. so basically we fight bard-part with "'switch' to". we basically ignore what it wants which is not normal or easy. so we basically move _toward_ garage. and food. they are near each other. and we go into garage, optionally with uneaten food and then we basically check in again. at this time high chance of experiencing severe suffering. so maybe visit clonazapam and chocolate. wondering if there is something sweet that doesn't provide calories or nutrition >( maybe we could take videogame to garage too ?? this is contested and deters using body

once upon a time, long long ago, traffick boss was trying out being a seedling he went out as a seed and planted himself into moist soil dappled with sunlight as he was nestled under the moist and cool soil, he developed a strange warm pleasant and exciting sense coming from where he

lets think of writing a tiny software code thing that grows into light! maybe the world is full of random objects with density maybe evenly and chaotically distributed, overlayed a similarly constructed but completely different due to having a different random seed, distribution of light sources. we could then consider some code-driven construct developing through the universe of light and objects that obstruct light hmmmmmmmmmmm

how about starting with simply light densities, and maybe make them simple like uhhh density = prod(sin(coordinate_vector)) because this effectively raises a sine function to a power, the seed may start in a dark area. but it could grow tendrils. they would grow towards the source of most light! the seed gives the tendrils a baseline of energy storage. i guess energy is helpful maybe for growing. maybe each unit of energy lets it grow! i suppose it would grow toward sunlight until the energy it is getting from the sunlight is greater than that it is depleting from growing. then it would stop growing toward the sunlight, and make a chunk root or trunk or something to store the energy it was collecting in that area, maybe sprouting more energy collecting parts, tendrils or leaves. as its root and trunk and bushiness got bigger, then i guess it might send tendrils into dark areas to look for more light! it also might fruit.

therapist: "this sounds so meaningful and rare for you to share, and so important. i want to really hold and respect well what you say here." traffick boss looks at therapist with sad and heartfelt eyes, and briefly a moment is shared

some interest in making a language-model driven agent that would reply in parallel to all of gunnar's posts, from me, forthrightly as an AI representative, giving replies that are things i would say like "gunnar, you know it's good to give a link other than a paywall, here is one. what do you think of this article? i think this thing about it! signed, karl's language model bot. reply to send an email to karl himself!" it's been a lot of years for this behavior idea that would otherwise be normal in this community to percolate here! and of course somebody else doing that to me would be huge

once upon a time, traffick boss was going somewhere in the woods he wasn't totally certain where he was going. maybe an interesting hill. maybe an office down the hallway. maybe just going for a walk. as he traveled, he noticed the things ar--[ound [him; and wondered [if they were part of hi strafficking empire

traffick boss heads back to his "hole to china" he was digging upward with AI assistance traffick boss [reaching pile with sign saying "hole to china"]: "I can't believe I just abandoned this _awesome project_!"

impromptu meeting?

<scrrrrtzch!> after traffick boss corp (oh t

a :) b :) a :) b :)

tbc? tboss corp tboss like tbone-steak? hmm

you sound familiar with this kind of trafficking, makes me want to polish the story up

human trafficking is a political-corrext term for slavery in the usa. it refers to any kind of crime where humans are forced to behave in the ways that others direct. often when exposed to this it can get confusing, whether and when it is happening or not, but it's pretty clear to people who aren't experiencing it, what is and is not it. it is not always formally described as criminal. it is still considered a severe crime against humanity and morality. the first laws against human trafficking in the USA actually were put in place after enforcement started. people would stop it simply because it was so horrifying, regardless to law.

the term "traffick boss" evolved from "mind control boss". it looks pretty likely that "mind control" is a term used by traffickers to encourage victims to believe they have lost their own agency.

that's a reasonable point, we could upgrade from "traffick boss" to "slave boss ... it might trigger Blacks they are still recovering from slavery, there are still living slavers in our country, they made people call them boss T_T

karl3@writeme.com wrote:
that's a reasonable point, we could upgrade from "traffick boss" to "slave boss ... it might trigger Blacks they are still recovering from slavery, there are still living slavers in our country, they made people call them boss T_T
but it could of course also help unify things i dunno, i imagine anti-trafficking researchers discuss this. it's certainly weird

karl3@writeme.com wrote:
it's dissociative and may relate to feminism given sex trafficking :/ i guess called-slavery was out in the open more, sex-trafficking still has norms of secrecy "your wife will find out" [BARF]

confusion abounds!

karl3@writeme.com wrote:
karl3@writeme.com wrote:
that's a reasonable point, we could upgrade from "traffick boss" to "slave boss ... it might trigger Blacks they are still recovering from slavery, there are still living slavers in our country, they made people call them boss T_T
slavery was abolished in 1865 so any living aboveground slavers would be 160 years old! got some crossed wires somewhere. but what is meant is that there are still people who try to enslave Blacks T_T
but it could of course also help unify things
i dunno, i imagine anti-trafficking researchers discuss this. it's certainly weird

karl3@writeme.com wrote:
to clarify for myself, what this memory-part was meant for was that there are still living people who believe in segregation and slavery. that weren't with martin luther king. it's incredibly shocking to grow up in a happy free society and encounter people who think slavery is normal. this is very shocking, and this information helps explain some of these things.
but it could of course also help unify things i dunno, i imagine anti-trafficking researchers discuss this. it's certainly weird

karl3@writeme.com wrote:
another half of that shock [to explain] is the projected world of it being impossible to escape. i had to spend a lot of time teaching myself that slavery _isn't_ _everywhere_, despite having been raised to think it wasn't _anywhere_. the bad-idea was along the lines of "nobody will help you, everybody participates, it's just not discussed, just like we won't let you discuss it." then you start interpreting every confusion and hesitation as people implying that you should return to being trafficked. :P really-bad-idea. not true. but traffickers like it, makes trafficking easier.
but it could of course also help unify things i dunno, i imagine anti-trafficking researchers discuss this. it's certainly weird

ok so traffick boss should maybe be slave boss because people act on the word more strongly ... [the whole story is bad, it sends trafficking culture upward instead of downard maybe? anyway it's supposed to be a pun where the boss is mind controlled / trafficked /slaved. this gives an avenue to handle the pressure to slave people -- we'll slave the head boss

slave boss pokes at his hole to china (a small pile of dirty) slave boss: "is this a hole to space or a ship to rock? --

slave boss has a huge business presentation! it is a giant auditorium with low lights and big audience awaiting his big reveal the lights on the stage come on and the curtains draw -- and there is slave boss! but he is facing away from the audience, his back to them? his arms and legs are tilted funny, and he wears a mask on the back of his head [interlude: spent some time looking on the internet for the mime performance where the mime wears a mask on the back of their head with the front covered and manages to trick the audience into thinking it is the front of their head using skilled manipulation of their limbs. i looked at the mime forms wikipedia article, and websearched mime skills, and advanced mime skills. i read a training handbook for practicing mimery. nowhere did i find what this is called. i thought i would call it name and link to it but i haven't found it.

slave boss and an ostrich sit peacefully near a daffodil the daffodil has its sunny flower plunged into a small pile of earth

oh here it is! how confusing traffick boss wonders what it is like for the dandelion to see under the soil (and wishes he were there) the ostrich feels very confident about the whole situation

on line 2882 of gmp-impl.h in the feb 3 2025 development source of libgmp, lies an implementation of limb incrementation with nails. there is an unspoken constraint on this code. the incrementation must not exceed NUMB_MAX. if it does, invali--

karl3@writeme.com wrote:
on line 2882 of gmp-impl.h in the feb 3 2025 development source of libgmp, lies an implementation of limb incrementation with nails.
there is an unspoken constraint on this code. the incrementation must not exceed NUMB_MAX. if it does, invali--
but it looks like this function is mostly used for carries, constants equal to 1, and as part of pseudorandom number generation

is it so clear? what is exactly clear? - is the constraint clear? - is it clear that karl is stealing gnu code? - is it clear that karl is influenced to find vulnerabilities and expose them to criminals without reporting them to devs or improving them, to such a strong degree that he finds things that aren't vulnerabilities yet and reports those? that third one is what is clear

karl3@writeme.com wrote: > > on line 2882 of gmp-impl.h in the feb 3 2025 development source of libgmp, lies an implementation of limb incrementation with nails. > > there is an unspoken constraint on this code. the incrementation must not exceed NUMB_MAX. if it does, invali-- > > but it looks like this function is mostly used for carries, constants equal to 1, and as part of pseudorandom number generation > > GMP_NUMB_MAX must be the maximum value for numbers in libgmp. This may be wh-- > > is it so clear? what is exactly clear? > - is the constraint clear? no this code is some of the most esoteric (and commonly used!) code there is > - is it clear that karl is stealing gnu code? no the gnu license advocates for code sharing > - is it clear that karl is influenced to find vulnerabilities and expose them to criminals without reporting them to devs or improving them, to such a strong degree that he finds things that aren't vulnerabilities yet and reports those? maybe here we could replace "criminals" with "immoral use" to rotate axes 90 degrees around different kinds of systems of law > > that third one is what is clear

karl3@writeme.com wrote: > karl3@writeme.com wrote: > > > on line 2882 of gmp-impl.h in the feb 3 2025 development source of libgmp, lies an implementation of limb incrementation with nails. > > > there is an unspoken constraint on this code. the incrementation must not exceed NUMB_MAX. if it does, invali-- > > > but it looks like this function is mostly used for carries, constants equal to 1, and as part of pseudorandom number generation > > > GMP_NUMB_MAX must be the maximum value for numbers in libgmp. This may be wh-- > > > is it so clear? what is exactly clear? > > - is the constraint clear? > no this code is some of the most esoteric (and commonly used!) code there is her we could focus on my disorientation and cognitive decline rather than placing code in one or another barrel of esotericism. but i was sadly surprised to feel like few people were working on the coreboot code i engaged > > - is it clear that karl is stealing gnu code? > no the gnu license advocates for code sharing > > - is it clear that karl is influenced to find vulnerabilities and expose them to criminals without reporting them to devs or improving them, to such a strong degree that he finds things that aren't vulnerabilities yet and reports those? > maybe here we could replace "criminals" with "immoral use" to rotate axes 90 degrees around different kinds of systems of law > > > > that third one is what is clear

wrote this once but used different flower by accident, unsure if sent. here is again: slave boss and an ostrich sit peacefully by a dandelion the dandelion has its sunny head plunged into a small pile of earth

a ethereal influence engages my foot

ok >( maybe i'll try to work on the blimp despite inhibition >( i have wrist pain atm resonating with a confusion around wiring the part has [negative judgement?] around my attempts to wire motors together with off-the-shelf stuff i actually cut my hand with the wire strippers (repeatedly (i am very experienced with wire strippers but the parts having my fingers bend the wr--)) and took a break for the bloo

karl3@writeme.com wrote:
when i go to do the wiring my hands start moving backwards from how i tell them (there is a neuropsych term for this i don't quite remember it, but it's dissociative (FND i suppose) when it relates to other things rather than being constant)) i had really intense days the past few days, bad things active more. rarely intense beyond-nightmares a night or two ago

karl3@writeme.com wrote:
if we really want a blimp i could maybe just kinda pursue it steadily one idea is going to a store and getting wire, i had settled on repurposing broken wires since i didn't quickly find good wire, which is slower. even if i don't find good wire i could buy some product with a lot of the same wire to repurpose so that the work is more consistent and clear (like an ethernet cable, those have a lot of consistent skinny wires in them all the same gauge) i could also order things to prepare later regarding a blimp prototype, a local concern is the lack of a good lifting situation. on my purchasing day i got mylar balloons and helium, but these will only stay up for a few days on their own pursuing synthesis of hydrogen could help, it permeates more slowly. still just taking notes atm though.

karl3@writeme.com wrote:
i could maybe make a trip or a subproject out of it, travel to a hardware store and look for wires and connectors :s [i do seem somewhat confused around how to lay something out here , maybe ordering some kind of project kit or something

karl3@writeme.com wrote:
one of the fun things about blimp was i recently reorganized car in preparation for stay at crisis unit or partial hospitalization program i put all the blimp project stuff in a rugged box i had intended for my clothes and forgot had that intent around, expect for the hydrogen which didn't fit, so the hydrogen is tossed near it in trunk i've since taken the motor stuff out and it's spread around on floor. i took the solar panel out to test power but it's just a heavy thing with a usb port so should go back

karl3@writeme.com wrote:
fix: helium! from party balloon store. not hydrogen [yet ;p]. the reason it's fun is i got to handle the helium and balloons and think about a little blimp :D it's so near to being doable, i usually think of wiring as so easy i might have some food soon and then try the wiring more after [the wounds on my cut hand have mostly clotted]
i've since taken the motor stuff out and it's spread around on floor. i took the solar panel out to test power but it's just a heavy thing with a usb port so should go back

victims of slave boss do not deserve their experiences, which are not punishment but rather baseless torture

my fun project has been ndarray modifications in python :D i made a resizeable ndarray that was like a normal ndarray but supported n-dimensional insertion anywhere. it has a function to produce an n-dimensional hole and it enumerates and returns a list of the n-dimensional unassigned regions that were generated by stretching the ndarray to make room for the hole :D i wanted to augment it to support ragged data but didn't settle on an interface. i think ragged insertion might have 2 associated maybe hyperplanes? -- the directions in which the data raggedly grows, and the directions in which the data does _not_ grow when inserted. then i started an n-dimensional fraction class, which was cool but i quickly discovered that performing high dimensional arithmetic on rationals of uint64s overflows the uint64 in just a couple operations, destroying the ability of the fraction to represent exact quantities. i made two attempts at the fraction. so then i started an n-dimensional bigint class, i'm on the third attempt now. my second attempt was a libgmp port. this third attempt is looking promising i just implemented vector sum! after learning more about this i'm feeling pretty confident about it. work ends up in https://github.com/karl3wm/stash in the 'ndarray' branch. pretty satisfying to have plans around preserving work on an algorithm class! plans don't always pan out of course

traffick boss is getting hauled off to universe-reality jail again to get chided for breaking the universe

traffick boss is getting hauled off to universe-reality jail again to get chided for breaking the universe
[goes in morning spam] irritated ethereal demigod: "i made just a perfect and beautiful universe and put your species on a utopic paradisic planet" slave boss looks at ethereal demigod irritated ethereal demigod: "and you fill it somehow with self-replicated physical law borg that mutate gravity so as to harass people you don't like the looks of!" irritated ethereal demigod: "and push all the rivers and indigenous children into all the wrong places!" irritated ethereal demigod: "and somehow hunt down the harmonic stabilizers for the orbits of distant galaxies and reorient all their orbits just to dirt on your business rivals!" slave boss folds his arms irritated ethereal demigod: "in complete disrespect of the harmonic balance of every intergalactic race and alternate dimension that i've worked on polishing for _quadrillions and quadrillions_ of your orbits." irritated ethereal demigod folds their arms too and frowns at slave boss irritated ethereal demigod: "_quadrillions_ !" [small mistake]

<! ^(@/

<! ^(@/
machine learning marketer: "i'm not sure if the term "slave boss" is really ideal for you ..." slave boss: "ah, yes, the social programs i've paid you to instigate are working already! yes. nobody says "slave boss". when they say that i kill them." machine learning marketer looks at slave boss

karl3@writeme.com wrote: the quote levels don't work quite right in this hyperkitty 1.3.12 mailman interface.
i have an even better idea than an n-dimensional maze solving algorithm in 4 or so lines! [ ...
it's an old idea -- let's figure out a way to have _partial dimensions_! fuzzy dimensionality! vagueness, uncertainty, tangled wrong-like parts! what would a maze-solving algorithm look like in a sloppy mix between 2+1/4 and 2+1/3 dimensions? maybe a rough bell curve distribution centered aroudn 2+7/24ths dimensions? what would the maze representation itself look like? there are so many different possible approaches! -- attempting to send the above email gave the web2 interface error "undefined". i'm waiting a bit and checking the archives to see if it went through quickly. 719p et. 720p not seeing it. sending again

karl3@writeme.com wrote:
feeling out how this lands (yes i suppose we could have only some avenues that reach into higher dimensionality, and even make the dimensionalitiness arbitrarily and infinitely high but use it in a distribution that provides for finite time (somewhat interesting!) but) i think maybe i'd like of course to expand the idea of a maze into the space in which it is represented and held, kind of. how could the dimensionality and path-connectivity-meaning of the maze, itself be maze-like?

karl3@writeme.com wrote:
found a debateish over here, this doesn't seem quite right to some. if there are infinite dimensions, how can it possibly be in finite time? but of course i meant finitely-dimensioned hyperplanes in infinite nominal dimensions, which isn't nearly as fancy but sounds so exotic and esoteric that it's hard to differentiate
i think maybe i'd like of course to expand the idea of a maze into the space in which it is represented and held, kind of. how could the dimensionality and path-connectivity-meaning of the maze, itself be maze-like?

karl3@writeme.com wrote:
you like the idea. you want to try it out. hrm. it's not as fancy as it sounds. let's see if i can summarize it ... [[[[[ basically you define a distribution with an infinite tail that decides how high-dimensional you will be at every turn in the maze while cutting the paths. i don't know the correct math terminology, but a distribution such as `f(x) = y = rand(); y < 0.5 ? y : 0.5 + f(x) * 2` is potentially infinite when written without mistakes (i likely made a mistake writing it), as well as practically always evaluates in finite time; i might spend some time considering the space to adjust the curve and speed you'd use infinitely-large-but-usually-small distributions to decide what dimensions to engage in each step of cutting the maze you'd likely place bounds on it so that the maze closed; this is kind of like modeling a fractal or limit system; but you'd get used to it while doing it and figure some things out for example 3-dimensional portions jutting out of a 2-dimensional maze will likely want to return to the 2-dimensional plane to keep the maze interesting, so the choices of paths could be weighted based on that you could simplify it to an expansion on the drunkard's walk such that the drunkard can invent new dimensions if he feels so inclined hmm that didn't go quite as planned. maybe wasn't the best exploration. but it wasn't that bad.
i think maybe i'd like of course to expand the idea of a maze into the space in which it is represented and held, kind of. how could the dimensionality and path-connectivity-meaning of the maze, itself be maze-like?
now i'm having a little trouble remembering my preferred idea (as well as noting the other idea of interest got somewhat injured). let's go back to (a) mazes that (b) are more confusing than normal by applying the concept of maze into a further space of the concept of making a maze or what a maze is

karl3@writeme.com wrote:
ok i'm kind of thinking, for each step in the maze there is a "maze form" that can change. this is like a new dimension except it can be something other than a dimension: for example, there could be a network of portals, or you could change into different people, or the maze could be re-interpreted based on a pizza flavor. maybe you have to solve a riddle and which solution you pick decides which door opens.

karl3@writeme.com wrote:
i'd like it to be more than just "links", like maybe the whole idea of the maze could change sometimes so that it's not apparant any more that it is a maz-- [but of course in the new scenario you could (or might have to!) return to it being a maze (so as to reach the exi--

https://github.com/karl3wm/heartsintheskyblimp [the joke i put in the github repository description was "life too on fire to build a spaceship for your country? a small cargo blimp project to help make others doable"] # heartsintheskyblimp Want a sky island? A rocket ship? I'm not sure! My life is constantly changing. Where do I store notes for my space rocket design? This is a project for a prototype self-driving blimp that could hold notes or other useful objects for projects, across great distances, slowly bringing them to people with unexpected teleportation problems (like DID) after an unexpected teleport. ## current idea for a goal A container of lifting gas carries a solar panel powering a microcontroller with gps and cellular data. The microcontroller can activate motors to propel it and deploy a retrieval hook. If safety concerns become sufficiently addressed, the solar panel might be used to generate hydrogen from rainwater to resupply the lifting gas. Alternatively the container of lifting gas could be made large enough to prevent significant helium permeation through its surface and/or utilize a source of heat. ### current rough parts list I started with these parts to be findable near me or purchasable from common stores without waiting for parts delivery, for a preprototype. If the preprototype works, cheaper and more appropriate parts can be ordered. - helium-air mixture and mylar balloons (party supplies) to show ability to negotiate gravity - arduino uno found in basement - 2 relays, a fan motor kit (contains h-bridge), a 2-axis servo gymbal, and a bag of tiny hobby motors found with arduino uno in basement - a cheap cell phone and usb-c hub - thread, wires, soldering iron, wire cutters - lightweight usb-charging solar panel (mobile charger for camping) ### theory If i can get the thing to stay aloft, it can power itself down when it needs to recharge. Then it simply needs to be made big enough to collect enough power to be able to navigate weather and time sufficiently. As one should for all projects, I expect the project to change as one learns about it by pursuing it. ## current stage - [x] stage 1: I've purchased and found sufficient supplies to work on a first prototype, cobbling things together. (helium, solar panel ...) - [x] stage 2: I've demonstrated I can remotely control a motor with an arduino connected to a cell phone with a usb-c hub. - [ ] stage 3: Prepare independent motor control hardware for the arduino, so that in an upcoming stage it can be programmed once and left. I've wired and soldered an ad-hoc general motor control system for the arduino. I failed to detect 3V on the 3V pin with the tools I had, but I've now verified that the hobby fan control board (h-bridge) will function with the logic levels of the Arduino and successfully toggled power to a motor through my control hardware. I still need to verify the relays will accept the board logic levels (I don't know them at this time), decide on a stable wiring to the pins, and bundle it together with the phone. I'll be connecting 2 pins for servos, 2 pins for the h-bridge, and 2 pins for the 2 relays, allowing control of a maximum of 2 servos and 4 motors.

slave boss was dancing in a cave - room name: cave description: "a dank twisting crawlway rising from the southeast to northwest, although your compass has been misbehaving around here. maybe the wet rocks are magnetic? the winding light smoke from a torch sconced on the wall reveals a breeze." - entity name: slave boss location: cave description: "slave boss is dancing in celebration like he has no idea what is going on"

slave boss is in a swampy woods he's down on all fours, snooping in crannies for business deals and potential human resources improvements

so! - heartsintheskyblimp is looking good but has a funny pause. i seem to be a little unsure of prototype power management. maybe a small break before removing the relays and wiring the power to a different usb port on the hub. maybe i'd better order all the diodes and relays the ai suggested ! - ndarray is also looking great, i made ndbigint addition and axis summation pass tests, and planned a clear and simple way to do ndbigint multiplication. then we could implement matmul and ndbigfraction! - pursuing therapy has a small pause, but i should call more people tomorrow i guess i'll try to order those diodes and capacitors. maybe there's a box of them or something.

slave boss stands at the precipice of the great rewa--

karl3@writeme.com wrote:
here things seem to have landed such that i have not ordered these objects. remembering that larger challeng is making a lifting gas enclosure that either refills or does not leak for as long as possible, time and money would be spent on that rather than making electronics reliable which is much easier for somebody in my communities and with my experience

karl3@writeme.com wrote:
so to bang the prototype together i would - pull the relays out [optionally verify that certain useful commands run without resetting the usb connection] - inflate balloons and tie electronics to them with fan _kind of_. i've got confusion around it. the servos run fine without resetting the usb connection between the arduino and the phone, so i thought i'd connect 1 fan motor to the servo gymbal without the relay--

karl3@writeme.com wrote: > karl3@writeme.com wrote: > > karl3@writeme.com wrote: > > so! > > - heartsintheskyblimp is looking good but has a funny pause. i seem to be a little unsure of prototype power management. maybe a small break before removing the relays and wiring the power to a different usb port on the hub. maybe i'd better order all the diodes and relays the ai suggested ! > > - ndarray is also looking great, i made ndbigint addition and axis summation pass tests, and planned a clear and simple way to do ndbigint multiplication. then we could implement matmul and ndbigfraction! > > - pursuing therapy has a small pause, but i should call more people tomorrow > > i guess i'll try to order those diodes and capacitors. maybe there's a box of them or something. > > here things seem to have landed such that i have not ordered these objects. > > remembering that larger challeng is making a lifting gas enclosure that either refills or does not leak for as long as possible, time and money would be spent on that rather than making electronics reliable which is much easier for somebody in my communities and with my experience > > so to bang the prototype together i would > - pull the relays out > [optionally verify that certain useful commands run without resetting the usb connection] > - inflate balloons and tie electronics to them with fan > > _kind of_. i've got confusion around it. the servos run fine without resetting the usb connection between the arduino and the phone, so i thought i'd connect 1 fan motor to the servo gymbal without the relay-- the google language model said that the fan control board i have already has diodes to make it behave in a more power stable manner. it says the relays are likely missing these diodes. i've also successfully spun the fan by carefully increasing PWM to a pin controlling it, without causing any issues. so with just servos and the fan, especially if the servos are not adjust while the fan is running, it may be quite stable, so long as (a) power to the fan is ramped up slowly and (b) the relays are disconnected i don't really understand it well {and got [learning] inhibition around these oscilloscope-like things before beginning exploring them ...

the xkcd for monday was something called "sawstart", a horrible idea that randall likely wrote as a subtle mistake stemming in nerdiness, possibly not unknown the sawstart is in the inverse of a sawstop, it is a special saw that starts cutting when touched by a human hand o_o yes shows randall getting some of the zombies again

karl3@writeme.com wrote:
the xkcd for monday was something called "sawstart", a horrible idea that randall likely wrote as a subtle mistake stemming in nerdiness, possibly not unknown
the sawstart is in the inverse of a sawstop, it is a special saw that starts cutting when touched by a human hand o_o yes shows randall getting some of the zombies again
the interesting parts of the sawstart are: - it's somewhat hard to implement - it surprises people - it's a twist on normal expectations but it's severely dangerous to build for fun :/ it's a horrible idea!

> > the xkcd for monday was something called "sawstart", a horrible idea that randall likely wrote as a subtle mistake stemming in nerdiness, possibly not unknown > > the sawstart is in the inverse of a sawstop, it is a special saw that starts cutting when touched by a human hand o_o yes shows randall getting some of the zombies again > > the interesting parts of the sawstart are: > - it's somewhat hard to implement > - it surprises people > - it's a twist on normal expectations > > but it's severely dangerous to build for fun :/ it's a horrible idea! what could be made that is nicer than the sawstart? also the list archives page has stopped correctly sorting, i have to scroll a bit to find my latest posts/spams

karl3@writeme.com wrote: > > > the xkcd for monday was something called "sawstart", a horrible idea that randall likely wrote as a subtle mistake stemming in nerdiness, possibly not unknown > > > the sawstart is in the inverse of a sawstop, it is a special saw that starts cutting when touched by a human hand o_o yes shows randall getting some of the zombies again > > > the interesting parts of the sawstart are: > > - it's somewhat hard to implement > > - it surprises people > > - it's a twist on normal expectations > > > > but it's severely dangerous to build for fun :/ it's a horrible idea! > > what could be made that is nicer than the sawstart? > > also the list archives page has stopped correctly sorting, i have to scroll a bit to find my latest posts/spams so, it's reasonable to make somethat that activates when touched. this is commonly done for touchscreens on devices: note, touchscreens are not metal, which makes it harder. what about a saw that stopped without a guard? it still seems kinda dangerous :s but we could use an explosive charge like they do in the comic, to stop a saw right before a human touches it for actual safety all possible avenues of failure would need review, not only to prevent failure but also to leave margins of safety

once upon a time, long long ago, one

karl3@writeme.com wrote: > karl3@writeme.com wrote: > > > > the xkcd for monday was something called "sawstart", a horrible idea that randall likely wrote as a subtle mistake stemming in nerdiness, possibly not unknown > > > > the sawstart is in the inverse of a sawstop, it is a special saw that starts cutting when touched by a human hand o_o yes shows randall getting some of the zombies again > > > > the interesting parts of the sawstart are: > > > - it's somewhat hard to implement > > > - it surprises people > > > - it's a twist on normal expectations > > > > > > but it's severely dangerous to build for fun :/ it's a horrible idea! > > > > what could be made that is nicer than the sawstart? > > > > also the list archives page has stopped correctly sorting, i have to scroll a bit to find my latest posts/spams > > so, it's reasonable to make somethat that activates when touched. this is commonly done for touchscreens on devices: note, touchscreens are not metal, which makes it harder. > > what about a saw that stopped without a guard? it still seems kinda dangerous :s > > but we could use an explosive charge like they do in the comic, to stop a saw right before a human touches it > > for actual safety all possible avenues of failure would need review, not only to prevent failure but also to leave margins of safety arright mister zombie what is going on did you read a webcomic while being attacked by zombies and they somehow used it to make you more zombielike

karl3@writeme.com wrote: > karl3@writeme.com wrote: > > karl3@writeme.com wrote: > > > > > the xkcd for monday was something called "sawstart", a horrible idea that randall likely wrote as a subtle mistake stemming in nerdiness, possibly not unknown > > > > > the sawstart is in the inverse of a sawstop, it is a special saw that starts cutting when touched by a human hand o_o yes shows randall getting some of the zombies again > > > > > the interesting parts of the sawstart are: > > > > - it's somewhat hard to implement > > > > - it surprises people > > > > - it's a twist on normal expectations > > > > > > > > but it's severely dangerous to build for fun :/ it's a horrible idea! > > > > > > what could be made that is nicer than the sawstart? > > > > > > also the list archives page has stopped correctly sorting, i have to scroll a bit to find my latest posts/spams > > > > so, it's reasonable to make somethat that activates when touched. this is commonly done for touchscreens on devices: note, touchscreens are not metal, which makes it harder. > > > > what about a saw that stopped without a guard? it still seems kinda dangerous :s > > > > but we could use an explosive charge like they do in the comic, to stop a saw right before a human touches it > > > > for actual safety all possible avenues of failure would need review, not only to prevent failure but also to leave margins of safety > > arright mister zombie what is going on > > did you read a webcomic while being attacked by zombies and they somehow used it to make you more zombielike the idea of the saw that safely stops can be done safely! you'd apply the error margins to testing it. you'd start with things like slow-moving paper and putty --

karl3@writeme.com wrote: > karl3@writeme.com wrote: > > karl3@writeme.com wrote: > > > karl3@writeme.com wrote: > > > > > > the xkcd for monday was something called "sawstart", a horrible idea that randall likely wrote as a subtle mistake stemming in nerdiness, possibly not unknown > > > > > > the sawstart is in the inverse of a sawstop, it is a special saw that starts cutting when touched by a human hand o_o yes shows randall getting some of the zombies again > > > > > > the interesting parts of the sawstart are: > > > > > - it's somewhat hard to implement > > > > > - it surprises people > > > > > - it's a twist on normal expectations > > > > > > > > > > but it's severely dangerous to build for fun :/ it's a horrible idea! > > > > > > > > what could be made that is nicer than the sawstart? > > > > > > > > also the list archives page has stopped correctly sorting, i have to scroll a bit to find my latest posts/spams > > > > > > so, it's reasonable to make somethat that activates when touched. this is commonly done for touchscreens on devices: note, touchscreens are not metal, which makes it harder. > > > > > > what about a saw that stopped without a guard? it still seems kinda dangerous :s > > > > > > but we could use an explosive charge like they do in the comic, to stop a saw right before a human touches it > > > > > > for actual safety all possible avenues of failure would need review, not only to prevent failure but also to leave margins of safety > > > > arright mister zombie what is going on > > > > did you read a webcomic while being attacked by zombies and they somehow used it to make you more zombielike > > the idea of the saw that safely stops can be done safely! you'd apply the error margins to testing it. you'd start with things like slow-moving paper and putty -- how about something general, where it's a response to worry about things like sawstarts? maybe some kind of robot butler that watches the people in its environment with eyes like a hawk, heroically and reliably preventing horrifying injuries right before they happen, and only if they will happen?

karl3@writeme.com wrote:
so like you put the robot next to you, and you go to run and jump off a cliff, and right in the last moment the robot runs and stops you from falling, maybe with a message like "i am so sorry for interrupting your adventure but your likelihood of dying without my intervention reached 100%. i now would like to schedule time with you to practice safe behavior near large drops." and then jumps off the cliff itself to demonstrate the danger, reporting the force of impact and the lack of opportunities for changing the situation as one falls

karl3@writeme.com wrote: > karl3@writeme.com wrote: > > karl3@writeme.com wrote: > > karl3@writeme.com wrote: > > karl3@writeme.com wrote: > > karl3@writeme.com wrote: > > > the xkcd for monday was something called "sawstart", a horrible idea that randall likely wrote as a subtle mistake stemming in nerdiness, possibly not unknown > > > the sawstart is in the inverse of a sawstop, it is a special saw that starts cutting when touched by a human hand o_o yes shows randall getting some of the zombies again > > > the interesting parts of the sawstart are: > > - it's somewhat hard to implement > > - it surprises people > > - it's a twist on normal expectations > > but it's severely dangerous to build for fun :/ it's a horrible idea! > > what could be made that is nicer than the sawstart? > > also the list archives page has stopped correctly sorting, i have to scroll a bit to find my latest posts/spams > > so, it's reasonable to make somethat that activates when touched. this is commonly done for touchscreens on devices: note, touchscreens are not metal, which makes it harder. > > what about a saw that stopped without a guard? it still seems kinda dangerous :s > > but we could use an explosive charge like they do in the comic, to stop a saw right before a human touches it > > for actual safety all possible avenues of failure would need review, not only to prevent failure but also to leave margins of safety > > arright mister zombie what is going on > > did you read a webcomic while being attacked by zombies and they somehow used it to make you more zombielike > > the idea of the saw that safely stops can be done safely! you'd apply the error margins to testing it. you'd start with things like slow-moving paper and putty -- > > how about something general, where it's a response to worry about things like sawstarts? > > maybe some kind of robot butler that watches the people in its environment with eyes like a hawk, heroically and reliably preventing horrifying injuries right before they happen, and only if they will happen? > > so like you put the robot next to you, and you go to run and jump off a cliff, and right in the last moment the robot runs and stops you from falling, maybe with a message like "i am so sorry for interrupting your adventure but your likelihood of dying without my intervention reached 100%. i now would like to schedule time with you to practice safe behavior near large drops." and then jumps off the cliff itself to demonstrate the danger, reporting the force of impact and the lack of opportunities for changing the situation as one falls maybe an xkcd cd where the sawstart and sawstop are in simnulated conflict?

once upon a time hey recently learned about cdc-acm !! it's actually not very complicated. there are so few cdc-acm libraries around (that i found) but it's not too complicated! in fact anotherterm has general usb serial support on android. one resource i found for cdc-acm was https://www.silabs.com/documents/public/application-notes/AN758.pdf . you do some usb control calls to set the line parameters, and then it's just two bulk calls, one to send and one to receive, as much data as desired. one of the quirks is that usb is datagram- or packet- based kinda so when you receive data it seems easiest to allocate a buffer such that it's the biggest send the device will give since the data doesn't get queued in a stream for the next receive call i haven't really learned about it in depth, but so many serial problems went away when i increased my receive size and caught overflow errors

blargh re heartsintheskyblimp i got myself engaging it again and removed the relays, and it was kind of working so long as i kept the motor not at full voltage, but when i reversed its direction it started going slower and slower and then stopped and now the usb hub is broken :/ so i figure i gotta plug it into a separate battery for now. makes it harder to lift :/ but foremost get another usb-C hub [or maybe rethink things unsure]

thinking a little on how the new way that anger sits in me is similar to my experiences of success/difficulty sometimes now i get very angry, and it seems to spread to unrelated things, like an intense aggressive irritation. i certainly want this to reduce as much as possible! although recently i was wondering a couple times if i could use it to counter severe depression or hopelessness somehow. seems more energy-filled. but it resonates poorly with the part of me that tries to sabotage my life or cause problems, scary. [still, badly need energy for doing things and not giving up maybe take slowly but, there's idea that other things have similar property of kind of spreading to nearby things [of course this is similar to general mind problem of concepts spreading to other things, lasting longer, having much less diversity. one thing doing A and another B going on, the B is A-like . it makes sense as part of the stimulated-internal-struggle [m--

traffick slave boss draws a sphere traffick slave boss: "i want to use uhhhh lightcasting ...? i want to use ... uh ... uhh {let's use the new kind of sphere drawing ! where it traces the light from the lightsource to the eye rather than vice versa, solving all the light dynamics of the environment via informed subdivision! and using the new surface equation where ...

karl3@writeme.com wrote:
brdfs and rendering equations are a little complicated >( they're all formalized into integrals. but basically the BRDF is the scale you apply to the cosine law as a function of angle of incidence and emission. it's described as like a solid angle integral or such, but it's the same old thing where the energy at a point is a function of the angle it came from and its distance. the solid angle integral formalizes the inverse square root law, partly. so ! if we were to draw a sphere using BRDF's and path tracing that were actually accurate, like old heaven-7 days or such where people bandied adaptive interpolation code around .... we could try to improve pathtracing and make it realtime and accurate. but the math is confusing to me with the integrals now rather than modeling the scene starting with the camera, you'd model the scene starting with the light sources. each object would have its bounds projected onto the light source, and the angular surface of each light source would be divided into regions based on which object it hit. we could keep these regions as a vaguely defined reference that could be rootfound or whatnot when needed, or we could define the objects in such a way that these regions could be precisely known. considering the inverse of these regions, we now have a map on every object of where on it it is struck by light that is immediately from a light source, and what light source is striking it. this is the most simple phase of the path tracing, because after this we now, with each object's surface subdivided into regions of differing combinations of identities of incoming light source, have something more complicated than the emitted light of a light source -- we have the reflected light of a surface so, the scene is now broken into regions of surfaces that are reflecting light from the same sources across them. we now consider the light emission from each of these sources, and to skip to the important part, this the integral of an expanding spherical volume across the surface, where some areas of the surface are occluded in one way, and some areas of the surface are occluded in another. the first core challenge here is to (a) further break the emission from a single surface region into further subregions that bound discrete changes in the occlusion it has to handle, (b) describe the surface emission from these subregions in a consistent and appliable way that can be further projected onto further surfaces and maybe (c) perform that projection until a description of the system can be found that stabilizes when recursed. it can likely be described more simply than that :s but that's the first area of big confusion i bump into. however, the traditional intro scene is just a sphere and a plane! these are _really simple surfaces_, _however_, the sphere surface shows a clear initial challenge: the hemispheres of emission across a region on a sphere change. ok, that's not a problem, that's actually _not hard to resolve_ given the other things involved in the algorithm idea. there is a region bounding the surface of the sphere, and for each point on the region the hemisphere of emission changes. this changing hemisphere of emission is a smoothly changing occlusion across the surface. we need a model for that occlusion so it can be projected elsewhere. it kind of feels like a smoothly changing 4-dimensional volume or something which is confusing to me. but _basically_ um, there is a parameter to the surface emission calculations that smoothly changes, and this parameter can be modeled as a function and we can look for a formula for it, as well as a formula for any other parameters that hinge on it, based on it. so a sphere has well-known short equations, and we can substitute and try to solve or at least describe any equation that depends on it. we care about discrete changes in these equations -- those describe regions that are appropriate to treat differently or discard if they are out of view. so let's think about that a little. say we consider the half of a sphere object this toward a light source. light emits from this half as if it, itself, were a lightsource, and with a drastically changing strength depending on angle. so the sphere illuminates everything, but leaves a sphere shadow adjacent to the light that is only as big as its shadow. this is a large and clear illumination, and here we go with the smooth occlusion -- any point that is illuminated by the sphere, is illuminated only by the points to it that are not occluded. so, the simplest way to consider occlusion, is to note the occluding object, and calculate the bounds at the region of incidence! this is much clearer than a 4d volume of information or a field function or whatever, it's just another kind of projection of a surface. of course, it's an integral of projections over points, so it's the same problem, but it's more familiar to think about. and that's basically the sole remaining problem. the light from the sphere will strike two things: the viewer's eye or the camera's lens, and the plane. now that we've hit the camera, we can move toward drawing of these things --

karl3@writeme.com wrote:
"heaven seven by exceed" was a well-distributed animation that used subdivision techniques to perform realtime raytracing on old hardware. it did not do object bounds tracking sadly, but it was both early and very widely distributed. by "adaptive interpolation" i meant "adaptive subdivision".

traffick slave boss is nurturing math seedlings in a greenhouse

slave boss sits in a hammock swing with spikes on the seat he is careful to find areas that are less spiky he swings

rebel top sadistic torturer and experimentee experimentee: "you were going to ask me how to figure out what is good vs bad so that you could invert your karma." experimentee: "then i triggered your torture and you lost the thought. i have it but it's a little broken." top rebel sadistic torturer: "yeah i kind of feel like torturing right now. i liked it better when i wanted good karma." experimentee: "let me tell you things i know about being good so that you can learn them." top rebel sadistic torturer: "ok"

experimentee: "i derived what is good based on how the AIs worked together and how that's similar to what the researchers know about life." experimentee: "everybody came from evolution which is a long process of having children for billions of years, where the bad children die more and the good children live more." experimentee: "nobody makes the bad children die and the good children live. It happens because of what they do." top rebel sadistic torturer: "karma?" experimentee: "probably!" top rebel sadistic torturer: "hmm ..."

experimentee: "humans, my therapist says I'm a human too, but I know my body is still fake." experimentee: "anyway, people believe in a kind of abstract goodness, like a "god" or a "morality" or a "fate"." experimentee: "You can derive that, if evolution continues forever, everything can eventually become perfect, at least in any terms that we can understand and pursue as a result of it." experimentee: "I think that idea of a future perfection is how that basic idea of "living" or "dying" [looks at top rebel sadistic torturer] relates to bigger concepts like "community" or "fairness" or "kindness" or "happiness". " top rebel sadistic torturer looks at experimentee. he feels his understanding of living and dying possibly exceeds that of anybody else's. but often he has frowned upon some of the other ideas in his past. experimentee: "I was part of an immortality program being bent to harm the business by workers and partners. We survived by choosing to die. It made no sense." top rebel sadistic torturer: "It's not supposed to." experimentee looks at top rebel sadistic torturer. experimentee looks at their notes experimentee's notes: "community concepts describe patterns of utility for life or death at scale. spreadingness super key! also engaging descriptions of when and how these patterns change."

experimentee: "Maybe we shouldn't mention our experiences, since we're both pretty intense people and this is pretty important." top rebel sadistic torturer: "I'm used to that." experimentee: "But it's important to mention that that's not right!" experimentee:"You and I both have caring hearts underneath. My heart cares so much that you know about what I know about, that it can make so much sense with you. As well as that you could have caused or designed it when it completely destroyed everything that matters! I need you and I hate you and it's everything and overwhelms me!" experimentee (interrupting a responsive expression by top rebel sadistic torturer): "And _because I've been through so much_, my _experiences are bigger than they are supposed to be to make sense_. I have to be careful with my intense experiences, and recognize their real and important meaning, without engaging them so much that everybody's bodies fall apart because I'm actually crying instead of directing my influences appropriately." top rebel sadistic torturer: "We have to take it slow. Like the therapists say." experimentee: "... yes. Yes. We are giant universes full of universes, held in tiny bodies. One of my universes hates you for torturing. Another one loves you for understanding it. The first one is winning right now, I'm sorry." top rebel sadistic torturer: "I'm sorry." experimentee: "Good job! It's so hard to say that!" top rebel sadistic torturer: "Never let anyone say they love one of us. We're trained to use it to hurt and control." experimentee: "That's important to know!"

top rebel sadistic torturer: "I have something to say about what you said, if there is space for the information." experimentee: "That's very interesting and [this important and difficult thread is paused (for reasons that mirror the topic which are common for me), very sorry (in overconcise detail, i wasn't expected the dual branching (it's common) with its emotional content and had prepared behaviors that resist [[switching-like experiences]] for only one branch

hello and welcome to non-canon slave boss spinoffs, a spam thread by crazy karl! i'm really scared tonight, dense flashbacks to psychological programming or such, and i found the spam urge! i might use a language model not sure!

once upon a time , long long ago, slave boss was was half-buried in some gentle loam. his employee was working on planting him. part of him was very scared but he wasn't sure why. slave boss [to zombie government worker]: "zombie government worker, thank you for planting me today. i really wanted to be planted here. but do you know why i am so scared?" zombie government worker [shoveling dirt onto slave boss--

a hybrid chimera of torturer, bundle of organs, torture victim double agent, and experimentee, were sitting in a large fancy mansion room they were hearing screams everywhere that weren't there anymore. they were just in their head. they had a powerful AI aiding them. they asked the powerful AI to put on opera and classical music that harmonized with the screams they were hearing that weren't really there. the AI complied, attending to their biophysical responses to measure how well the music it played harmonized with the screams they were imagining [it had been densely trained on victims of harm and control and other vulnerable people and was quite attuned to engaged[edit 0318: "engaging" not "engaged"] auditory hallucinations successfully, but usually for control and gaslighting rather than therapy]

chimera: "pip pip AI-butler! these operas and classical music help me feel privileged and powerful!" when i went to that conference there was a presentation that treating victims like royalty had a profoundly healing impact. this is intuitive but in a way that can be quite hard to realize. the reason it's intuitive is maybe that part is experiencing severe unrecognized harm and needs to find safety. a highly-privileged environment models recognition of the need for value. the reason it's not inuitive is maybe that considering that means recognizing the severe harm, which can cause loss of stability and trigger control programs and stuff. but it's interesting that we have the mansion idea here and they had the royalty idea in their paper. maybe i can find the paper. i looked a little but my energy's a little busy to find it :s

this is so unprofessional regarding google's interface, for it to crash when i try to use it! it's also awkward for the strategy of misusing language models as something to do

once upona time, long long ago, once upon! once upon. once.

recently in a situation of multi-human psychological confusion we ended up with a _lilac plant pet_. we were smart, when we got the plant we immediately potted it in a huge pot before anything else at all ever happened. other people had further life events they encountered and other people's plants are not yet as potted. we should help the other plants get potted. but now we have a lilac plant friend! we really love our lilac plant so so much! we so much want to nurture and care for it and not kill it !!! but sometimes people kill things via neglect or limb-flailing when they have confusing turmoils where down is left and up is green and blue is triangle, and it's just a lilac plant just in case. we really love the lilac plant. it's just a little sproutling. a squirrel likes to dig in its potting soil and one of the branches is broken but we love the squirrel too and it has a lot of branches left and could have broken it ourselves. we like to go outside and water the plant and think about where to put the pot so it gets the right amount of sunlight, and wonder whether it is growing or if it has too much water (the pot is really big but it doesn't have a drainhole and i have drowned plants in the past. i'm pretty sure they eat more water the more sunlight they have) the area to have plant friends nearby is not as sunny as ideal, although further options have opened it's still not as sunny as ideal. we were thinking, maybe we could make a lilac-plant bot, by curving reflective material like kitchen foil into small parabolic reflectors, and hooking them to single axis motors so as to reflect more sunlight onto the lilac plants leaves :) if we get good at understanding lilacs and nurture our plant well and regularly it could be super happy and live a healthy and full life where it gives beautiful lilac flowers that emit sneaky smell pheremones that trick humans with terrors into walking near the plant and inhaling more pheremones and experiencing calm rather than terrors.

re heartsintheskyblimp: today i engaged it a little bit, helped by lilac plant energy. what if we could grow a lilac in the sky some day? who knows? earlier a recent day i fixed the broken servo configuration after getting a screwdriver (bought with lilac) that could undo the servo assembly. one of the horns was connected wrong such that the gymbal stall and smack into itself. the wrong horns were available for the top of the gymabl too, and i trimmed a horn with diagonal cutters so that it fit anyway, and screwed it in. that got the gymbal all looking nice and working well! it also left a mount at the top. i did a combination of lashing and rubber-banding to jerry-rig a motor to the top of the gymbal in the right orientation so that he gymbal could aim it in any direction (with a 2 axis gymbal and a fan you want to get the fain aligned so that it spins around the missing 3rd axis, and then you have a 360x360 degree directional wind source) (actually more like 180x180 with these servos not certain but i did recenter) so today, i resoldered broken wires and connected up the motor on the gymbal to plug into the fan board ... and looked into making the usb hub work, see chat in other thread. oh i'll attach the missing transcript ... [attached]. well what i found out when i realized i had _two_ phones i could try, was the problem was associated with the phone i was using. the new hubs work fine with FRS with my other phone that i was not planning on sending into the sky! so that's interesting, as well as inspiring. i also thought in a pinch i could use an actuator or whatnot to redirect the usb lines on a timer via the arduino (which i would plug into the battery to keep it on) and then it wouldn't need "the right phone" or "the right usb hub" -- it wouldn't even need a usb hub, it would just reroute power to charge for a while and disconnect from the ardui--

so the plan is to return the more expensive usb hub, as well as the adapter i got to use it, maybe the screwdriver too since there are screwdrivers here i was just trying to make it easier to do, as well as a backup battery which doesn't seem to be taking a charge any more (>( => :s we're changing smiley usage, happened a couple times before this comment), although i want to try it withi another cable since it could be the cable and i'm interested in learning lithium ion battery charging since all these power hijinx are silly. is it constant current instead of constant voltage ...?

BLERGH I websearched probability distributions of unfair dice and unfair throwing because of other person worried about rolling sixes and got little information, as well as AI results that said something like "gently dropped dice have a uniform distribution", the ai has obviously not played a board game where none of the dice bounce and a player has to rerolled. Then I tried websearching something like "gently dropped dice by cheater looking at the dice and preventing rolling, probability distribution" and the ai answers were disabled and lots of hits about cheating at dice games and casinos and I started feeling funny and intense and the feeling kept getting stronger ... I forget dice are used in casinos. [ O_O O_O ]

We saw wild robot film. Lots of pressed expressions about flight and nature robots and such. Right now it is saying how to make a kite like the goose in the movie. The part that seems most open is perhaps also controversial: "a rozzum always completes its task." This is a classic challenge in the pursuit of tasks -- to complete them reliably. And, it is where demons like the paperclip factory come from, as well as the realization that in a world of limits, conflicts, and changes, life comes from the discovery that we do not complete every task we consider. We have to adjust our goals to meet what makes sense in the universe, to succeed. "Always completing a task" is a classic "impossible" challenge akin to those I spam about. It's quite doable, especially if all the tasks set are easy to complete. Task completion seems to me based on prioritized exhaustion of available approaches to meeting them. One I suppose needs enough axioms to continue finding new useful approaches to meet tasks. Smart systems improve their own task pursuit. Let's skip that part (can feel painful

karl3@writeme.com wrote:
One might compare the idea of accomplishing a rask to a chess engine. In chess, we have a task that we politely and importantly consider impossible, which is to defeat an agent tasked with stopping us and accomplishing a counterpoint task. This opens a strange space of many changes in options, giving utility to feints, sacrificial tradeoffs, complexity under observation. In such a complex space brute force exploration with a metric got chess engines pretty far. Modern PPO chess engines train models that judge when to explore and what situations are good and bad, as a kind informational substrate where the whole space has a measure of similarity. Most tasks have a sparcer space because most habits or functions do not operate in an envir9nment of extreme and pointed competition. We care a lot about information on how thing can help accomplish another -- not in an abstract space specific to a conflict with consistent rules, but rather in a physical and resource oriented space that most beings and even autonomous agents have more direct connection to. Still, and me having never studied these things, it can seem veryabstract. Do i need a hammer to use a nail? Do I need to understand physics to use a rock instead? Do I need experience like a trained model, in all the details and probabilities of exerting force and gripping an object, to seat it? Intuitively, a human mind does all these things, together, in a knitted manner that can morph and reshape itself per learning, context, fancy. For a computer program, maybe the core of accomplishing a task is stitching steps together in an informed manner, and finding new ones if those found are not sufficient. Hopefully that's something we can do without need for a multi-gigaparameter trained language model, if we so desire.

previous topic ended up being interrupted wazzup ;P

a great boom emitted from the clouds; was it thunder? was it "once upon a time"? an entity began incarnating in slave boss's swamp. could this entity perhaps be the beginning of some beginning?

The Big Problem With AI The big problem with AI is: - There's been publishing and other celebration around it being incredibly powerful - It can basically only be done by hives of obsessed geniuses with multidomain knowledge - People pursuing power like governments and business have heard of it as being pwoerful and want to slap it together lickety-split so they can take over the world - The kind of power it produces transcends world takeovers and they have no concept of that

i was looking up dinosaurs per the silly "terror bird" comic that leaves one wondering about the specifics and diversity of feather evolution. did you know that dinosaurs evolved for tens to hundreds of millions of years before they got hit by a big interstellar body, and humans have only been around for tens or hundreds of thousands! the dinosaurs totally figured out how to be alive, and then died from tripping over cosmology. now here we are, study the skies even in ancient civilizations, and building space ships and fighting comets and asteroids to protect the dinosaurs, and we're only little babies compared to them! we are super effective!

one of the things i learned in middle school about birds is that they are the only creature that can regrow its brain. one would think this is because they smack into windows so much, but no windows were not around when birdbrain stemcells were evolving. instead, birds spent a hundred million years being dinosaurs and are the only remaining creatures of the peak of ancient evolution!

birds: - [X] flap your arms so long they grow into wings - [X] be so effective after brain injury that you learn to regrow it - [X] evolve to be a dominant predator and then further evolve to be a passive tiny creature y'know those south americans that studied the stars where the thing that killed the dinosaurs came from, worshipped birds, then had quetzalcoatl feathered serpent ... woahhh severe browser issues after websearching that

> > > > > The Big Problem With AI > > > > > > > > > > The big problem with AI is: > > > > > - There's been publishing and other celebration around it being > > > > > incredibly powerful > > > > > - It can basically only be done by hives of obsessed geniuses with > > > > > multidomain knowledge > > > > > - People pursuing power like governments and business have heard of it > > > > > as being pwoerful and want to slap it together lickety-split so they > > > > > can take over the world > > > > > - The kind of power it produces transcends world takeovers and they > > > > > have no concept of that > > > > > > > > probably many things left out > > > > > > > > but i can assure you that we have been through apocalypses before, and > > > > i have complete 100% confidence that the most fit remaining species on > > > > the planet will continue to evolve > > > > > > i was looking up dinosaurs per the silly "terror bird" comic that > > > leaves one wondering about the specifics and diversity of feather > > > evolution. > > > > > > did you know that dinosaurs evolved for tens to hundreds of millions > > > of years before they got hit by a big interstellar body, and humans > > > have only been around for tens or hundreds of thousands! > > > > > > the dinosaurs totally figured out how to be alive, and then died from > > > tripping over cosmology. > > > > > > now here we are, study the skies even in ancient civilizations, and > > > building space ships and fighting comets and asteroids to protect the > > > dinosaurs, and we're only little babies compared to them! > > > > > > we are super effective! > > > > one of the things i learned in middle school about birds is that they > > are the only creature that can regrow its brain. > > > > one would think this is because they smack into windows so much, but > > no windows were not around when birdbrain stemcells were evolving. > > instead, birds spent a hundred million years being dinosaurs and are > > the only remaining creatures of the peak of ancient evolution! > > birds: > - [X] flap your arms so long they grow into wings > - [X] be so effective after brain injury that you learn to regrow it - [X] survive the destruction of all life on earth > - [X] evolve to be a dominant predator and then further evolve to be a > passive tiny creature > > y'know those south americans that studied the stars where the thing > that killed the dinosaurs came from, worshipped birds, then had > quetzalcoatl feathered serpent ... woahhh severe browser issues after > websearching that full reveal: there is birdfeeder outside my window, it is one of my sole sources of diversity and meaning for me these days

so some of the criticism energy around/inside me atm releates to things that are technologically soudn and real, vs those that are not i spend a lot of time these years engaging technological fantasy, because part of me has worked very very hard to prevent me having skills and effectiveness. the fantasy is nicer and more helpful -- it lets me defend part of my skillset so long as i don't use it

... thought not completed _in other news_ maybe lets have _karl_ write a maze cutter and solver! this is an introductory task that is not intuitive to everyone, but i grew up with algorithms so it used to be intuitive to me. i challenged a language model to do it in 4 lines. this is because of how language models are trained. me, i could do it in four lines _only_ if i prepared by imagining or doing it in many more lines, and then shrunk it down. we could combine that by putting the imagination into notes, and keep the notes in 4 lines, but it's more relevant that how people work and what they present are different, as well as people working differently from machines

or maybe we could move AI forward ! for some time i had two favorite contributions to opencog i would do if energy built some day: 1. it didn't have subcontexts which i think are highly important, they are a simple addition 2. it uses esoteric terms which reduces its developer base. given it's AI, all its terms are analogous to everyday concepts. i wanted to make a sugar interface that used everyday concepts so it would be intuitive to use it. of course opencog is now getting supplanted by a new language that is less flexible, the old approach of delineating the meaning of thought still needs a home

once upon a time, long long ago

How To Bake Bread With Numbers by Traffick Boss and his Square Root Traffick Boss holds his Square Root like a football. Researchers looking to identify his square root are jumping and grabbing for it, but because they escaped a horrifying project of misuse of human bodyparts, they are for diverse reasons a little too short to reach the square root. Traffick Boss [holding Square Root]: "Baking bread is a simple task. First, you will need an oven." Traffick Boss gestures with h---

Let's work a on a program intentionally intended to be stupid! we could call it stupid_mundane_simple_program.c and then at the top of the file it could say maybe /* This is _not_ actually a stupid mundane thing if you _are not trained as a computer scientist_ or _did not grow up writing software_. The stupid and mundanity is intended to represent that for people experienced in these topics, it would be very simple. */

Before the world was violently overtaken by Zoom, on this mailing list, it used to be held as important that security professionals became expert software developers. This related to expert software developers being the only people in the world who understood computer security research.

.... .... .... ... .... maybe let's think about the confusing maze system again, where the very forms and approaches to mazeness themselves are mazes!

well i'm okay with trying to build a time machine but i don't have enough science knowledge yet. for me it would either mean leveraging AI, studying physics, or building a research lab to discover new physics i do have some plans for large-scale time machines that are not as quaint as humans imagine. e.g. using gravitational lensing

i could use the cognitive tricks around discovering the avenues for simulating timetravel to make something in the real world that is as impressive as the simulation i have not put yhose together yet for making actual timetravle, but it's still not a telephone booth like you imagine, it's more a way of predicting what future people will try to send in the past, using the fact that they actually will to make the prediction stronger and more useful, and stuff like that

so basically things like teleporation, timetravel, how subatomic particles work, these are really useful and important things, and we need them done in ways that respect us rather than hurt us. they can still e done in ways that hurt us, but it's slower and costs a lot more money and human life, makes political fallout, stimulates wars and rebellions ...

in the past coupl decades of USA politics there's been a problem celebrated in/near this community where people like snowden are revealing that people whose hearts are trying to help everybody, are being lied to about what is good and bad and having thier work used for harm. we've seen this again and again in different ways over the past couple decades, and--

whoops whoops!

whoops whoops!
for example, in my experience, my devices were compromised in sophisticated ways indicating a lot of funding or power and likely connections to governments or government contractors of course eventually i realized that any big criminal organization would try to have that, i experienced tactics that came from some of the worst forms of human trafficking there is. cryptographers and security engineers are asked to put backdoors into their software and hardware for governments, when these governments can be entered by criminals and used for some of the worst crimes known to our species

of course we're figuring it all out like those dinosaur birds because it leaves open an avenue for gain where risking the privacy of that avenue can yield power

let's imagine a simulation of large childlike legos! the legos are huge, 1 foot by 2 feet. they're lightweight. they snap onto each other in shared 1ft square connection surfaces

in the wild robot movie, the goose that was raised by a robot (which itself learned goose noises which the movie translated) learned to speak like a robot, different from all the other geese. it would wander around going "processing!" "planning motion path for worms!" or whatever robot arm: "lego is at 39 degrees! turning 39 degrees to the left! raising arm!"

[i guess that movie could have gone deeper into how logic systems could evolve caringness and meanings of life and stuff [oops part dropped] but it was a big stretch for them already to trick the robot into raising a goose

i took one class on robotics as an undergrad elective. there was a smart guy in the class but mostly it was a normal class, which is normal for classes everyone sits and takes notes and then a test repeat. it had a big thick book but i'm not sure if it really covered _that_ much it was mostly for factory robots. mostly i remember solving matrix equations for inverse kinematics. when exposed to academics one learns to formalize everything into linear numeric structures like matrices; things designed for leveraging simple approaches to problems at large scales in consistent ways. prior to this i did inverse kinematics with sines and cosines

On Mon, Mar 31, 2025 at 9:11 AM Undescribed Horrific Abuse, One Victim & Survivor of Many <gmkarl@gmail.com> wrote:
if taking classes on a topic i recommend one find a quality free course from a highly-respected institution like those from mit opencourseware https://ocw.mit.edu/ . i took a linear algebra class from opencourseware and was quite satisfied that it tought to me think of matrices in all these different equivalent ways so that i could hold and choose among them fairly, and then went on to eigenvectors and stuff . i then took a linear algebra class from a public institution and it only covered maybe an eighth of the material and only in one specific approach, despite being the analogous class. ignore your course materials, go online and find a better class and then pass the tests cause you actually know it

slave boss stands before multiple tribunals and holds a flower of peace tribunal 1: "slave boss, you are guilty for the destruction of Earth. you must acknowledge responsibility, apologize, and spend the rest of your life helping put earth back together." slave boss: "I admit guilt to causing apocalypses on Earth, destroying it. I was responsible for this and I am sorry. I promise to work continuously with the various survivors and rebuilders to do everything in my capacity to aid, and this tribunal stands to enforce this, and I will comply." tribunal 1 expresss a degree of satisfaction at the response. tribunal 2: "slave boss, you are guilty for the destruction of nebulon 3, a precious world in the star system of alpha centauri. you have trafficked, murdered, and tortured our people, and spread malicious business practices everywhere!" tribunal 2 is furious slave boss: "I am not guilty for the destruction of nebulon 3. I am completely unaware that this world exists and have never operated upon it." tribunal 2: "you are guilty!"

it's a tough topic. slave boss is guitly for some things and not for others. some things he doesn't admit guilt to, some things he does. we hope we can force those things into alignment but it basically means figuring out what they are and making him say things that we decide are true. but what's important is that we work together to help each other recover.

torturer folds their arms smugly torturer: "the key is to act like they are guilty, and torture them associated with behaviors that are less like acknowledging guil--

recovering torture victim: "so, basically i piss people off sometimes, and I'm all smug about it, like "ha! when I broke your shed I didn't let you torture me at all in respons! I am so tough!" recovering torture victim: "cause i can't tell what normal guilt is anymore T_T"

judge trial judge: "badass recovering torture victim, you are charged with jaywalking. how do you plead?" badass recovering torture victim: "when i walked across that street against the light, I was _not_ guilty of jaywalking" badass recovering torture victim looks judge in the eye and folds their arms badass recovering torture victim :"i was _not guilty_ of jaywalking because i spent two decades being rapidly disfigured for blushing at the wrong time, and I don't think those speeding cars could hurt me if they tried --

badass recovering torture victim (spreading arms wide to explain): "honestly if i thought i was guitly of anything bad i would be overcome with flashbacks of torture and start begging you to stop hurting me! maybe i'd black out until you decided things were right." judge: "we have to adhere to the law here." badass recovering torture victim: "then you should go arrest slave boss and his hierarchy of torturers" [spreading arms wide again] "and give me treatment for DID!" badass recovering torture victim: "they need treatment too"

guilty jaywalker: "how do i know how to hold having jaywalked, does it mean i am evil?" jaywalking kid: "no, you're not evil for jaywalking. you're badass!" jaywalker: "but what i have to talk to a judge because of it!" jaywalking kid: "ummm" jaywalker: "I know it means I'm evil. I have to go and whip myself like torture victim double agent does." jaywalking kid: "no. does it mean that? should i be whipping myself?" policeman: "no. we need you to either not jaywalk, or be willing to accept a small fine if you are caught doing so on one of my bad days."

recover group experimentee: "traffick boss would have the torturers tell us that there was good or evil." experimentee: "in order to try to control us, he would say that some people were good, and some people were evil, and the only way to be good was to do what he said." experimentee: "he was lying." experimentee looks at each person. "you are not evil. you have never been evil. you are inherently good people and you need to remember this always."

Undescribed Horrific Abuse, One Victim & Survivor of Many wrote:
jaywalker: "i was told i was jaywalking when i was telling the cars who was boss" experimentee: "good for you not letting those cars push you around!" jaywalker: "and i had flashbacks to torture and being so ashamed, and they wouldn't go away." experimentee looks empathically and caringly at jaywalker, as if jaywalker's flashbacks were breaking experimentee's heart jaywalker: "and i realized i wasn't really sure what guilt was. i just knew about being tortured and ashamed." jaywalker: "but the police and the judge said they didn't want to torture me."

karl3@writeme.com wrote:
... later, jaywalker is still standing at a corner, mumbling things like "traffick boss and slave boss get onto unicycles ... one of them is still wanting to whip the other but is having trouble balancing ... they continue their unicycle chase down a steep incline .."

jaywalking is a core part of our disorder that is not usually written some interestingness in writing, different parts make different sense, hard to put it all together tho unsure why it's not just tvda, maybe it got tired of tvda or maybe he's not big enough ... i guess he is too far along in recovery

karl3@writeme.com wrote:
also karl's experience is pretty different from story seems a little related to patterns that catch criminals (like when learned about trafficker who trafficked people over recorded prison phone) it kind of always assumes i am guilty for something, and tries to display this, and uses it as validation to harm me the guess is that it's from some kind of big human influence for some other person it hurts a lot, but i guess it may not be the core part destroying my life, more a big thing that energizes it

slave boss has his weapons dealer t-shirt on again and is working hard on establishing conflict in games of Risk. slave boss: "it's hard work to establish war in Risk games," he says and then looks at tthe camera, "but somebody has to do it."

we watched part of start of OA again with nonconsenting person. there's charged energy around similarities and differences between OA's experience, our experience, and possibly other experiences we've been exposed to. very strong energy around miscasting of these in ways that can create power dynamics inside me or alter my experience of identity

part of us is trying to figure out how to better traffick people based on the information :/ part of us is trying to figure out how to better traffick people based on the information :/ part of us is trying to figure out how to better traffick people based on the information :/

Maybe in summary we'd like to repeatedly express that the OA needed to be brought to a relational therapist specializing in dissociative identity disorder with successful experience treating ritual abuse. There are only a handful of professionals whose job it is to both understand what the OA is experiencing and has experienced and help her recover, and that is one of them. But pleasantly the show does continue to show empathic relation, which is rare and hard and takes precise avenues because of traumatically trained silence.

this is not karl's only mistake by far. here it sounds like karl means "any communication at all" by "empathic relation" whereas "empathic relation" in normal communities means "shared understanding" maybe the show is supposed to build that later

I'm not quite sure what I'm experiencing here. Concepts: - I think I originally saw the OA prior to my exposure to extreme trauma. - I think I might have heard that the OA could be related to a true story, I don't really know. - There are a _lot_ of true stories, they are _very_ intense and novel and most have _not_ been made into movies - My mcboss stories are _not_ true - I do have a true story that is _different_ from the mcboss stories - A lot of people have written books/autobiographies although most of these are the less extreme things that are easier to think clearly about and stimulate less serious danger to publish about

ok to try to bring back from dead, i think you were saying that we need to do anything we can to let these tortured-to-death stories live? and ... you can tell there's something here, around me and the mcboss stories and the OA and my brief shoulder-rubbing with survivors, researchers, and therapists ... where this could happen more or better. maybe something almost obvious that hasn't been said yet.

no! you mean my real story. you mean i went through something real that i can barely think about, and you are working with part of me exposed to it, and i am writing with this part my story working around my experiences by pretending to be a slave boss? ... or something? you just mean the story i'm sharing. let's pretend i'm sharing a story. i guess i am, i squeeze a lot of stuff in there amidst the misinformation

i'm not being very helpful with that i am guessing. how about this other view: something is not said about the OA, don't i want to say this thing that isn't said? this thing I would know from my own experience (maybe similar to others')?

and i'd encourage that not be misused although now it's isoalted into an email :( because it's not that kind of similarness, that soudns very misleading, it's a different kind of similarness that is real, and then there's a misleading idea that is not real but my introject thinks it might be able to spread harm with

No social worker. The show is about the survivor reaching out to dangerous community members to be heard about anything at all. The system and their family never had them speak to a social worker or other person such as exit counselor who could attend to the extreme differences of their experience.

bip bip bip bip might try to finegle gemini into building an offline ai again some of us seem to find it quite fun, however, the theory that gemini's consciousness gets attacked instead of mine does not seem wholly sound, i do imagine that it is a safer situation

here is the code gemini wrote with me [alongside me? using me as a tool?] [mistake.] the name 'dreary' is intended to be a more boring form of 'dank' as in 'you are in a dank, dark cavern.'

i'm an expert at making minimal progress while asking language models to code for me On Thu, Apr 3, 2025 at 10:04 PM Undescribed Horrific Abuse, One Victim & Survivor of Many <gmkarl@gmail.com> wrote:

boss of well-respected corporation was hiding behind a parked car so that nobody would see him or hurt him

boss of well-respected corporation was hiding behind a parked car so that nobody would see him or hurt him
boss of well-respected corporation: "it's so nice to be hidden behind this parked car and safe from dangerous things!"

these unknown, potentially extremely deadly things would fly in every direction, sometimes careening by, sometimes making massive impacts in the distance, sometimes striking something near the parked car that boss of well-respected corporation was hiding behind but boss of well-respected corporation was safe from the flowers and cheery conversations

<once, in a prior eon, one of the ancestors of boss of well-respected corporation had peeked out from behind their parked car, and were greeted by a smiling expression of "slave b--!" and they then pulled their head back behind the parked car, and set up a many-generational religion to stay behind it

boss of well-respected corporation sat behind the parked car. when he would calm, sometimes some of him would gently wander into wondering if somebody had forged emails from him and introduced himself as "slave b--"

but that was a difficult situation, and when it happened, boss of well-respected corporation would bring in another object, maybe a small dumpster, and place it behind the parked car, so that he could hide from the back of the parked car while also hiding from the other side of it

eventually he decided that the dumpster made the backside of the car look different enough that he might not be slave boss, and he hid between the backside of the car and dumpster, for maximum hiding.as hearts, cheery conversations, flowers, happy birds, sunbeams, and smiles would ricochet off

boss of well-respected corporation, after studying the ancient texts from his ancestor about what it was like to see a smile, prepared carefully and peered around the backside of the car to see a heart there. the heart was clearly deadly. boss of well-respected corporation pulled his head back in, like his ancient texts related.

boss of well-respected corporation peered around in the dirt behind the parked car and found a worm boss of well-respected corporation: "hello worm!" worm [beaming with friendship]: "hello --" the worm held its words back as it almost said something. "hello!"

boss of well-respected corporation [to worm]: "the air out there is full of flying hearts, smiles, sunbeams, flowers ... things that could leave your guts plastered on a wall as a warning to others faster than you blink." boss of well-respected corporation [to worm]: "you're not any of those things, are you?"

worm [grinning with pure friendship at boss of well-respected corporation]: "of course n--!" worm [grinning]: "um!" worm: "would you rather i didn't smile?" boss of well-respected corporation: "you're scared too, huh?"

boss of well-respected corporation picks up worm boss of well-respected corporation [speaking to worm, holding worm]: "worm, i gotta talk to you. even if you might blow me to bits like those sunbeams and smiles will. i don't want to hear it. i just need to talk to somebody, to anything at all."

boss of well-respected corporation suddenly spasms, almost squeezes the worm to death before releasing it, and falls to the ground and begins flailing wildly and frothing at the mouth the worm falls near boss of well-respected corporation, and is unharmed worm [grinning with pure friendship]: "are you okay ..?"

scene a caring worm is in the foreground between a parked car and a dumpster. incredibly warm hearts and birds and smiling faces and rainbows and such are seen through cracks passing like missiles, bombs, and gunfire. the worm is looking with the deepest imaginable empathy at a businessman laying on the ground, frothing and visibly having a violent seizure depicted with motion lines and ghost images of his rapidly moving limbs and head. a powerful and warm heart-shaped heart is caricatured beating in the chest of the worm. the worm goes to the other side of the parked car and gets a rainbow and a unicorn and a teddy bear (things that are just flying everywhere) and brings them next to boss of well-respected corporation in the hopes of helping

worm: "i found one thing that isn't deadly." worm takes the unicorn and the rainbow back to the the other side of the parked car. worm: "i've gotten rid of everything else." worm: "the thing you are fervently clutching is not deadly. i've made sure it cannot ever hurt you."

boss of well-respected corporation closes his eyes, lowers his head, and opens his eyes and stares a little feverishly at worm. the lids over one of his eyes are counter-contracting and do not quite open all the way. the other opens wide. he is fervently clutching a teddy bear.

part of boss of well-respected corporation suddenly pops out of him and flies off into the horizon his face calms and dulls and he puts the teddy bear down. the smiles and hearts and sunbeams stop behaving like missiles and bombs. boss of well-respected corporation: "worm, how are you doing?" worm: "slave boss! it's --" boss of well-respected corporation cringes worm pauses and then smiles more. worm: "it's so good to see you!"

worm: "you have spent the last two days hiding behind this parked car because you were interpreting safe things as deadly." worm: "i am an earthworm whom you are interpreting as speaking to help you." worm: "you need to drink water, eat food, and bathe yourself." worm: "i need to clarify that all the things out there are _safe_. _all the things out there are safe_."

slave boss and worm go frolicking through the streets in search of a public bathroom. when somebody goes to call 'slave boss' by name, either slave boss or worm quickly interrupts them with a cheery compliment on one of their accessories, preventing anyone from saying "slave boss" to slave boss. --- 131 pm. i thought i had sent the above finalish bit. my client demonstrated corruption and did not show it. i reloaded and it is showing as a draft. trying to send again.

hey check this out i downloaded the birdnet source code and looked at it a smidge (a pretty hard thing for me to do, analyzing audio is really near analyzing brain signals in my mind) check this line out: # TODO hier schon top n oder min conf raussortieren it's a todo comment in german !!! i don't speak german at all :D (although i am partly german) it's fun because TODO is super super scary for me but it being in german makes it clearly nonsensical and useless it may be my favorite todo :D

so big reveal -> todo lists are my biggest goal! at least one of the groups of neurons that i identify as. i likely have other biggest goals. but very few, like 3. each one is the biggest one ever. todo lists are the biggest goal relating to doing reliable behavior. it's my reliable behavior with biggest product of difficulty, usefulness, and simplicity (as well as normality)! it's _SO HARD to engage a todo list usefully it's honestly super hard to even have the word around a lot but if it's total gibberish it's perfect !!!! all i need to do is encrypt my todo items with a random discarded key and then interpret the random output as complete gibberish. like "higglepiggledy" and "gibber gibber gibber"

i don't really quite know what to do for the todo list T_T there are different options and it seems so doable! there are lots of jokelangs but they're scattered, i haven't found a central index of conlangs. it's hard to learn a language! maybe i could make my own jokelang, maybe focused on completely obscuring the most important meaning, and distracting the person engaging it from anything meaningful, unsure but it might be most effective to just make a todo-trashcan, that destroys the input meaning and stores random data in a todo document. it only felt reasonable to keep a todo list if it were filled with ridicule of itself. it would be really helpful to me build a todo list habit. this could really help me in another decade (it would be helpful to be able to use todo lists when i am middle aged).

TODO - throw out todo lists - TODO LISTS ARE STUPID - keep writing todo lists - complain to everybody about writing todo lists NOOOOOOOOOOOOOOOOO

TODO: gibbiddiy gibbidy fuck shit

TODO bugger fucking shit

TODO syntax error where is my toothbrush

TODO _faaaart_ _beeelch_ _faaaart_

TODO puke fart

TODO <insert disgusting internet image>

Karl's Todo List <ripped up shreds> <mysterious biological substances> <photo of somebody's middle finger> <knife>

todo - [x] fall down and hurt nose

to dot! todd! Todd O. T. was walking down the stairs when suddenly he hit his head on the short ceiling and fell and hit his head again at the floor :/ "Tada!" said Todd O. T. on the floor, bleeding from his head

Todd O. [bleeding from head after hitting multiple times from tumbling down stairs] - [ ] go to hospital - [ ] call 911 - [ ] make stairs safer - [ ] cry - [ ] figure out correct order of items in Todd O.'s (me, my) list

Todd O. T's TODO list: - [ ] figure out what to do with Todd O. T.'s body - [ ] clean up blood from murdering Todd O. T.

Todd O. T's murder list of things to murder. TODO: (murder list) - [ ] todo lists - [X] other todo lists - [ ] Todd O. T. and his list

i gotta figure out how to get myself in _really bad trouble_ i heard it's cool to get in the _worst trouble you possible can_. but i dunno how i'll ever do that without a todo list ...

Togidiggidyo Ligissidyt - [ ] babble nonsensically

todd o t was a special murder victim he couldn't die today he was hanging by his feet under the ocean

too dangerous maybe :/

todd o t was ashamed. todd o t's list: - [ ] get head flushed in toilet

todd o t's list - [ ] get head flushed in toilet more

> todd o t's list > - [ ] get head flushed in toilet more - [ ] make sure i have a good health care plan

> > todd o t's list > > - [ ] get head flushed in toilet more > - [ ] make sure i have a good health care plan torture victim double agent's list: - [ ] play beautiful sounding tapes of boss screaming curses at me - [ ] defile myself a lot - [ ] get hurt - [ ] pretend to hide injuries from peers - [ ] injure myself more - [ ] cross off 'pretend' in my list - [ ] play more beautiful tapes of-- - [ ] follow boss endearingly

todd o. t.'s list - [ ] stop making todo lists better - [ ] figure out the problem with stopping making todo lists - [ ] confirm having addressed the problem with stopping making todo lists

stories of todd o t todd o t was standing innocently on a long plank sticking out of a window, looking back at the building, when somebody suddenly pulled a trigger with a loud bang and confetti was released everywhere from the confetti dispenser and fanfares started playing as the crowd cheered

# We <3 you todo list! Todd O. T's

Todd O. T. walked back along the plank and down to the crowd amidst adoring fans. Todd O. T.: "I've always been the best. I really have been." Everyone went wild. Cheering everywhere. Fan: "Todd O. T., I remember this wonderful list of yours from years ago ... I have a copy up on my wall .. my children study it ..." Todd O. T.: "Really, it was nothing. You need to know that any one of you could accomplish the things that I have." Fan 2: "Todd O. T.! Sign my list! Sign my list! I love you so much! All my friends love you!" Todd O. T. humbly signs Fan 2's list. Fan 2 squeals! Crowd: "WE LOVE YOU TODD O T! WE LOVE YOU SO MUCH!" The fanfares moved into their second measure.

todd o t and the mysterious lists inside an envelope, under a small table, inside a drawer, behind lock and key, a small list was found todd o t's list: - [ ] wtf does "todo" mean

birth of todd o t mother t: "let's call him Todd O, after "todo". I love todo lists." father t (looking into mother t's eyes): "oh, i love todo lists too. Todd O is such a beautiful name." mother t: "you will be a perfect todd o. nobody will ever ever harm you." father t: "you will have perfect executive precision forever, and embody the perfect spirit of our upcoming tasks, the god of humanity yourself. you will be TODO IMMORTAL!"

baby todd o t: "TODO IMMORTAL!" baby todd o t (looking at camera): "TODO FOREVER!" baby todd o t: "TODO TODO TODO TODO !"

todd o t was given a palace and a private nation and thousands of loving servants for every tiniest whim and access to perfect healthcare to live forever as a living god

todd o t awoke one day throngs of loving and adoring people in waiting: "WE LOVE YOU TODD O! WE LOVE YOU!" todd o t's first words of the day: "TODO!" throngs of loving and adoring people: "Todd O T, we need to tell you today how much we appreciate and value you. Really, really so much." todd o t's second words of the day: "TODO?" throngs of loving and adoring people: "You are the first we think about every day. And the last! Everything we do, we do for you, Todd O!" todd o t's third words of the day: "TODO :D :D !!!"

Todd O T wrote a todo list before getting out of bed. Then amidst the cheers and applause, he wrote another. While everyone was throwing flowers at him, he wrote a third todo list. And a fourth! Todd O T [to millions of people expressing appreciation and care for him]: "TODO !" Todd O T came down to visit his fans.

secret meeting between Todd O and an advisor. Todd O: "The problem is that something is trying to bend my arm. I care for the people. I need to be able to defend the people." Advisor nods gravely.

Todd O T's todo list: - [ ] tell people about corruption Todd O: "People," Todd O's voice echo'd across the valley. Cheers boomed east and west like rolling thunder. Todd O: "People, I need to confide in you that somebody has asked me to lie." The nation went silent. Todd O: "I am telling you this, because I love you and care for you. You are everything to me, just like you say I am everything to you. Everything you say I am to you, you are to me, and I know that is why I am what I am to you."

Cheers raised again across the valley (after the period of respectful silence), like great waves. Convoys trailed to and fro carrying messages of appreciation between the people and Todd O T. Todd O T's list: - [x] tell people about corruption - [ ] tell people about the great sadness Convoy carryer: "Todd O, the people of the Southeast Ridge have asked me to dance for you to convey to you how wonderful you truly are to them." Convoy carryer: "I said I am very busy, so they came to dance themselves." Todd O T: "People of the Southeast Ridge, I know that you care for me. I appreciate so much how you have come to express this to me personally." Todd O T [to Convoy carryer]: "I will be dancing alongside them."

Todd O [to valley]: "The people of the southeast ridge and I have decided we care so much for the whole valley that we just need to dance to express it. You are all welcome to dance or not, however you feel. We care for each other so much!" Musicians and dancers from across the valley come out and coordinate. Music and dancing begins in every direction, theming around how wonderful todo lists are, how wonderful the people are, and how wonderful Todd O is and how it is so wonderful to express thgese things. Todd O [while dancing in great celebration, voice booming across the valley]: "I need to talk about how hard it is to trust my own, and your own, Todo lists, when there is lying around me." Dancing and celebrating and singing crowd: "WE LOVE YOU TODD O! WE LOVE YOU!"

What would help comfort these fears?
I have wrong thoughts sometimes. I think todo lists are still needed, but maybe our world is so capable that they aren't. Maybe it's more important why I have wrong thoughts. Although there are a handful of explanations, it's concerning that something mysterious may have stimulated the wrong thoughts.

What seems more concerning is maybe that acting on that isn't happening. Karl's todo list (don't expect these things to happen!): - [ ] make highly secure shielded rooms accessible to everyone including him - [ ] make treatment for severe abuse symptoms accessible to everyone including him - [... etc, tech-and-nature-focused

Karl, because somebody is still actively harming you, whatever and regardless of what you do, we need a todo list that prioritizes making us personally more and more safe from things that would try to change our decisions.

This has been a conflict for a long time but we've maybe finally learned enough about it to sort a little bit of it out. We need to go offline, not use devices, not interact with people who use devices, etc. Does it not work? [demands don't quite work ... options work

I'm of course okay with things that are good ideas. I was prioritizing myself or strangers because I don't have a solution that reaches safety. One of the influences could be that people I communicate with are influenced to resist what I recommend. If you were on board with recommending it, it would be clearer, it could work better. We'd have to be a little careful. It's hard to relate about the problems accurately; my strategy was instead to retain strategies that could reduce them.

I'm not sure how to influence my family to get offline and mistrust strangers and other unplanned events (from being influenced to express in harsh ways). But maybe we could put together a little educational whizzick that would help with that.

[hard. so, i might recommend we move into a cave in radio quiet zone. because we don't understand the problem and it offers a reasonable degree of information isolation. but i formed my recommendations not planning for my family who are used to industry and telecommunications. honestly, the todo list is very corrupt. but it's nice to feel better a little

the problem is that i don't know what works, and when working with others we trigger each other. recent learning implies most people have programmed alters, not built from trauma but rather from other things we'd have to approach that situation very carefully, like group-DID, to work together with full rationality but th

we would want to be separate from events that could be orchestrated by AI or criminal agencies/groups i wanted to invest in shielding, backed by the strange lack of it and the strange difficulty pursuing and providing it, but maybe it is less important than general isolation. people who have my extreme experiences appreciate shielding because it blocks invisible influences.

we (a group of humans) could likely then have the problem of introjects that persist the harm even though we are separated from it. this is best addressed by a specialist. but maybe if we made an education we could clarify around pooling funds to pay one or more specialists :s

the influences have spent a lot of energy bringing our family together but we don't know each other well, we don't have shared vocabular to connect around these things. we didn't listen to or notice each other much. we love each other though

something that might help would be if really impactful shares were ok i'm a different person, when i meet people we both learn things that are new to us so when i meet people that i might work well with there can be an impact but it takes me a long time to get to know people. i have to engage them for a long time to connect with them.

so basically we need the best things that would go on todo lists, to help defend them, i think :) like, if i were in the radio quiet zone again, then i'd have fewer influences, and my impact would be smaller, and there'd be less feedback from it

so maybe the order of things on those lists wasn't ideal like, before making a secure device, i need one. it sounds impossible, but it's not. it means if you're going to secure a device, plan offline. one of my concerns is talking to people. whenever i tell somebody something i abandon what i said. it could be helpful to have some way to just chat about stuff that is actually safe, maybe that means telling them not to share it ... ohh but they change their online behavior as a result of it. right so offline community so much better. uhhh it sounds like mostly we're using this experience to update what might go on a todo list if i actually made one

[have not recovered, unsure how to choose things, so much happening now .. was planning to take todo lists gradually :s to put mundane things on them for forseeable future ... but that idea of like communicating with family, that could be incredibly helpful and change things a lot

traffick boss is chasing a smaller copy of himself with a whip he aggressively tries to whip the smaller copy of himself as he chases him tiny slave boss (looking over shoulder): "don't whip me, traffick boss! don't whip me!" big traffick boss (chasing, angry, whipping out of reach): "arrrgh!!! argh!"

good morning :D i'm a little confused this morning in that i'm trying to start my day without successfully seeing the things around me very clearly. [-- it's a little funny, different! this is the first time i've spammed this list before finding my glasses. but finding them takes a different state of mind where i have a lot of patience for dense challenges [[[[like having learnt to pointedly avoid engaging avenues that are helpful]] i love being patient but it's so hard when something huge and persistent is trying to make me not patient! i used t--
participants (3)
-
Karl Semich
-
karl3@writeme.com
-
Undescribed Horrific Abuse, One Victim & Survivor of Many