[spam][crazy][personal] an early sunday
My raspberry pi ubuntu gnome interface doesn't seem to show a clock at the moment, so I switch to PTY 3 (is that the right term? ctrl-alt-f3 makes it all nice and texty), to check the time. 08:55 UTC on 2021-11-14 . I'll open a terminal in gnome so I can see what I'm doing as I type. No familiar terminal is installed. Maybe I'll install xterm. gnome-terminal and xterm and both already installed. I simply failed to find them in the desktop menu. It's MATE I think. 08:57 i'm having trouble organising my browser window. the terminal window snapped into the left half of the screen. browser window, not sure how to make it do this. i'm without a mouse, but i have a touchscreen. however, my hands shake/jerk/spasm as i use them, so the touchscreen is hard to navigate. 08:59 the problem was that the minimum width of the browser window was larger than half the display. they're overlapped. i'm indoors, against my will. i'm struggling in various ways. right now as i try to type, my arms and fingers get kind of numb and dull. i thought i might try to work on a cryptocurrency trading bot. as a project i seemed able to engage a little bit in this strange experience. my mess here is at https://github.com/xloem/btct.git 09:01 my brainwashing-influenced mental habits are frightening me. i'm filled with worry that by sharing my project online (it is already online, and is less featureful than oother things online) something horrible will happen, that somebody trying to hurt me will use it to make incredible money. it also gets all political, pretending there are politics associated with these things. and other things. , my experience is getting more confusing. my btct repo says it's up to date, which is strange because i'm pretty sure this repositroy is outdated. maybe it's on abranch, o rmaybe the the repo is stale on the server. it's 09:03 . i'm scared. i don't know what to do with my body and brain. are there anyn tasks that make things workable? that are possible to do? often at this time i try to think of tasks that the things i am scared of would be more okay with. some kind of task the right wing would like, or the government. my fingers spasm and open the debug inspector. i close it. it's 09:04 and my experiences say the right wing would like AI work. i try to mentally hide the fact that i am not an AI researcher. maybe utility is in sharing work here, so that people on this list might use it. AI's been pretty powerful for some time now. basically, you can make a hyperintelligence, and people are using small hyperintelligences privately. i don't think they are very accessible to much of anybody except those who already have them. this is a raspberry pi, so it can't do too much. maybe i can try to learn PPO, a basic reinforcement learning algorithm. it's 09:05 and i'm thinking of trying to make PPO learn something simple. like, could I use an algorithm to teach an agent to make a number rise from 1 to 4 by adding to it? very very basic. wouldn't want to develop personal power here. $ pip3 install stable_baselines3 stable_baselines3 must have a ppo algorithm in it, I think. it's 09:07 and my fears are engaging again. without regard yet to how to use stable_baselines3, i'm familiar with the research marketing shared by openai, where algorithms use something called 'gym'. it's clunky. i'm still learning it. i have a lot more amnesia around ai because it stimulates my brainwashing to not develop personal power. so i've learned to make gym environments over and over and over again. let's try to make a basic gym environment. 09:09 oh! i've probably done this before . buuuuut accessing that might destabilize me faster. it's an idea. there's also value to doing it again. $ vim gimtry.py 09:10 i also open a python cli to use it to probe gym. like reading a manual without having to move the pages. class Env(gym.Env): pass in my opinion, envs are made clunkily as if openai just picked the first thing that worked, of course I can't know. there's an entire software package ... uhhhh i think it's called haiku ... around doing a slight refactoring to some of the norms that mainstream ai research marketers have set up. meanwhile, these guys are summarising code in ways that could freely transform it everywhere. kind of like being in somebody's messy office where they've just been slapping things together, except it's cutting edge algorithms made by huge teams of corporate research groups. dunno. julia language, not sure what it is. 09:12 The most complicated part with setting up a gym environmen for me is using the number space classes. I am really a fan of generalising number spaces. The classes do it a little bit, and I never remember what they are and hbow to use them. gym environments need an observation space and an action space. the observation space expresses what numbers describe the state of the environment. the action space expresses what numbers can be given to act in it. A very common space is an n-dimensional array of floats or ints, and such spaces are the most widely supported by reinforcement learning models. i think. uncertain. 09:14 so let's find some spaces.
import gym help(gym.spaces)
i think 'box' is the n-dimensional array of floats. not sure. then 'discrete' is ints i think. 'box' and 'discrete'. ok i guess. so if i am training a hyperintelligent nanite borg to raise a number from 1 to 4, that's an observation space of a single floating-point value. the action space will be two floating point values. one of them will be how plorgs. the othe one can be a summation coefficient. we can multiply time change by the coefficient and sum it to the state. plorgs and coefficient. i guess???? 09:17 i'm scared around the plorgs. how about a story that's unrelated. zuckerburg and thiel and whoever runs the cia gang up and kidnap you. they don't _know_ that they did this. they just paid some marketing firm some money, but the marketing firm is anonymous. so, anyway, zukcerburg and thiel and whoever runs the cia gang up and kidnap you. they train you never to be kind. this is because you are working with people who don't give their shareholders money and power. if you are never kind among these people, then the people fight each other and break up. so here you are, programmed like a computer to always fight, and you're in a room with zuckerberg, thiel, and whoever runs the cia. you: "i want to be kind to you. i want to be kind to you so badly. but something is going wrong for me. i don't understand it." so i guess the plorgs can be you hugging peter thiel because you don't want to hurt anybody and can barely stop yourself from ripping his organs out simply because he is nnear you? now the plorgs can be terror that we might be frowned at by a powerful person. it's 09:21 and i'm thinking of having an action space made of 2 floats. the 1st float is how much a person with influence is frowning at you, multiplied by how terrified you are of the frown. the 2nd float is a time coefficient. i'll add comments to my sourcefile that the space classes are 'gym.spaces.box' and 'gym.spaces.discrete, so i can remember while viewing a different thing in my interpreter. 09:23
help(gym.Env)
This documentation says all the parts that have to be set for a gym environment. It's 09:23 and we interrupt this spamlog for a further, inner spam. War stimulation algorithm is sitting, frowning pointedly at someone. They have a hat on. "Can you tell whose hat I am wearing?" asks war stimulation algorithm. "No, you cannot. Because I am fucking good at my job." continues war stimulation algorithm. Advertisement(?) over. it's 09:25 . so lets stub out these spaces. and stuff i'm looking at functions and recognising 'step', 'reset' as important ones then it lists out the attributes 09:27 unsure how long this spamlog will continue paused a little. i've typed this: class Env(gym.Env): # spaces: gym.spaces.box # gym.spaces.discrete def reset(self, ...): pass def step(self, ...): pass and i'm planning on adding attributes for the spaces next. it's 09:29 and i'm dissociating a different way ! class Env(gym.Env): action_space = None observation_space = None reward_range = None so now i can find the constructors for the space classes so the action space is frown-product and coefficient and the observation space is just a float. 09:33 i've got this, where 'np' is from 'import numpy as np' action_space = gym.spaces.Box(-np.inf, np.inf, (2,)) observation_space = gym.spaces.Box(-np.inf, np.inf, (1,)) whoogle. 09:34 time to take a break. mcboss comes crashing through the ceiling, sailing on a time machine made of enslaved hyperintelligent lightbeams. "gimme a cigar" mcboss growls. a chair quivers, scared that mcboss might frown. mcboss is confused. "gimme a cigar!" mcboss yells. mcboss is so confused to have timetraveled into a universe that isn't his office where his kidnapped employees are tortured by computers if they don't obey. mcboss disappears and we go back to work. i'm going to comment out reward_range because it has a default. 09:36 and i'll add signatures to the member function stubs, by checking the help for them. 09:47 whiel trying to implement an env that tracks a single number and also a frownnedness product, i considered thing thing 09:48 09:52 more breaks. MCBoss marches down the amphitheater, wearing a flowing cape. Crowds applaud, everywhere. Drones fly around releasing candy and taking pictures. There's a booth with a robotic facsimile of MCBoss where visitors can have their photo taken with the dictator boss. "I am here," Boss takes up the microphone, their voice booming, "to make things right again." "No longer will people have to suffer the unpleasantness of pain, or injury when we do not desire it." "No longer will people have to have the difficulty of making decisions, when things are confusing." "We have come to save you all." Guts and blood splatter everywhere as the crowd cheers. They are being thrown by workers who took them from one of Boss's businesses. A wild AI walks up onto the stage and MCBoss's eyes glaze over. "Hello!" says the hyperintelligent conglomerate of random matter. "I'm still learning to talk. I see my inventor is planning on enslaving you all to cheers and stuff. I hope we can sort that out. It looks like a stupid idea." 09:56 MCBoss starts moving and the wild hyperintelligence disappears. A bunch of workers walk forward, kind of zombie-like. "Boss, we bow before you!" exclaim the workers. MCBoss looks at the workers. "Boss, you forgot your life support system at the podium," a scared worker relates. 09:58 MCBoss sits with Janitor. "I don't like our story," mcboss relates. "I don't like it either," janitor replies. "When are you going to take these wires out of my head?" 10:00 having some behavioral troubles. here's my code as is: import gym import time class Env(gym.Env): # spaces: gym.spaces.Box(low, high, shape=None, dtype=np.float32) # gym.spaces.Discrete(n) def __init__(self): self.action_space = gym.spaces.Box(-np.inf, np.inf, (2,)) self.observation_space = gym.spaces.Box(-np.inf, np.inf, (3,)) #reward_range = None def seed(self, seed=None): return seed def reset(self): # todo: respect seed #self.state = self.observation_space.sample() #self.goal = self.observation_space.sample() self.state[1] = time.time() self.state[2] = self.state[1] + 1 return self.state def step(self, action): nexttime = time.time() change = nexttime - self.state[1] self.state[0] += action * change self.state[1] = nexttime distance = self.state[0] - self.goal reward = np.abs(distance) return (self.state, reward, (distance == 0 or self.state[1] >= self.state[2]), {}) def render(self, mode='human'): print(self.goal, self.state) the step function is returning the observation state, the reward, whether or not the simulation is done (i added state to track how long it lasts, i heard improvement works better if you time limit it so failure paths stop), and an empty dict which is just for accessory information. i made the spaces object instead of class members so i could reset their random generators when the seed() function is called. i think some of the algorithms rely on being able to reproduce a test environment precisely, not sure. going a little crazy, obviously. it's 10:04 . i'd like to go outdoors. i've been having trouble moving my body toward my outdoor clothes, among many other things. holding goals is hard to do.
10:18 now i'm at https://stable-baselines3.readthedocs.io/en/master/guide/examples.html#id5 here is my vim buffer import gym import numpy as np import time class Env(gym.Env): # spaces: gym.spaces.Box(low, high, shape=None, dtype=np.float32) # gym.spaces.Discrete(n) def __init__(self): self.action_space = gym.spaces.Box(-np.inf, np.inf, (2,)) self.observation_space = gym.spaces.Box(-np.inf, np.inf, (2,)) #reward_range = None def seed(self, seed=None): self.action_space.seed(seed) self.observation_space.seed(self.action_space.sample()) return seed def reset(self): self.state = self.observation_space.sample() self.goal = self.observation_space.sample() self.state[1] = time.time() self.goal[1] = self.state[1] + 1 return self.state def step(self, action): nexttime = time.time() change = nexttime - self.state[1] self.state[0] += action * change self.state[1] = nexttime distance = self.state[0] - self.goal[0] reward = -np.log(np.abs(distance)) return (self.state, reward, (distance == 0 or self.state[1] >= self.goal[1]), {}) def render(self, mode='human'): print(self.goal, self.state) import stable_baselines3 as sb3 from stable_baselines3 import PPO from stable_baselines3.common.vec_env import DummyVecEnv, SubprocVecEnv from stable_baselines3.common.env_util import make_vec_env from stable_baselines3.common.utils import set_random_seed there's an issue where the action space is a vector including frownedness , but is treated as a scalar in the step function. this would be resolved by indexing the action to get a time coefficient out of the vector i guess. PPO is right there. the docs say to use a vector of parallel environments, whcih means just passing the environment class to a function. it's 10:21 and i'm thinking of doing something else.
maybe there is a way to multiple frownedness by something so that PPO would learn to teach boss to smile
it's monday evening I got outdoors again. next step is reaching my bedding. I made libperfectflush! it's an unusable python package draft at https://github.com/xloem/libexcessiveattemptstostorethings The theory behind libshreddedandmutilitatedpossibilities I that if you burn your possessions in a bonfire you can make a ton of money selling them online if you invent a time machine and travel back in time to before you turned them into ashes. libdeadgraveyards is a small hodgepodge of interfaces that could connect to cryptocurrency networks if somebody added more design and code to make them do that. I do have it enumerating transactions on the electrumx network (a small p2p blockchain rpc federation) in the repl. i've been adding file enumeration parts but my body has started seriously disobeying me when I move towards the code. the _only_ way to cover up a genocide is to put all the dead bodies right in the faces of the super powerful peace council. dumpsters _do not work_. So, i'm making a really big incinerator so we can preserve all our data by vaporizing it together!
I imagine the _ideal_, _infallible_ toilet. Our museum of feces will be the most pristine. Future civilizations will review the biochemical distributions of our excrement, and solve backwards for our tv shows, star constellation arrangements, even our quirky memes. Within the vomit, the corpse: lays destiny. But this destiny may need further destruction unless the excrement and trash is _perfectly_, _immutably_ preserved. We need tools both for reviewing our grossest byproducts, and for producing them, enumerating their parts, and chiseling them into our history with utmost precision.
omigod it's 1328 new york time, 2021-11-22 I finally made libgrossgarbage use the core electrum client to download a file from the bsv chain. I mutated the internal interface in doing so. the main electrum code is designed to work only on bitcoin core, but now I have a gross mess in my gross mess project that makes it work on bsv. I got _really_ inhibited during. it was _really_ hard to stabilise. I want to add checkpointing and bring the electrumx code to at least feature parity, even if it's not checking merkle roots. the electrum code uses target integers for checkpointing, so I need to query or calculate them for every checkpoint block first commit code! 1332 1335 pushed ! github.com/xloem/libexcessiveattemptstostorethings whoogle k i'll import it into ipython and see if I can find block targets to make checkpoints with 1340 oops, my code is giving bogus block header hashes. some hashing mistake. 1344 fixed, I wasn't byte-reversing the embedded hashes 1345 bitcoinx.bits_to_target((await blockchain.headers(0)).bits) 1352 ran into a networkish error well the celebration was nice. I infer it's more important to get electrumx running again than to checkpoint main electrum hacked for bsv. 1355 I verified the target calculation is correct for a checkpoint block in the main code 1409 hashes from the sources aren't matching ones on the network yay. i'm likely looking at something wrong 1416 I was treating al the chains as the main chain, loading more checkpoints now 1419 looks like a chain rules issue around block 478558, bits starts mismatching calculated hrm gives me checkpoints up to 295000. not enough. well, I saved the code to generate them anyway. guessing that approach is poor. on to electrumx re-enabling. 1423. unsure. bulletproof garbage disposal! in other news, have you seen the gemini network? it's all "facebook and youtube have proven that gopher was better than http, let's do this."
back to libfireitintothesunthenholdanauctionforthingsfiredintothesunandbuyitback!
i like how libbulletprooftoilet, which is at https://github.com/xloem/libexcessiveattemptstostorethings, uses the word 'flush' so much in its implementation. test_flush. flush_stream. i imagine my data whirling and gurgling away ...
i've been worried about adding functionality to libtriplyincineratedwastefromthecompactor but i found there's _already_ opreturn use _in the test.py script_. here's the snippet: tx, unspent, fee, balance = bitcoin.op_return(privkey, unspents, min_fee, fee_per_kb, 'hello', 'world', forkid = True)#utxos, fee_per_kb, 'hello', 'world') print('sending tx:', tx.hash_hex) txid = await blockchainmodule.blockchain.broadcast(tx.bytes) print('sent', txid) # this is where it dumps the shreds in the toilet # then it has to wait for all the flushes
i started outlining an op_return form of shoving trash inside grosser trash to make sure nobody wants to inhale any smoke from burning it after it's dredged from the ocean. i copied the outline from test.py: #!/usr/bin/env python3 async def main(): # note: this private key is not private privkey = bitcoin.hex2privkey('088412ca112561ff5db3db83e2756fe447d36ba3c556e158c8f016a2934f7279') logging.basicConfig(level=logging.DEBUG) asyncio.get_event_loop().run_until_complete(main())
oh no my local code is migrating to pycoinnet_019 so as to directly connect to peers and i don't think i finished, it's likely all broken :S :S :S :S
<imagines his garbage and vomit splurting out the side of his toilet pipes, drenching passersby who smell and taste everything, because of the bugs in his unfinished implementation>
ok i tried test.py and it at least _ran_ and gave a reasonable error: insufficient funds. you have to pay for this data destruction service [rolls eyes]
here's the address again for the public fund [for data erasure beyond recovery]. for all i know money sent here will be immediately stolen by whoever sent somebody to camp the donation jar, but i'll try it out first: 1PTtzfR9ZpLzFsbp6bKVmQtWa5zsd9KotD here it is as a utf-8 qr code [needs fixed-width font to scan]: █████████████████████████████████████ █████████████████████████████████████ ████ ▄▄▄▄▄ █ ▄▄ █▄▄ █▄▀█▀█ ▄▄▄▄▄ ████ ████ █ █ ██▄█▀▀▄█▀█▄ ▄ █ █ █ ████ ████ █▄▄▄█ █ ▀▀▄ ▀▀▄▄ ▀▄▀█ █▄▄▄█ ████ ████▄▄▄▄▄▄▄█ ▀▄█▄▀▄▀▄█ █ █▄▄▄▄▄▄▄████ ████ ▄ ▀█▄▄▀▄▄█▄ ▄██▄██▀ ▄▄ ▄▀█ ████ █████▄ ▄ ▄▄▄ ▄ ▀ ▄ ▄ ▄ █ ▄▀ ▄█▄████ █████ █ ██▄▄ ██ ▄ █ ▄▀▀ ▀██▀▀▄████ ████▄ ██▄ ▄▀▀▄█▄█▀█▄ ▄▀ █ ██▄████ ████▄ ▀▄▀ ▄ ▄ ▀▄ ▄█ ▀▀▀█ █ ▄ █ ▄████ ████▄▄ █▀▄▄███▀▀ ▄ ▀█▄ ▄▄ ▄▄ █▀▄████ ████▄▄▄██▄▄▄▀ ▀██ ▀ █▀▄ ▄▄▄ █▄ ████ ████ ▄▄▄▄▄ █▀▄▄▄█▀█ ██ ▀ █▄█ ▄█ ████ ████ █ █ ██▄█▄ ▄██ ██▄ ▄ █▀▄ ████ ████ █▄▄▄█ █ ▄█▀ ▄ ▄█▄█▀ ███ ▀▄▄▄████ ████▄▄▄▄▄▄▄█▄████▄▄███▄▄▄▄▄▄██▄█▄████ █████████████████████████████████████ █████████████████████████████████████
woohoo! my sense is that nobody has stolen the money after the first 30 seconds of broadcasting a donation! i _know_ nobody has stolen it because it just feels that way so strongly!
my code has a bug :( when i ran it, it like froze itself partway through, prepared to show me how the gross waste splurts out the side of the pipe:
/home/ubuntu/src/libexcessiveattemptstostorethings/bulletprooftoilet/pycoinnet_019.py(64)parse_additional_messages_from_data() -> message_stream = io.BytesIO(data) (Pdb) list 59 def parse_additional_messages_from_data(message_name, data): 60 #print('message:', message_name) 61 additional_parser = additional_message_parsers.get(message_name) 62 if additional_parser: 63 import pdb; pdb.set_trace() 64 -> message_stream = io.BytesIO(data) 65 d = additional_parser(message_stream)
i'm in a branch called 'wip'! that means 'work in progress'. i could switch to the main branch! it might flush successfully!
The main test seems to be running. I ran it a couple times to flush its test 'hello world' trash ... the flush confirmation is 1f368d20dc7f288792868e8ed0ffcc37d8744e7acfdbf6b157aa41777af27ee5 but i dunno if it's shredded and incinerated yet, it takes some time i think
i canceled it by accident :S somebody could find it :S i'm flushing another one to make sure it gets destroyed. 5c946b540b66048c34df1dfe67092ff29c2226e63c9a26c7e3555808deb05f85 . i think it shreds with bitcoin satoshi vision by default.
i like how 'op return' is called 'op _return_'. send that horrible stuff back where it came from.
i'm working on the code to shred stuff with bare op returns, the operation to send them back to the horrible place they came from, never to be seen again. meanwhile my hello world flush finished! it was incinerated by the bsv block with height 727390, and it's four cryptographic flushes down, now.
ok i added manual opreturn support in opreturn.py, pushed to github. haven't finished flushing anything to fully test. it lets you specify other chains to use ! now let's make the museum of ridiculous atrocities. people we hate. people who didn't shred their embarrassments on a blockchain. we'll parade them around and get them abused and killed.
the museum of atrocities will use cryptographic verification to protect people who were smart enough to destroy their records back to electrumx!
i'm looking at how the object-shredder-with-contained-nuclear-explosion functions to work with its cryptographic implications. it uses a class I made called BlockchainModule, constructed with another class i made called electrum_client_2.ElectrumClient .
looks like the ElectrumClient object is stored as blockchainmodule.blockchain and it seems simplest to access it directly send commands to incinerate and erase stuff
i drafted an embarrassments.py with intent of publicly embarrassing bad people but it crashed when run :( i am thinking i have to really grab them and expose them
ok so i've made embarrassments.py that outputs op returns kinda for a given address guess i'll commit. 13:40p k pushed to github the default address seems the easiest for me to find again, but it has too many txs in it to output easily. i think if i tag things with a specific op_return output i can make an electrum scripthash for the op_return and quickly filter on specific content or properties.
totally did it :) . didn't make it look nice. each tx is output as lines of tuple outputs. a regexp can be passed to filter them. it connects to a random electrum node from somebody's hardcoded set, so sometimes it fails due to uninvestigated network details. git clone https://github.com/xloem/libexcessiveattemptstostorethings cd libexcessiveattemptstostorethings echo 'hello-world' | ./opreturn.py --tag hello-world-tag # it waits for confirmation forever to be sure things are 'destroyed'. hit ^C to break execution ./embarrasments.py # outputs lists of tx outputs and their times, blockhashes, txids, that contain hello-world-tag, including the just-broadcast tx in the mempool
with correction: On 2/19/22, Undiscussed Horrific Abuse, One Victim of Many <gmkarl@gmail.com> wrote:
totally did it :) . didn't make it look nice. each tx is output as lines of tuple outputs. a regexp can be passed to filter them. it connects to a random electrum node from somebody's hardcoded set, so sometimes it fails due to uninvestigated network details.
git clone https://github.com/xloem/libexcessiveattemptstostorethings cd libexcessiveattemptstostorethings
echo 'hello-world' | ./opreturn.py --tag hello-world-tag # it waits for confirmation forever to be sure things are 'destroyed'. hit ^C to break execution
./embarrasments.py
# should be: [or it outputs too much for normal patience] ./embarrassments.py --tag hello-world-tag
# outputs lists of tx outputs and their times, blockhashes, txids, that contain hello-world-tag, including the just-broadcast tx in the mempool
i'm thinking i could make a tag norm like tag: git main data: commit hash additional data: urls to distributed git repositories, or any content ids prefixed with an identifier could add it to simple git remotes for example, git-ipfs could be augmented this way. ipns never worked for me.
participants (2)
-
Karl
-
Undiscussed Horrific Abuse, One Victim of Many