I taught some C to my sis today and it's hard because she is smart and has questions
like, I wasn't prepared to have to explain PRNGs but I had to coz she wanted to know how random number generation is done because I mentioned that "int x;" gets a random number and she asked "so if I want a random number I should just look at some random memory location" and I couldn't in good conscience say "yeah, that is a perfectly valid way to do RNG"
@jk upon reading this toot Dennis Ritchie's ghost manifested in my room, took the UNIX manual from my shelf and smashed my laptop with it
@grainloom @jk There's a standard library function for this.
@starbreaker @grainloom the implementation isnβt silly enough im afraid
@jk @starbreaker @grainloom go look again, it's randomly silly
@djsundog @jk @starbreaker @grainloom reimplement libc with a focus on maximizing implementation silliness
@djsundog @jk @starbreaker @grainloom oh wait that's just called msvc whooooops
@io @grainloom @starbreaker @jk @djsundog reimplement libc by shelling out to, well, shell utilities.
did I reinvent plan9 yet?
@grainloom @Shamar @io @starbreaker @jk @djsundog memory should be a file.
the only syscalls should be mmap and system.
@SoniEx2 @djsundog @jk @starbreaker @io @grainloom
I suggest you to try implement an OS with such approach, just for fun.
But that's now how I design syscalls for #Jehanne.
It's core abstraction is the file (for a certain definition of #file).
All services that can be exposed as file operations, are. Process memory allocation, for example, is done with a create() of a file; current time is done with a remove() of another file.
@Shamar @grainloom @io @starbreaker @jk @djsundog strcpy(mmap("/sys/mkfile", ???), "/tmp/memory"); mmap("/tmp/memory", ???); etc
@SoniEx2 @djsundog @jk @starbreaker @io @grainloom
This looks pretty weird to me.
I don't like mmap at all.
BUT, I will not be the guy who tell you to NOT hack something.
I strongly encourage you to try to write such OS. You might fail to create anything usable, but you will learn a lot in the process anyway.
Or you might succeed, showing everyone else that it was a good idea.
And I strongly encourage you to document the whole process, whatever the outcome: it's always worth to #hack.
@grainloom @SoniEx2 @djsundog @jk @starbreaker @io
Well, sure.
I'd suggest to look more into Plan 9 to anyone. π
But if someone propose an hack I find particularly weird (but not dangerous for anyone), my first reaction is: you should really try this! π
Any other reaction might discourage the hacker.
@jk @grainloom what is worrying is its probably feasible. one Asterisk telephone exchange at work (soon going to be replaced) has version of Asterisk/Zaptel that segfaults on British Telecom line test signals, that are sent late every evening, then restarts as if nothing has happened (other than console warning and the core dump in /tmp).
So it must be possible to use a script to keep running the cursed code and eventually return the "good" values π
pedantic and no fun Show more
pedantic and no fun Show more
pedantic and no fun Show more
@grainloom function that gets a random uint8_t by continually spawning a subprocess that attempts to dereference a random memory address. when eventually one doesn't segfault, it returns that byte. warning: random number distribution is heavily biased to 0 and also quite biased to 255