29. sad boy |
Published: 2025-02-08 [Sat] 19:38, by |
I tried turning 5kg of (dry) rice into rice wine, making use of a 20L bucket. I did not buy sticky rice and I did not steam my rice: I just kept throwing batches into my rice cooker. After rice cooked and cooled down in the bucket, I smeared in rice wine mold-yeast The end result was not good. Most of the rice became a thick, porridge like consistency. Despite containing high amounts of alcohol, the solids and liquids formed an undesirable team and possibly a 5th state of matter. Starting throwing slop a bowl at a time through a filter from one bucket to another, and as space began to emerge in the fermentation vessel I began adding water and shaking, in the hope to liberate more alcohol from solids. After many hours of pointless labor, my bucket with liters of thick, milky "rice wine" is just about a bust in my book. At least I can just distill it to make it not end up a complete waste... |
3. |
Published: 2025-02-08 [Sat] 19:35, by |
options are 1) have any gikocoin spent go on a separate file than the bank.txt or 2) make an exception where giko.py doesn't appear in rankings. Now if that money (on the txt file or belonging to giko.py) is to be used for a pot of gold lotto type system, that would be cool. Yeah make giko.py run a lottery with that money, perhaps? |
2. |
Published: 2025-02-08 [Sat] 19:28, by |
Now that giko.py lives on the Giko server it would also be fairly trivial to have her generate a webpage that lists users and balances publicly, eg at https://gikopoi.com/wealth/ I think it's a little fun to only see the 5 wealthiest via !wealth and other balances having to be requested manually, eg via "!balance player", but I'm open to all perspectives on this. It can be argued that a public list of all balances could risk many non-tripcoded having their wealth stolen by less ethical gikos but I don't think this is entirely an issue. |
1. What to do with "burnt" gikocoins? |
Published: 2025-02-08 [Sat] 19:23, by |
Akai, our chair of economic music, is working on a way to address the inflation issue of gikopoi -- finding a way to consume coins permanently for a use in a different sort of game that takes into mind principles learned from systems of "progressive taxation" From a different angle, it cannot be denied that if coins lost by gambling ended up in a special wallet, giko.py would probably have more coins than all other users combined. If coins lost gambling ended up in a special account, what would be interesting ways to make use of these coins? Maybe each week people with a balance of at least X gikocoins could vote for a user to receive a percent of the "pot", eg 5% Maybe each week, people could buy lottery tickets for a chance to win some random percentage of the pot, eg between 3% and 50% -- akin to the US "powerball" system or something like "keno" The most creative and fun answer will be the one implemented. |
5. |
Published: 2025-02-06 [Thu] 17:34, by |
>>4 A program to search for 2ch style tripcodes via regular expressions. |
2. |
Published: 2025-02-06 [Thu] 17:34, by |
archduke 0 - akai 1 |
1. Giko Chess Games |
Published: 2025-02-06 [Thu] 17:31, by |
Archduke vs Akai 2025-02-06, 17:20 1.e4 e5 2.Nb1c3 Ng8f6 3.Bf1c4 Qd8e7 4.d3 c6 5.Bc1g5 d5 6.Bg5xf6 Qe7xf6 7.exd5 b5 8.dxc6 bxc4 9.c7 Nb8c6 10.d4 Nc6xd4 11.Nc3d5 Qf6c6 12.Qd1h5 Nd4xc2 13.Ke1d2 Nc2xa1 14.Qh5xe5 Qc6e6 15.Ng1f3 Qe6xe5 16.Nf3xe5 Bf8d6 17.Ne5c6 Bc8a6 18.Rh1e1 Ke8d7 19.Nc6b4 Bd6xb4 20.Nd5c3 |
28. |
Published: 2025-02-02 [Sun] 14:21, by |
>>26 I need da baileys recipe |
27. |
Published: 2025-02-02 [Sun] 14:11, by |
I did the sugar water and baking yeast thing in a bottle.liquid alcoholic bread |
4. |
Published: 2025-02-02 [Sun] 13:44, by |
What does this do |
3. |
Published: 2025-02-01 [Sat] 15:45, by |
I can’t bread |
28. |
Published: 2025-02-01 [Sat] 00:43, by |
giko.py◆BOT: Sorry, I don't know when god was last here! |
1. Viruses don't exist |
Published: 2025-01-30 [Thu] 15:24, by |
Just a reminder that viruses don't exist and germ theory of "diseases" is a scam. |
1. MINE CRAFT |
Published: 2025-01-28 [Tue] 00:38, by |
MINE CRAFT IS FUN my taijitu garden in a1.2.6 https://booru.gikopoi.com/post/view/225 https://booru.gikopoi.com/post/view/226 https://booru.gikopoi.com/post/view/227 |
26. |
Published: 2025-01-27 [Mon] 15:08, by |
Recently turned 80L of sugar wine (containing 12kg of sugar) into ~10 bottles of vodka. It was an easy and smooth process. Something that's really aided my hooching lately is adding a small amount of diammonium phosphate and magnesium sulfate to the start of fermentation -- barely a pitch, hardly a gram of each -- but it somehow makes a huge difference in fermentation time. I plan on turning most of it into gin, but with the vodka, I've made some knock-off Bailey's that turned out amazing well (and only cost $1 to make a bottle of!) and tomorrow I'll try making a blood mary. Tomato juice is not sold here so I intend to make some fake V8 from a mix of tomato, carrot, salad greens, onion, bell pepper and then I'll add a dash of worcestor sauce and hot sauce to the cocktail, along with some lemon juice. When I more-or-less perfect my Bailey's and Bloody Mary recipes I will share them here. |
3. tripex 1.2 |
Published: 2025-01-07 [Tue] 05:24, by |
>>2 tripex 1.2 release notes + -f flag to read a list of expressions from a file * -s flag now takes an argument for when to begin/end stacking. negative values mean to stop stacking after the absolute value of the index. apply the patch as follows (make sure to apply the previous patch first:) patch tripex.c tripex-1.2.patch then recompile the software as follows: gcc tripex.c -o tripex -O3 -lcrypt here's an example of the new features combined for efficient dictionary searches. because expressions from argv are parsed after files, we have to put our first expression in it's own file :(. '-s -1' means to stop stacking after the first expression, so it will first check if it is even possible to match with any of the dictionary expressions. aspell -d en dump master | grep "^[a-z]\{5,5\}$" > len5dict.txt echo "[a-z]\{5,5\}" > 5a-z.txt ./tripex -n $(nproc) -s -1 -f 5a-z.txt -f len5dict.txt -----BEGIN FILE tripex-1.2.patch----- 13a14 > #define MAX_EXPRS 262144 18a20,23 > /* if i put this garbage on the stack instead of bss, it will segfault. */ > size_t n_exprs = 0; > regex_t exprs[MAX_EXPRS]; > 21c26 < fprintf(stderr, "usage: tripex [-Ehilnmsv] expressions\n" --- > fprintf(stderr, "usage: tripex [-Ef:hil:n:m:s:v] expressions\n" 22a28 > " -f\tread expressions from file (use '-' for stdin)\n" 28c34,46 < " -s\tstack expressions (logical AND)\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)++; 34a53 > long stack_after = 0; 40c59 < while ((opt = getopt(argc, argv, "E:hil:m:n:sv")) != -1) { --- > while ((opt = getopt(argc, argv, "E:f:hil:m:M:n:s:v")) != -1) { 44a64,81 > 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; 64a102 > stack_after = atol(optarg); 67c105 < printf("tripex 1.1 by taocana\n"); --- > printf("tripex 1.2 by taocana\n"); 73d110 < 81c118,121 < if (argc < 1) { --- > for (size_t i = 0; i < argc; i++) > appendExpr(exprs, &n_exprs, argv[i], re_flags); > > if (n_exprs < 1) { 86,91d125 < size_t n_exps = argc; < regex_t *exps = malloc(sizeof(regex_t) * n_exps); < for (size_t i = 0; i < n_exps; i++) < if (regcomp(&exps[i], argv[i], re_flags)) < errx(EXIT_FAILURE, "failed to compile regex"); < 97c131 < unsigned char key[key_len + 1]; /* dynamic array, bad form but i'm lazy */ --- > unsigned char key[key_len + 1]; 100c134 < for (size_t n = 0; !max_tries || n < max_tries ; n++) { --- > for (size_t n = 0; !max_tries || n < max_tries; n++) { 111,113c145,151 < for (size_t i = 0; i < n_exps; i++) < if (regexec(&exps[i], trip, ARRAY_SIZE(pmatch), pmatch, 0)) < if (sflag) --- > 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) 117c155 < else if (!sflag || i >= n_exps - 1) --- > else if (!stacking || i >= n_exprs - 1) { 118a157,159 > break; > } > } 123,125c164,165 < for (size_t i = 0; i < n_exps; i++) < regfree(&exps[i]); < free(exps); --- > for (size_t i = 0; i < n_exprs; i++) > regfree(&exprs[i]); 134a175 > /* unsigned for array lookups by character */ 152c193 < if (!code) --- > if (!code) /* doesn't fully handle crypt_r(3) errors yet */ |
11. |
Published: 2025-01-06 [Mon] 11:09, by |
古 蛙 水 池 飛 の や 込 音 む |
2. tripex 1.1 |
Published: 2025-01-05 [Sun] 06:05, by |
version 1.1, cryptography patch. i forgot to audit the cryptography; i made a huge boneheaded mistake with the key filter (thing that turns pure random bytes into printable ascii) where it was skewing a lot. now it uses an 85 character subset (256 % 85 = 1) which has a very tiny amount of skew but doesn't lose as much entropy as an unskewed 64 character subset of ascii would. the default key length is also increased to 10, so that it would be ~64 shannons of entropy total (a tripcode has 60 shannons.) here is the patch file, apply it to the original as follows: patch tripex.c tripex-1.1.patch then recompile the program as follows: gcc tripex.c -o tripex -O3 -lcrypt -----BEGIN FILE tripex-1.1.patch----- 36c36 < size_t key_len = 8; --- > size_t key_len = 10; 67c67 < printf("tripex 1.0 by taocana\n"); --- > printf("tripex 1.1 by taocana\n"); 167a168,175 > /* 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. > */ 169,176c177,192 < "{dDOFByx8Jdo=C.{hFw:'p%m+]E-*}~4" < "O)YiM99y?%A)tldRIN4!fat`J|(iI+}h" < "]59P#T_Qx#h0q8w+F,$}Vo5Gq;<rw]Y~" < "k6>O~Ge,.DW9`hqhaSf#A.vrnhy`[2Ct" < "Bb6|7Mr+iJZG5.&7>?K@{D~6*Vs'H_*>" < "$Mh3R-F$Sp^.E5R-W1DnQzXC@Tf']xxt" < "o`GLO'Ui`S/v,aegU2HkE3Y6y!WZm%?k" < "aD/H=yH4vQg7dC*(Gx$vV[<vV?jw8s^d"; --- > "!#$%&'()*+,-./012" > "3456789:;<=>?@ABC" > "DEFGHIJKLMNOPQRST" > "UVWXYZ^abcdefghij" > "klmnopqrstuvwxyz~" > "!#$%&'()*+,-./012" > "3456789:;<=>?@ABC" > "DEFGHIJKLMNOPQRST" > "UVWXYZ^abcdefghij" > "klmnopqrstuvwxyz~" > "!#$%&'()*+,-./012" > "3456789:;<=>?@ABC" > "DEFGHIJKLMNOPQRST" > "UVWXYZ^abcdefghij" > "klmnopqrstuvwxyz~" > "~"; |
1. tripex tripcode finding software |
Published: 2025-01-05 [Sun] 00:04, by |
releasing version 1.0 of my tripcode finding program, 'tripex' compile the program as follows: gcc tripex.c -o tripex -O3 -lcrypt example #1; find tripcodes containing 'nice' (case insensitive): ./tripex -n $(nproc) -i nice example #2; find tripcodes starting with either 'giko' or 'mona': ./tripex -n $(nproc) ^giko ^mona example #3; find fully lowercase tripcodes with quads: ./tripex -s -n $(nproc) "^[a-z]*$" "\(.\)\1\{3,\}" untested on anything but GNU/Linux with glibc, but it would probably work on FreeBSD too. don't trust any update posts unless they have my tripcode or you can audit them yourself! -----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])) static unsigned char saltFilter[256]; static unsigned char rngFilter[256]; char *tripcode(const char *key); void usage(void) { fprintf(stderr, "usage: tripex [-Ehilnmsv] expressions\n" " -E\tuse extended regular expressions\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 expressions (logical AND)\n"); } int main(int argc, char *argv[]) { int re_flags = 0; int sflag = 0; size_t n_procs = 1; size_t key_len = 8; size_t max_tries = 0; int opt; while ((opt = getopt(argc, argv, "E:hil:m:n:sv")) != -1) { switch(opt) { case 'E': re_flags |= REG_EXTENDED; 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; break; case 'v': printf("tripex 1.0 by taocana\n"); return EXIT_SUCCESS; case 'h': /* FALLTHROUGH */ default: usage(); return EXIT_FAILURE; } } argc -= optind; argv += optind; if (argc < 1) { usage(); errx(EXIT_FAILURE, "need at least one expression"); } size_t n_exps = argc; regex_t *exps = malloc(sizeof(regex_t) * n_exps); for (size_t i = 0; i < n_exps; i++) if (regcomp(&exps[i], argv[i], re_flags)) errx(EXIT_FAILURE, "failed to compile regex"); for (int i = 1; i < n_procs; i++) if (!fork()) break; regmatch_t pmatch[1]; unsigned char key[key_len + 1]; /* dynamic array, bad form but i'm lazy */ 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_exps; i++) if (regexec(&exps[i], trip, ARRAY_SIZE(pmatch), pmatch, 0)) if (sflag) break; else continue; else if (!sflag || i >= n_exps - 1) printf("%s %s\n", trip, key); free(trip); } for (size_t i = 0; i < n_exps; i++) regfree(&exps[i]); free(exps); 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 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) return NULL; strcpy(code, tempCode + 3); return code; } static unsigned char saltFilter[256] = "................................" ".............../0123456789......" ".ABCDEFGHIJKLMNOPQRSTUVWXYZ....." ".abcdefghijklmnopqrstuvwxyz....." "................................" "................................" "................................" "................................"; static unsigned char rngFilter[256] = "{dDOFByx8Jdo=C.{hFw:'p%m+]E-*}~4" "O)YiM99y?%A)tldRIN4!fat`J|(iI+}h" "]59P#T_Qx#h0q8w+F,$}Vo5Gq;<rw]Y~" "k6>O~Ge,.DW9`hqhaSf#A.vrnhy`[2Ct" "Bb6|7Mr+iJZG5.&7>?K@{D~6*Vs'H_*>" "$Mh3R-F$Sp^.E5R-W1DnQzXC@Tf']xxt" "o`GLO'Ui`S/v,aegU2HkE3Y6y!WZm%?k" "aD/H=yH4vQg7dC*(Gx$vV[<vV?jw8s^d"; |
2. |
Published: 2024-12-30 [Mon] 04:25, by |
I don't like it at all but a drop/get all button would be an ok solution if too many people like the feature |
1. Streams open by default |
Published: 2024-12-30 [Mon] 04:17, by |
As a limited experiment, all streams are open by default when you join. How do you feel about this? Is it good or bad? Should there be a button somewhere to open/close all streams? I prefer if you share your opinions with your name so I can go with what the community wants, per this issue. Thank you and happy holidays |
1. merp! |
Published: 2024-12-26 [Thu] 00:07, by |
merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp merp |
2. |
Published: 2024-12-22 [Sun] 17:09, by |
Glad you're alive boardsmin! I don't think anyone here has your email address, but come play Gikopoi before the end of the year if you can :) I'm sure there'll be quite a few people showing up between Christmas and New Years wishing you well |
1. hello, old friends ^___^ |
Published: 2024-12-20 [Fri] 09:08, by |
doubt anyone remembers me around this corner of the internet anymore, but im indeed still around!! just lurking now can't beleaf it's been almost 8 months (?) since i last posted on one of these BBSes... i guess im posting here specifically because of its memorable-ness???? time flies man!!!!! i recently got into baking, i made a really good strawberry cake yesterday. im also an alcoholic now #lifesgood boards is still alive-iiiishhh, and it's about to turn a year old!! ive moved on to newer things, though. pikidiary is my new microblogging site, heavily inspired by its boardsian roots. much more normie-y, but still fun. anyways, i miss a lot of y'all!! email me if you know who i am (*´︶`) cya around!!!! |