=== ANCHOR POEM ===
═══════════════════════════════════════════════════════────────────────────────────
 ┌───────────────────────────┐
 │ CW: re: cursing-mentioned │
 └───────────────────────────┘


 @user-1461 
 
 yes... I like tree shapes, you have to address them differently. Lots of
 pointers, in my experience, which can be kinda fun.
 
 I also like large heaps / soups of data that points to one-another. Structs
 thrown in a pile with pointers to each other. It's great! So long as those
 pointers can also point back, and you can properly trace how data flows
 through the system... That's the hard part, I think.
 
 trees though... You can start by just saving a "next / previous" with one or
 both being arrays of pointers to the next or previous entries. Note: plural,
 entries. That's the fun part - non-linear trees teehee
                                                           ┌───────────┐
 similar                        chronologicaldifferent═════════════════════════════════════════════════════════───────────────────────────┘

=== SIMILARITY RANKED ===

--- #1 fediverse/633 ---
═════════════════════════════════════════════──────────────────────────────────────
 @user-192 
 
 the neat thing about BASH is that it's the glue that holds all your other code
 together. Write libraries in C and call them with BASH - accomplish broader
 tasks that are easier to co-create. That's why I like it - it's not the most
 important, but it's quite beneficial I think _^
                                                           ┌───────────┐
 similar                        chronologicaldifferent═══════════════════════════════════════════════─────────────────────────────────────┘

--- #2 fediverse/2879 ---
══════════════════════════════════════════════════════─────────────────────────────
 ┌────────────────────────┐
 │ CW: re: tech info-dump │
 └────────────────────────┘


 @user-1370 
 
 I love this a lot! I want to put function pointers in a "matrix architecture
 array" and make them point to different functions at different points in the
 program. I bet you could even point them at each other, so like if M and Y
 then point at N, A, Y or something.
 
 this is really cool I like stuff like this tomorrow I'll take pictures of
 something similar I'm working on! I abandoned it tho hehe anyway remind me if
 I forget!!
                                                           ┌───────────┐
 similar                        chronologicaldifferent════════════════════════════════════════════════════════────────────────────────────┘

--- #3 fediverse/1034 ---
═══════════════════════════════════════════════────────────────────────────────────
 @user-192 
 
 be careful, recursion can cause stack overflows.
 
 better to run function pointers from a loop. That way you can operate as long
 as necessary. Just make sure you don't get in an infinite loop...
                                                           ┌───────────┐
 similar                        chronologicaldifferent═════════════════════════════════════════════════───────────────────────────────────┘

--- #4 fediverse/1810 ---
═════════════════════════════════════════════════════──────────────────────────────
 some people hear words like "datastructures" and "object-oriented programming"
 and think they're made up terms that don't mean anything important.
                                                           ┌───────────┐
 similar                        chronologicaldifferent═══════════════════════════════════════════════════════─────────────────────────────┘

--- #5 fediverse/4847 ---
════════════════════════════════════════════════════════════════───────────────────
 every program should write it's RAM gamestate to disk before shutting down or
 closing the program and then resume from the same spot, change my mind
 
 (every is a strong word)
 
 (when you re-initialize you can clean the state of leaks)
 
 there shouldn't be leaks in the first place. if you have any leaks at all,
 then you need more padding.
 
 (... you mean boilerplate? error correction?)
 
 ... yeah that's what I meant.
 
 (but why save the state at all?)
 
 because then it can learn!
 
 (... you could just write the relevant data to a config file.)
 
 true
 
 ================= stack overflow ===============
 
 the cool thing about being queer is you can be whatever you want and
 everyone'll be cool with it
 
 if you kinda suck then you'll figure that out when everyone cool leaves.
 
 then the kind stay with the people who suck and then it's not cool anymore
 >.>
 
 gah this sucks. party dynamics are hard. especially when the parties are teams
 of 20!!
 
 goarsh that's quite a few
 
 ================= stack overflow ===============
 
 wait n
                                                           ┌───────────┐
 similar                        chronologicaldifferent══════════════════════════════════════════════════════════════════──────────────────┘

--- #6 fediverse/5689 ---
═══════════════════════════════════════════════════════════════════════────────────
 why don't we make large arrays of vram that are slightly slower because
 they're farther on the circuit-board from their host and their reception at
 the processing section has to be gated such that they all enter to be
 processed at once.
 
 like that one infinite scrolling XKCD cartoon where the things move from one
 screen to the other simultaneously assembly line style.
 
 [fail safes. https://xkcd.com/2916/#xt=7&yt=35 ]
 
 if we all feel like we're doing nothing, we'll all grow tired of it and decide
 to do some prevailing. gosh I wish I wasn't so useless is code for
why don't we make large arrays of vram that are slightly slower because they're farther on the circuit-board from their host and their reception at the processing section has to be gated such that they all enter to be processed at once.  like that one infinite scrolling XKCD cartoon where the things move from one screen to the other simultaneously assembly line style.  [fail safes. https://xkcd.com/2916/#xt=7&yt=35 ]  if we all feel like we're doing nothing, we'll all grow tired of it and decide to do some prevailing. *gosh I wish I wasn't so useless* is code for
                                                           ───────────┐
 similar                        chronological                        different═════════════════════════════════════════════════════════════════════════───────────┘

--- #7 fediverse/5915 ---
══════════════════════════════════════════════════════════════════════════─────────
 washing dishes without a dishwasher is a pain in the neck.
 
 nobody cuts down trees with an axe anymore, a chainsaw is better for your back.
 
 It's nice, fun, and helpful to be able to abstract away your spheres of concern
 
 like typing with a single button instead of writing characters with multiple
 brushstrokes. Easy to erase, too!
 
 bikes are better than walking, but, with some extra concerns. where are ya
 gonna put it when you get there?
 
 "oh no I forgot how to walk because texting my girlfriend is bicycling or
 something" what? oh dear, she's run off track again, let's pick her up and put
 her upright again..:
 
 oh huh weird where was I - oh yes computer code can often be impenetrable to
 the layperson, but if you describe a program in complete detail in english
 they can usually follow along. Especially if you have several layers of
 meta-descriptional documents so they can say "oh uh-huh so that's what a
 vector_implementation_container is, tell me more about combinatrix" or
 whatever ppl say, idk
                                                           ────────┐
 similar                        chronological                        different════════════════════════════════════════════════════════════════════════════────────┘

--- #8 fediverse/3034 ---
═══════════════════════════════════════════════════════────────────────────────────
 @user-570 
 
 I've messed around with Bevy and the library most similar in C is Raylib. in
 Lua it'd be Love2D I think.
 
 I love the idea of those systems. I haven't built a full game using them but I
 can conceptualize operations within them easier using a framework like that
 versus a game engine like Godot.
                                                           ┌───────────┐
 similar                        chronologicaldifferent═════════════════════════════════════════════════════════───────────────────────────┘

--- #9 fediverse/879 ---
══════════════════════════════════════════════─────────────────────────────────────
 @user-501 
 
 also it's only undefined behavior because the order of the bits aren't
 defined, so if you do bitfield "pointer arithmetic" then you're screwed if you
 try and be portable with it. However if you're just using bitfields as
 compressed data storage then you can safely access integer.a integer.b
 integer.c etc safely and easily. The compiler doesn't care what order they're
 in if you don't write logic that requires them to be in a certain order
                                                           ┌───────────┐
 similar                        chronologicaldifferent════════════════════════════════════════════════────────────────────────────────────┘

--- #10 fediverse/5291 ---
═════════════════════════════════════════════════════════════════════──────────────
 the most important skill I can think of for a linux software engineer is the
 ability to connect multiple systems together and turn windows and macintosh
 devices into Linux devices so that datacenters can be built out of whatever's
 on the around.
 
 there's this programming language I like called Chapel for distributed
 computation computing which is also cool, if you're more of the programming
 type.
 
 networking security I believe often has hardware solutions, so getting the
 crypto-graphy boys and the PCB girls together to work on some jams is a good
 and productively useful gathering of insightful events
 
 "but ritz computers should only be used to solve problems that people have,
 not make more problems!" ah yes but have you considered that problems find
 you, and the computers help you work through them
                                                           ┌───────────┐
 similar                        chronologicaldifferent═══════════════════════════════════════════════════════════════════════─────────────┘

--- #11 fediverse/5212 ---
════════════════════════════════════════════════════════════════════───────────────
 the reason you start with a game engine is because then you'll have tools to
 make however-many games you want. Tools that you know intimately enough that
 you can debug and improve them without breaking your creative flow by learning
 something new halfway through a project
 
 the whole point of individualized projects instead of viewing each computer as
 a complete and total whole (why do we need servers again?) is that you can
 paint a picture of where the design of the program is intended to go, such
 that all the considerations are in place and whatever issues or struggles you
 might face along the way are adequately addresssed, -- stack overflow --
 [because I mistyped addressed] -- -- if you know what "stack overflow" means
 you have intimate knowledge of the technology, and can probably guess what it
 means in context when I say it. "nuts I lost that train of thoguht" -- stackl
 ov
                                                           ┌───────────┐
 similar                        chronologicaldifferent══════════════════════════════════════════════════════════════════════──────────────┘

--- #12 messages/1170 ---
════════════════════════════════════════════════════════════════════════════════───
 look, it's easy enough to solve bitrot. Just store three copies of the file
 and synchronize them everytime you open them. Like, an in-software raid array,
 except with less expense because a .png is what, 2mb? great, now they're 6mb.
 Nobody will notice except people who really should be buying more hard drives.
                                                           ──┐
 similar                        chronological                        different══════════════════════════════════════════════════════════════════════════════════──┘

--- #13 fediverse/3151 ---
══════════════════════════════════════════════════════────────────────────────────┐
 ┌───────────────────────────┐                                                    │
 │ CW: re: cursing-mentioned │                                                    │
 └───────────────────────────┘                                                    │
 @user-1461                                                                       │
 I'm best at Bash.                                                                │
 I'm most capable with Lua.                                                       │
 My favorite is C.                                                                │
 I'm not a good programmer, I think too hard. Massive systems are too large for   │
 me. I like laying out data, whether that be by files and programs in Bash,       │
 arrays and tables in Lua, or memory and datatypes in C, I like to think about    │
 how programs are constructed.                                                    │
 Which functions point to which piles of numbers? what do they do when they get   │
 there?                                                                           │
 I think I'm better as an artist. But I can do systems administration quite       │
 well (with Bash and a guiding hand telling me what and why to do)                │
 ... though I kinda suck at technical sysadmin, like Gentoo. There's too much     │
 terminology - why is data too complicated? Just use data!                        │
 anyway. I sound opinionated, but I listen closely to good arguments and          │
 quickly change my tune when I am incorrected. I am a team player, and I firmly   │
 believe that sometimes a bad plan executed with cohesion and precision is        │
 better than the best play executed too late and with too little strength.        │
                                                            ┌───────────┤
 similar                        chronologicaldifferent════════════════════════════════════════════════════─────────────────┴──────────┘

--- #14 fediverse/111 ---
══════════════════════════════════════════─────────────────────────────────────────
 @user-95 that's why I like programming - it's my favorite form of spelling.
 i'm not very good at remembering all the names and the numbers, but I like to
 think I can make things do a function.
                                                           ┌───────────┐
 similar                        chronologicaldifferent════════════════════════════════════════════────────────────────────────────────────┘

--- #15 fediverse/572 ---
═════════════════════════════════════════════──────────────────────────────────────
 Hi, I'm learning about semaphores right now and trying to explain them to a
 friend. But I only sorta understand how they work - can anyone look at this
 pseudocode and tell me if I'm on the right track?
Some C pseudocode working through the semaphore design pattern. Here's the text of the pseudocode:  /* no lock example */  void start_thread(int* x) {   *x += 1; }  int main() {   int x = 0;   for (1000 times){     start_thread(&x);   }   print(x); }  /* in this case you have no idea what will print because thread A will take x and be like "ah yes it's 423" and then in the next instruction it'll be like "I'll increment this to be 424" and in the next one it'll say "okay now it's time to store 424 in the variable X" but like... there's a thousand threads all doing that at the same time, so odds are you'll have 5 that are like "ah yes this is 423 I'll set it to 424" */  /* not a good plan. Need a lock, so only one thread can use it at once. */ /* mutex example: */  void start_thread(int* x, int* x_mutex) {   *x += 1;   *x_mutex = 0; }  int main() {   int x = 0;   int x_mutex = 0;   for (1000 times){     while (x_mutex != 0){ } /* do nothing */     x_mutex = thread_id;     start_thread(&x, &x_mutex);   }   print(x); }  /* this should print 1000, but it's basically as slow as doing it single threaded. */  #define MAX 10  void start_thread(int* x, int* x_semaphore) {   *x += 1;   *x_semaphore += 1; }  int main() {   int x[MAX];   int x_semaphore = MAX;   for (1000 times) {     for (int i = 0; i < MAX; i++) {       x_semaphore -= 1;       start_thread(&x[i], &x_semaphore);     }     while (x_semaphore != MAX) { } /* do nothing */   }   int value = sum(x, MAX);   print(value); }
                                                           ┌───────────┐
 similar                        chronologicaldifferent═══════════════════════════════════════════════─────────────────────────────────────┘

--- #16 fediverse/899 ---
══════════════════════════════════════════════────────────────────────────────────┐
 frankly I'm just excited to see what humanity does with the endlessly            │
 calculated and stored blockchains. Like, that's a good set of pseudo-random      │
 data, I wonder if we could build something off of it that wasn't exclusively     │
 money? like, a necklace, I dunno.                                                │
 or like, a numbers station x2, where each message is accompanied with a          │
 pre-calculated destination somewhere on this endless and                         │
 impossible-to-understand string of data. and that part is what seeds the next    │
 code. once you start reading, certain numbers would be "flags" while others      │
 would be "data" and they'd each have the same size on the hardware. that way,    │
 they're impossible to predict.                                                   │
 ah, but wouldn't it be noticable that certain results seem to appear next to     │
 one another? well, isn't that just cryptology? Could probably be defeated if     │
 you had an AI advanced enough, just saying. something that sorted through        │
 massive mounds of data and gave you results in garbled or broken english. what   │
 a wonderful tool, that's wonderfully mis-abused, perhaps in the fu               │
                                                            ┌───────────┤
 similar                        chronologicaldifferent════════════════════════════════════════════─────────────────────────┴──────────┘

--- #17 fediverse/282 ---
════════════════════════════════════════════───────────────────────────────────────
 @user-209 
 I think you're right. Every letter in the variable name is another byte the OS
 has to keep track of, which was a bigger problem in the past than it is today
 (when it's been made irrelevant)
 
 it's interesting how habits persist though the conditions that caused them
 have faded. like a personal reflection of the environment you learned in.
 
 "A a = new a();" is much more concise and (crucially) you can fit more words
 to the right.
 
 "a + b = c; c -= 2; f_z.write(c); f_z.close();" could conceivably be written
 on a single line if you have short variable names. and when you only have so
 many lines...
 
 glad we're not constrained by those things anymore. the skeletal code that we
 look at daily is much clearer - scope is more important, and so it makes sense
 to encourage a coding style that illustrates it. however I can't help but
 think block formatting like this could be useful in some situations, such as
 when you'd normally be compelled to write a function for an operation that
 runs once or more.
                                                           ┌───────────┐
 similar                        chronologicaldifferent══════════════════════════════════════════════──────────────────────────────────────┘

--- #18 fediverse/1246 ---
═══════════════════════════════════════════════────────────────────────────────────
 @user-883 
 
 hehe if I don't understand how it works it's difficult for me to use things.
 My Linux friends get so exasperated with me because I'm like "cool script
 gimme like 2 days to figure it out" and they're like "bro just use these
 flags" and I'm like "no"
                                                           ┌───────────┐
 similar                        chronologicaldifferent═════════════════════════════════════════════════───────────────────────────────────┘

--- #19 fediverse/1892 ---
═════════════════════════════════════════════════════──────────────────────────────
 ┌─────────────────────────────────────────┐
 │ CW: C-programming-and-alcohol-mentioned │
 └─────────────────────────────────────────┘


 I want to write C programs with threads and manual memory management and
 function pointers and lots and lots of arrays and I'm not even kidding
 
 ... wait a minute I literally don't have a job, why am I not writing C
 programs right now?
 
 BRB I got something important to do, where's my vodka --> pkill firefox
                                                           ┌───────────┐
 similar                        chronologicaldifferent═══════════════════════════════════════════════════════─────────────────────────────┘

--- #20 fediverse/3028 ---
═══════════════════════════════════════════════════════────────────────────────────
 @user-570 
 
 I can write C in Rust, but I can't write Rust in any other language.
 
 there's a lot of unique semantic options for accomplishing things that I
 already know how to do that I often find my syntax is pretty... basic. lots of
 manual assignments, no more than 4 or 5 levels of function nesting.
 
 I like to use threads and arrays, and think about in-game simulation more like
 a calculation than an input-reacting device. though input would certainly be
 encouraged to make the simulation more precise.
 
 the borrow checker gets in my way, but that's not too big of a problem - I
 just have to copy a bit more data around. Easy peasy.
 
 (I'm a bit rusty, but I can learn syntax)
                                                           ┌───────────┐
 similar                        chronologicaldifferent═════════════════════════════════════════════════════════───────────────────────────┘