2. |
Published: 2025-10-06 [Mon] 10:27, by |
You really go for a lot of variety! Just got 100g of virginia flake in the mail last week and I'm extremely thrilled with it. Wanting to get my hands on some Indonesian tambolaka but it's not easy to find on google. May have to resort to Instagram searches. Interested to hear your thoughts on perique. I haven't had it for a long while. The English and virginia-burley blends should be a hit. You'll have to share reviews of the more esoteric ones! |
1. crazyeddiestobaccobuy |
Published: 2025-10-04 [Sat] 18:02, by |
Brookfield No.1 200g Dose Dan Tobacco Ascanian No. 1 Riverside Blend (ehemals Soft & Unique) 50g Dose Dan Tobacco DTM Bulldog Medium Cut 50g Dose Dan Tobacco DTM Dark Moon 250g Pouch Dan Tobacco DTM Hamborger Veermaster 50g Dose Dan Tobacco DTM Mischtabak Torben Dansk Kentucky U.S.A. 50g Dan Tobacco DTM Torben Dansk Louisiana Perique USA 50g Dose Dan Tobacco DTM Tumblin Dice 50g Dose Käptn Barsdorfs Bester Pipe Blend (ehemals Aromatic Mixture) 160g Dose Mac Baren Farmer US-Virginia und Burley 50g Dose Meistermischung Nr. 33 (100g Dose) Pipemaster Blue English (28521) 50g Pouch Pipe Republic Blends Pink Villa 100g Dose Rattray's Flake Collectioln Stirling 50g Dose Robert McConnell Pure Brasil 50g Dose Robert McConnell Pure Cuba 50g Dose Robert McConnell Pure Kentucky 50g Dose Sir Henry's Earl 125g (3592) Dose Wehde Hamburger Grüsse 250g Dose |
1. Brain Scaling Laws |
Published: 2025-10-03 [Fri] 06:12, by |
Fascinatingly, according to this paper, there are actually multiple biological scaling laws relating brain size to neuron count. Most mammals are on a relatively bad scaling law where, as the neuron count increases, the number of supporting glial cells must increase by a greater proportion, and the size of neurons must also increase. This means that increasing proportions of the brain must be devoted to glial cells and neuronal density falls so they run into sharply diminishing returns on scaling. Primates, in contrast, appear to have found a significantly better scaling law which allows us to scale neurons and glial cells 1:1 and to keep neural density constant across scales. This allows us to support vastly more neurons for a given large scale brain and explains why we are significantly more intelligent than larger animals like whales or elephants which have substianlly larger brains than us. |
2. explanation console stdin, stdout, redirection |
Published: 2025-09-27 [Sat] 03:37, by |
#!/bin/bash # ┏━┓╻ ┏━┓╻ ╻┏┓╻╻ ╻┏┳┓┏━┓╻ ╻ USAGE: playnumpv <days> # ┣━┛┃ ┣━┫┗┳┛┃┗┫┃ ┃┃┃┃┣━┛┃┏┛ (where days = number of days to # ╹ ┗━╸╹ ╹ ╹ ╹ ╹┗━┛╹ ╹╹ ┗┛ search back for newer media files) # Check if argument is provided if [ -z "$1" ] || [[ ! "$1" =~ ^[0-9]+$ ]]; then echo "Usage: $0 <days>" exit 1 fi # Create a temporary playlist file in a safe location playlist=$(mktemp) || { echo "Failed to create temporary file"; exit 1; } # Set trap to clean up temporary file on exit trap 'rm -f "$playlist"' EXIT # Get absolute path of the playlist to exclude it from search abs_playlist=$(realpath "$playlist") # Find all media files modified in the last $1 days and add them to the playlist # Using absolute paths to avoid issues with relative paths find "$PWD" -type f -regextype posix-extended -regex '.*\.(mp3|flac|opus|ogg|m4a|wav|nsf|mod|xm)' \ -mtime -"${1}" ! -path "$abs_playlist" -print0 | \ sort -z | \ tr '\0' '\n' > "$playlist" # Check if any files were found if [ ! -s "$playlist" ]; then echo "No files found newer than ${1} days." exit 0 fi # Count the number of files in the playlist file_count=$(wc -l < "$playlist") echo "Found $file_count files to play." # Play the playlist with mpv, using unbuffer to maintain terminal connection # and process substitution to capture output without breaking stdin unbuffer -p mpv --shuffle --term-osd=auto --osd-level=2 --no-audio-display \ --playlist="$playlist" 2>&1 > >(grep -E "Playing") < /dev/tty # Multi-line comment explaining the redirection technique: : <<'EOF' EXPLANATION OF THE REDIRECTION TECHNIQUE: The command uses several advanced shell features to maintain keyboard control while filtering output: 1. `unbuffer -p`: - Creates a pseudo-terminal for mpv - Ensures mpv maintains interactive behavior including keyboard input handling 2. `2>&1`: - Redirects stderr to stdout - Combines both output streams 3. `> >(grep -E "Playing")`: - Uses process substitution (the `>(...)` syntax) - Creates a temporary file descriptor connected to grep - Sends mpv's output to grep without breaking terminal connection - Unlike a regular pipe, this doesn't disrupt keyboard input 4. `< /dev/tty`: - Explicitly redirects stdin to the terminal device - Ensures mpv gets keyboard input directly from the terminal - This is critical for maintaining keyboard control WHY THIS WORKS WHEN REGULAR PIPES FAIL: Regular pipes (mpv | grep) break keyboard input because: - The shell puts commands in separate process groups - mpv detects its output is going to a pipe and may change behavior - Terminal control gets disrupted Our solution works because: - unbuffer maintains the terminal connection - Process substitution doesn't break the terminal connection like a pipe - Explicit terminal input redirection ensures keyboard control - The combination preserves mpv's interactive capabilities DATA FLOW: Keyboard Input → /dev/tty → mpv (via unbuffer) → Process Substitution → grep → Terminal EOF |
1. PLAY NU MPV |
Published: 2025-09-27 [Sat] 02:22, by |
https://x0.at/30jh.png #!/bin/bash # ┏━┓╻ ┏━┓╻ ╻┏┓╻╻ ╻┏┳┓┏━┓╻ ╻ USAGE: playnumpv <days> # ┣━┛┃ ┣━┫┗┳┛┃┗┫┃ ┃┃┃┃┣━┛┃┏┛ (where days = number of days to # ╹ ┗━╸╹ ╹ ╹ ╹ ╹┗━┛╹ ╹╹ ┗┛ search back for newer media files) # Check if argument is provided if [ -z "$1" ] || [[ ! "$1" =~ ^[0-9]+$ ]]; then echo "Usage: $0 <days>" exit 1 fi # Create a temporary playlist file in a safe location playlist=$(mktemp) || { echo "Failed to create temporary file"; exit 1; } # Set trap to clean up temporary file on exit trap 'rm -f "$playlist"' EXIT # Get absolute path of the playlist to exclude it from search abs_playlist=$(realpath "$playlist") # Find all media files modified in the last $1 days and add them to the playlist # Using absolute paths to avoid issues with relative paths find "$PWD" -type f -regextype posix-extended -regex '.*\.(mp3|flac|opus|ogg|m4a|wav|nsf|mod|xm)' \ -mtime -"${1}" ! -path "$abs_playlist" -print0 | \ sort -z | \ tr '\0' '\n' > "$playlist" # Check if any files were found if [ ! -s "$playlist" ]; then echo "No files found newer than ${1} days."; exit 0 fi # Count the number of files in the playlist file_count=$(wc -l < "$playlist") echo "Found $file_count files to play." # Play playlist with mpv using unbuffer to maintain terminal connection # and process substitution to capture output without breaking stdin unbuffer -p mpv --shuffle --term-osd=auto --osd-level=2 --no-audio-display \ --playlist="$playlist" 2>&1 > >(grep -E "Playing") < /dev/tty |
1. Finally the universe listened to plab |
Published: 2025-09-24 [Wed] 20:53, by |
https://www.arctic.de/en/highlights/senza-passive-cooled-pc/ The UNDER DESK PC WITH HEATPIPES GOING TO BIG PASSIVE RADIATORS. SILENCE! SILENCE! SILENCE! SILENCE! |
15. |
Published: 2025-09-24 [Wed] 12:43, by |
nobody cares about heyuripedo news 4chan lost heyuri lost sharty lost 4-ch won ylilauta won |
4. President Candidate |
Published: 2025-09-15 [Mon] 19:41, by |
I am evil Kata i say Kill all gikos!!! and wage war against .net giko! we will conquer the internet and own all gikoland!!! |
3. |
Published: 2025-09-06 [Sat] 17:37, by |
I, crane ShovelFort, decided to become president of gikopoi.com Rest assured I will do my utmost to do nothing all day and never take anything into my hands, any quarrels will be yours to solve, any problem will be yours to solve and, yes, any rewards will be OURS to share :) I vow to become the laziest president ever! |
2. |
Published: 2025-09-04 [Thu] 20:25, by |
Let's just elect Butterscotch again so he is forced to stay with us |
1. Giko Presidential Run 2026 |
Published: 2025-09-04 [Thu] 20:21, by |
We are looking for candidates for the presidential run of 2026. Butterscotch , our great candidate from 2024-2025 has announced that he is growing weary of his duties and is opening the floor to elections. Please enter your policy in this thread. Debates between candidates can occur within this thread or on site on the given days -- please create events on https://events.gikopoi.com/ if you will -- Debate #1 September 27 Debate #2 October 11 Debate #3 October 25 Election Day November 4 |
8. |
Published: 2025-08-31 [Sun] 16:56, by |
fully patched up2date src for convenience :^) ----BEGIN FILE tripex.c---- /* CC0-1.0 */ #include <err.h> #include <crypt.h> #include <regex.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/random.h> #define ARRAY_SIZE(x) (sizeof((x)) / sizeof((x)[0])) #define MAX_EXPRS 262144 static unsigned char saltFilter[256]; static unsigned char rngFilter[256]; char *tripcode(const char *key); /* if i put this garbage on the stack instead of bss, it will segfault. */ size_t n_exprs = 0; regex_t exprs[MAX_EXPRS]; void usage(void) { fprintf(stderr, "usage: tripex [-Ef:hil:n:m:s:v] expressions\n" " -E\tuse extended regular expressions\n" " -f\tread expressions from file (use '-' for stdin)\n" " -h\tshow usage\n" " -i\tignore case\n" " -l\tkey length\n" " -n\tnumber of threads\n" " -m\tmax number of tries (per thread!)\n" " -s\tstack (logical AND) expressions before/after expr #n (negative for before)\n"); } void appendExpr(regex_t exprs[], size_t *i, char *str, int re_flags) { /* avoiding malloc like the plague, simple and fast shitware! * if you somehow need more than MAX_EXPRS, change it & recompile. */ if (*i >= MAX_EXPRS) errx(EXIT_FAILURE, "no %s-kun! it's too many exprs, it wont fit!", getlogin()); if (regcomp(&exprs[*i], str, re_flags)) errx(EXIT_FAILURE, "failed to compile regex '%s'", str); (*i)++; } int main(int argc, char *argv[]) { int re_flags = 0; int sflag = 0; long stack_after = 0; size_t n_procs = 1; size_t key_len = 10; size_t max_tries = 0; int opt; while ((opt = getopt(argc, argv, "E:f:hil:m:M:n:s:v")) != -1) { switch(opt) { case 'E': re_flags |= REG_EXTENDED; break; case 'f': FILE *fp = stdin; if (strcmp(optarg, "-") != 0) fp = fopen(optarg, "r"); if (!fp) err(EXIT_FAILURE, "couldn't open regex file '%s'", optarg); char *line = NULL; size_t len = 0; ssize_t nread; while ((nread = getline(&line, &len, fp)) != -1) { *strchr(line, '\n') = '\0'; appendExpr(exprs, &n_exprs, line, re_flags); } free(line); fclose(fp); break; case 'i': re_flags |= REG_ICASE; break; case 'l': key_len = atol(optarg); if (key_len < 1) errx(EXIT_FAILURE, "key length must be at least 1"); break; case 'n': n_procs = atol(optarg); if (n_procs < 1) errx(EXIT_FAILURE, "need at least one process"); break; case 'm': /* ! PER THREAD ! */ max_tries = atol(optarg); if (max_tries < 1) errx(EXIT_FAILURE, "need at least one try"); break; case 's': sflag = 1; stack_after = atol(optarg); break; case 'v': printf("tripex 1.2 by taocana\n"); return EXIT_SUCCESS; case 'h': /* FALLTHROUGH */ default: usage(); return EXIT_FAILURE; } } argc -= optind; argv += optind; for (size_t i = 0; i < argc; i++) appendExpr(exprs, &n_exprs, argv[i], re_flags); if (n_exprs < 1) { usage(); errx(EXIT_FAILURE, "need at least one expression"); } for (int i = 1; i < n_procs; i++) if (!fork()) break; regmatch_t pmatch[1]; unsigned char key[key_len + 1]; key[key_len] = 0; for (size_t n = 0; !max_tries || n < max_tries; n++) { if (getrandom(key, key_len, 0) < 0) err(EXIT_FAILURE, "failed to get random key"); for (int i = 0; i < key_len; i++) key[i] = rngFilter[key[i]]; char *trip = tripcode(key); if (!trip) err(EXIT_FAILURE, "failed to generate tripcode"); for (size_t i = 0; i < n_exprs; i++) { int stacking = (sflag && ((stack_after >= 0 && i >= stack_after) || (stack_after < 0 && i < -stack_after))); if (regexec(&exprs[i], trip, ARRAY_SIZE(pmatch), pmatch, 0)) if (stacking) break; else continue; else if (!stacking || i >= n_exprs - 1) { printf("%s %s\n", trip, key); break; } } free(trip); } for (size_t i = 0; i < n_exprs; i++) regfree(&exprs[i]); return EXIT_SUCCESS; } char *tripcode(const char *key) { /* we don't do any sjis conversion, but who cares anyway? */ if (strlen(key) == 0) return NULL; /* unsigned for array lookups by character */ unsigned char *tempKey = malloc(strlen(key) + 2); if (!tempKey) return NULL; strcpy(tempKey, key); strcat(tempKey, "H."); unsigned char salt[3]; for (int i = 0; i < 3; i++) salt[i] = saltFilter[tempKey[i+1]]; salt[2] = 0; free(tempKey); struct crypt_data data; bzero(&data, sizeof(struct crypt_data)); char *tempCode = crypt_r(key, salt, &data); unsigned char *code = malloc(strlen(tempCode) - 3); if (!code) /* doesn't fully handle crypt_r(3) errors yet */ return NULL; strcpy(code, tempCode + 3); return code; } static unsigned char saltFilter[256] = "................................" ".............../0123456789......" ".ABCDEFGHIJKLMNOPQRSTUVWXYZ....." ".abcdefghijklmnopqrstuvwxyz....." "................................" "................................" "................................" "................................"; /* we must get printable ascii from a random byte, * but 256 % 94 = 68 which leaves too much skew. * quantizing into 64 chars won't skew at all, but * it only has 6 shannons of entropy per character. * an 85 character quantization only skews by a * remainder of one, which is miniscule enough and * we average 6.41 shannons per character. */ static unsigned char rngFilter[256] = "!#$%&'()*+,-./012" "3456789:;<=>?@ABC" "DEFGHIJKLMNOPQRST" "UVWXYZ^abcdefghij" "klmnopqrstuvwxyz~" "!#$%&'()*+,-./012" "3456789:;<=>?@ABC" "DEFGHIJKLMNOPQRST" "UVWXYZ^abcdefghij" "klmnopqrstuvwxyz~" "!#$%&'()*+,-./012" "3456789:;<=>?@ABC" "DEFGHIJKLMNOPQRST" "UVWXYZ^abcdefghij" "klmnopqrstuvwxyz~" "~"; |
26. |
Published: 2025-08-30 [Sat] 18:40, by |
Something like !room to change the active room would be cool. Not sure how many gikocoins it should take. |
25. |
Published: 2025-08-07 [Thu] 20:47, by |
>>24 I love the capcha-redirect scheme, works without icky javascript. But i thought it would give me a unique post url... that would allow a one-time post. I don't see it doing that. I seem to be on page: ht_tps://bbs.gikopoi.com/post/1705335928/24 As to yuour questeeionne... I don't know what '!trip' is supposed to do. But if those are affecting state of anything... I'd wonder about maintaining relative sequence order. |
24. |
Published: 2025-08-07 [Thu] 15:26, by |
Thinking of adding a !trip function that lets you search like... !trip gyudon_addict -- show a list of trips associated with the name "gyudon_addict", or !trip !OWilfaktBI -- show a list of names associated with the trip ◆OWilfaktBI Any ideas on how to sort this? It could go by the "!seen" index (maybe last 5 logins associated with name/trip) or it could go by the !balance index (the richer the name+trip, the higher up in the ranking). Feedback welcome before I implement it . I am tending towards the former option but I appreciate input |
37. |
Published: 2025-08-04 [Mon] 07:10, by |
. ^ This speck you see? its archduke's archdick, aka toki ko's tokock. (Enhanced size to be visible to the human eye) |
5. |
Published: 2025-08-02 [Sat] 18:38, by |
Lots of games between Phatty, Archy, and hjiu tonight. Phatty and Arch both tasted defeat to the new player. The addiction to GIPF is spreading like a disease. |
4. |
Published: 2025-08-01 [Fri] 01:41, by |
>>3 Archie, you're whole post is founded on assumptions and fabrications |
3. |
Published: 2025-07-31 [Thu] 17:05, by |
So is world2ch just heyuri minus the pedophiles? Or am I missing something? Broken links all around the site and constant censorship from the admin. He really needs to research more about what world2ch was: https://14get.helioho.st/ Two of the biggest posters on world2ch version 2 are pretty regular giko people! |
2. |
Published: 2025-07-29 [Tue] 19:03, by |
http://world2ch.net/oekaki/src/1753814500046.png is without a doubt my favorite |
1. Still using DQN? - Quality Tutorial |
Published: 2025-07-29 [Tue] 18:53, by |
Get out of that low quality board and go to world2ch: more quality than DQN and saovq(now especially) combined Only the freshest threads straight from the shore, shucked and ready to eat. A don't forget to stop by http://world2ch.net/oekaki/ , the oekaki vendor only serves true quality drawings. Perhaps the administrator will create a news4vip board so we can call it VIP quality. |
4. |
Published: 2025-07-18 [Fri] 20:38, by |
More brilliant games with phatty tonight! 2 rounds of Gipf and 1 of Zertz. Wiki article underway... https://wiki.gikopoi.com/w/GipfProject |
3. |
Published: 2025-07-18 [Fri] 13:01, by |
Successful round of GIPF last night with PhatCat. Played ZERTZ today with waifu. Crazy fun. I'm planning on DIYing some of the Gipf project games because the games are very simple but would end up being at least $50 a pop if I wanted to import them to Indonesia. Based on this charming story, I think the game dev would approve: http://krisburm.be/en/extracts#checkers My "bright idea" is to use plastic bottle caps as pieces. I already have 18 black bottle caps and 18 of various colors to serve as a base set for Gipf. Turn all the bottle caps upside down and add another, now there's a Zertz set. (just add marbles or other tokens) Manufacturing a Yinsh set would take a bit more work but I got ideas. too bad I don't know anyone locally with a 3D printer because that could produce some really solid pieces but DIY with random odds and ends can add a lot of character to games. Googling (gipf project game) + diy shows a lot of crafty ingenuity. |
36. silly face |
Published: 2025-07-18 [Fri] 05:54, by |
oooo$$$$$$$$$$$$oooo oo$$$$$$$$$$$$$$$$$$$$$$$$o oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o o$ $$ o$ o $ oo o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o $$ $$ $$o$ oo $ $ "$ o$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$o $$$o$$o$ "$$$$$$o$ o$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$o $$$$$$$$ $$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$$$ """$$$ "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ "$$$ $$$ o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ "$$$o o$$" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$o $$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$$o o$$$oooo$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ o$$$$$$$$$$$$$$$$$ $$$$$$$$"$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$"""""""" """" $$$$ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" o$$$ "$$$o """$$$$$$$$$$$$$$$$$$"$$" $$$ $$$o "$$""$$$$$$"""" o$$$ $$$$o o$$$" "$$$$o o$$$$$$o"$$$$o o$$$$ "$$$$$oo ""$$$$o$$$$$o o$$$$"" ""$$$$$oooo "$$$o$$$$$$$$$""" ""$$$$$$$oo $$$$$$$$$$ """"$$$$$$$$$$$ PThhHHhhBT!!! $$$$$$$$$$$$ $$$$$$$$$$" "$$$"""" |