profile
viewpoint
Joanna Janet Zaitseva-Doyle aoeixsz4 Hamburg, Germany C, Perl, Python and Rust programmer. PhD Organic Chemistry (University of Hamburg). Pronouns: she/her ⚧

aoeixsz4/rusty-ircd 4

Working towards an IRC daemon written in Rust.

aoeixsz4/IRCdaemon 1

A simple Internet Relay Chat (IRC) server, written in GNU C with help from libev

aoeixsz4/beholder 0

IRC Announce Bot for hardfought.org, based on http://ascension.run/deathbot.py

aoeixsz4/EvilHack 0

A variant of NetHack that is designed to be a much more challenging experience than the original, drawing inspiration and content from various existing variants along with adding unique and never-before-seen custom content.

aoeixsz4/go_demo 0

Working on simulating the boardgame Go

aoeixsz4/nhs-fork 0

NetHack Scoreboard fork

aoeixsz4/octo-chainsaw 0

A collection of initialisation files for launching containerised ZNC on an FCOS VM in gcloud

aoeixsz4/SpliceHack 0

An in-progress nethack variant based on version 3.7. An attempt to build a "kitchen sink" style variant that is easy to pick up and play.

aoeixsz4/tnnt 0

Official repository for 'The November NetHack Tournament'

push eventtnnt-devteam/tnnt-backend

Joanna Doyle

commit sha 639cd072b70a9c3d1d2116cc213f3c6e050d6901

Update start and end-time for 2020 The configuration file config.json-example contains UNIX epoch time-stamps marking the beginning and end time of the tournament. Update these to begin at 00:00 UTC+0 on the 1st of November 2020, and ending at 00:00 UTC+0 on the 1st of December 2020. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Janet Zaitseva-Doyle

commit sha 4500bc31f5fb0feea65b5bdf13bba4953072d9c3

Merge pull request #1 from tnnt-devteam/master Add missing achievements field to example json config.

view details

Joanna Doyle

commit sha 5cabf96ad0132b3d4aa96a5660141f58cd1628f5

Update conduct multipliers / static points Update /config.json-example to match proposed multipliers and static points achievements in etherpad doc:- https://www.hardfought.org/etherpad/p/TNNT_Development_Discussion This may be a breaking change as code elsewhere may expect conducts to always have a multi, and become confused by the entries that now have points... Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha fe7250de8cf6581cc55b635f2ae9dd7bc26fb5e0

Change no-foo-kills from conducts to trophies Since conducts are done separately and with multipliers, plus the greedy Z-score algorithm proposed by aosdict/@copperwater, move the no-wizard-kills achievements etc. from the conducts section and make them trophies. Code probably still needs updating elsewhere to accommodate these changes. Repo unstable. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha e2a2fa365962aea7a7d21eedd15376a49f6745d6

Remove include argument from shebang line Linux does not support passing additional arguments to executables called with a shebang line. `#!/usr/bin/perl -I.` is possible, as is `#!/usr/bin/env perl`. However, `#!/usr/bin/env perl -I.` only works on certain version of unix. Others, including Linux, will execute /usr/bin/env with the single argument "perl -I." In any case, the script contains FindBin and use lib directives that include the directory tnnt-scoreboard.pl is placed in. Thus, the -I. argument is redundant, as @INC should already contain it. Therefore, remove the redundant -I. flag from the shebang line of /tnnt-scoreboard.pl. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha f806963cbb8ddf4b65badfe19e3aa19a0630ac85

filtered ascended-without-killing from the regular conducts list

view details

Joanna Doyle

commit sha 0a1a6da942557005d121e86411f36082dd1fa136

foobar Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 2092edbdffda18e6afec1e013e22c12270596319

Automatically remove /tmp/tnnt-scoreboard.lock if it contains a dead PID

view details

Joanna Doyle

commit sha 27fd2fea70862f7ab8b025e40af876059a189fb5

Add prototype conduct Z-scoring algorithm Attempt to implement the algorithm described by @copperwater. Every time a conduct is repeated, its value decreases in the series 1, 1/2, 1/3, ... However, the algorithm attempts to find the optimal sequence in which to count games in order to deliver the highest possible score with a given set of ascensions, depending on the conducts kept. I've not completely understood yet why the order matters, but it may be something to do with the conducts not all having equal value - otoh, individual conducts and their z-factors don't cross-talk & the algorithm design of picking the highest value (most conducts) of the remaining games each round will likely maximise the rate of decay. Having said all that, @copperwater is the one who's really looked at this and tried to make mathematical proofs and so on, so probably knows what he's doing. :) Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha d5ff9350ee5b1d25a4bf827fea5094d39fe7777d

Add some HardCoded to config.json-example Just to make life easier, I added additional static information about conducts to the json configuration. In addition to this, add logic to track games that have been processed already, so that they can have their scores removed/updated for conduct Z-scoring. This seems to be possible with $game->remove_then_add(). Will need to do testing. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 5b1a44a2103670b0f1ec2260a170d46f738f6bea

fixed some compile errors but now get an OoM kill :/

view details

Joanna Doyle

commit sha 0b7e1960497113c2ced8b10b29b5bb72e3f6240a

Implement Conduct Z-Scoring with grid Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 1e05f9f11f0fab029263bb18db395baed48d96d0

Switch to simpler Greedy Conduct Z-Score impl With the previous algorithm it looked as if we weren't actually saving the grid for anything useful. Also, nd-arrays are a bit clumsy to work with in perl. Instead, switch to a hash based method where each conduct has an associated Z-factor and multiplier key/value pair. The simplified algorithm is also shorter and a bit more readable. Remove some hard-coded stuff from config.json-example that is no longer necessary. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 6905fa83f3ad706e17eb6b170af9c31a6bfb1cf4

rm asdf.pl Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 3759beadd7253b0344e5d55fbe227aa35fc3ec8e

add missing return to Conduct::single_zscore Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 5bc3ab9a4fb7d5c48f86f8aff7e6067f75164ff0

Add ScoringList::get_score_by_key Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 28244e340ec9b8e8c783b1e42eabcea91f6bf48f

Change lookup keys for previous ascensions ScoringList::remove_and_add() and get_score_by_key() were unable to find games saved with the actual $game ref as a lookup key value. This is possibly because of equality overloading of blessed refs. Instead, switch to keys of the form clan/playername-index, where index is the index of the ascension in the clan or player ascension list. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 05b15f018bc01f7a01d49507a76d446cb71df9e4

fixup! Change lookup keys for previous ascensions

view details

Joanna Doyle

commit sha c907d8a9a7cd50bb704fb7bcdf6e40ad00434bb1

Solve things but don't escape the woods yet! Realised that, of course, the $game->add_score() method only adds scores for that specific game, whereas $player->add_score() and $clan->add_score(), plus their respective retrieval functions are necessary for updating scores for previous games - important for conduct Z-scoring and streak bonus. Other problem now is that call order seems inconsistent - TNNT::Tracker::Ascension must be called after TNNT::Tracker::Conduct and this is indeed the case. However, the latter gets too far ahead and tries to update previous game scores that the Ascension module hasn't done yet. How is this happening? Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha b3ba851d523827b6654f9cb3989fb4f74a3a4517

Fix lookup and update of prior ascs for zconducts The tracker object created in TNNT::Tracker::Ascension was incrementing the value under key 'asc_count' for every ascension, not just per-player. This created various errors due to incorrect lookup keys. Now increment $tracker->{'asc_count'}{$entity->name} instead. Lookups and updates of previous games to account for new optimal conduct Z-scoring seem to work. However, will need further testing to ensure the bonuses are in line with what's expected for the new algorithm. Next up: streak bonus modifications, and "Mercy" trophies for ascending-without-killing-foo. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 9 hours

push eventtnnt-devteam/tnnt-backend

Joanna Doyle

commit sha 639cd072b70a9c3d1d2116cc213f3c6e050d6901

Update start and end-time for 2020 The configuration file config.json-example contains UNIX epoch time-stamps marking the beginning and end time of the tournament. Update these to begin at 00:00 UTC+0 on the 1st of November 2020, and ending at 00:00 UTC+0 on the 1st of December 2020. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Janet Zaitseva-Doyle

commit sha 4500bc31f5fb0feea65b5bdf13bba4953072d9c3

Merge pull request #1 from tnnt-devteam/master Add missing achievements field to example json config.

view details

Joanna Doyle

commit sha 5cabf96ad0132b3d4aa96a5660141f58cd1628f5

Update conduct multipliers / static points Update /config.json-example to match proposed multipliers and static points achievements in etherpad doc:- https://www.hardfought.org/etherpad/p/TNNT_Development_Discussion This may be a breaking change as code elsewhere may expect conducts to always have a multi, and become confused by the entries that now have points... Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha fe7250de8cf6581cc55b635f2ae9dd7bc26fb5e0

Change no-foo-kills from conducts to trophies Since conducts are done separately and with multipliers, plus the greedy Z-score algorithm proposed by aosdict/@copperwater, move the no-wizard-kills achievements etc. from the conducts section and make them trophies. Code probably still needs updating elsewhere to accommodate these changes. Repo unstable. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha e2a2fa365962aea7a7d21eedd15376a49f6745d6

Remove include argument from shebang line Linux does not support passing additional arguments to executables called with a shebang line. `#!/usr/bin/perl -I.` is possible, as is `#!/usr/bin/env perl`. However, `#!/usr/bin/env perl -I.` only works on certain version of unix. Others, including Linux, will execute /usr/bin/env with the single argument "perl -I." In any case, the script contains FindBin and use lib directives that include the directory tnnt-scoreboard.pl is placed in. Thus, the -I. argument is redundant, as @INC should already contain it. Therefore, remove the redundant -I. flag from the shebang line of /tnnt-scoreboard.pl. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha f806963cbb8ddf4b65badfe19e3aa19a0630ac85

filtered ascended-without-killing from the regular conducts list

view details

Joanna Doyle

commit sha 0a1a6da942557005d121e86411f36082dd1fa136

foobar Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 2092edbdffda18e6afec1e013e22c12270596319

Automatically remove /tmp/tnnt-scoreboard.lock if it contains a dead PID

view details

Joanna Doyle

commit sha 27fd2fea70862f7ab8b025e40af876059a189fb5

Add prototype conduct Z-scoring algorithm Attempt to implement the algorithm described by @copperwater. Every time a conduct is repeated, its value decreases in the series 1, 1/2, 1/3, ... However, the algorithm attempts to find the optimal sequence in which to count games in order to deliver the highest possible score with a given set of ascensions, depending on the conducts kept. I've not completely understood yet why the order matters, but it may be something to do with the conducts not all having equal value - otoh, individual conducts and their z-factors don't cross-talk & the algorithm design of picking the highest value (most conducts) of the remaining games each round will likely maximise the rate of decay. Having said all that, @copperwater is the one who's really looked at this and tried to make mathematical proofs and so on, so probably knows what he's doing. :) Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha d5ff9350ee5b1d25a4bf827fea5094d39fe7777d

Add some HardCoded to config.json-example Just to make life easier, I added additional static information about conducts to the json configuration. In addition to this, add logic to track games that have been processed already, so that they can have their scores removed/updated for conduct Z-scoring. This seems to be possible with $game->remove_then_add(). Will need to do testing. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 5b1a44a2103670b0f1ec2260a170d46f738f6bea

fixed some compile errors but now get an OoM kill :/

view details

Joanna Doyle

commit sha 0b7e1960497113c2ced8b10b29b5bb72e3f6240a

Implement Conduct Z-Scoring with grid Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 1e05f9f11f0fab029263bb18db395baed48d96d0

Switch to simpler Greedy Conduct Z-Score impl With the previous algorithm it looked as if we weren't actually saving the grid for anything useful. Also, nd-arrays are a bit clumsy to work with in perl. Instead, switch to a hash based method where each conduct has an associated Z-factor and multiplier key/value pair. The simplified algorithm is also shorter and a bit more readable. Remove some hard-coded stuff from config.json-example that is no longer necessary. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 6905fa83f3ad706e17eb6b170af9c31a6bfb1cf4

rm asdf.pl Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 3759beadd7253b0344e5d55fbe227aa35fc3ec8e

add missing return to Conduct::single_zscore Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 5bc3ab9a4fb7d5c48f86f8aff7e6067f75164ff0

Add ScoringList::get_score_by_key Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 28244e340ec9b8e8c783b1e42eabcea91f6bf48f

Change lookup keys for previous ascensions ScoringList::remove_and_add() and get_score_by_key() were unable to find games saved with the actual $game ref as a lookup key value. This is possibly because of equality overloading of blessed refs. Instead, switch to keys of the form clan/playername-index, where index is the index of the ascension in the clan or player ascension list. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 05b15f018bc01f7a01d49507a76d446cb71df9e4

fixup! Change lookup keys for previous ascensions

view details

Joanna Doyle

commit sha c907d8a9a7cd50bb704fb7bcdf6e40ad00434bb1

Solve things but don't escape the woods yet! Realised that, of course, the $game->add_score() method only adds scores for that specific game, whereas $player->add_score() and $clan->add_score(), plus their respective retrieval functions are necessary for updating scores for previous games - important for conduct Z-scoring and streak bonus. Other problem now is that call order seems inconsistent - TNNT::Tracker::Ascension must be called after TNNT::Tracker::Conduct and this is indeed the case. However, the latter gets too far ahead and tries to update previous game scores that the Ascension module hasn't done yet. How is this happening? Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha b3ba851d523827b6654f9cb3989fb4f74a3a4517

Fix lookup and update of prior ascs for zconducts The tracker object created in TNNT::Tracker::Ascension was incrementing the value under key 'asc_count' for every ascension, not just per-player. This created various errors due to incorrect lookup keys. Now increment $tracker->{'asc_count'}{$entity->name} instead. Lookups and updates of previous games to account for new optimal conduct Z-scoring seem to work. However, will need further testing to ensure the bonuses are in line with what's expected for the new algorithm. Next up: streak bonus modifications, and "Mercy" trophies for ascending-without-killing-foo. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 9 hours

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 8208d5f96c2b04403ee2afd031bbb597d53b4648

hide terminal debug spam from TNNT::Tracker::Streak Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 9 hours

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha e323caeee507455cc52d5ff32f70510ba9cd7a65

hide terminal debug spam from Streak.pm Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 9 hours

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 1efac03cfa8f5391781d367a8ab19eda8e98d0eb

re-introduce conduct superceding Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 9 hours

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha b89cfa0cb6e4c0c93ac6ec9fa0a1f7bf29500f8d

re-introduce conduct superceding Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 9 hours

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha d84f079ff6ebf2b6b83d30eb7b51aa70ef0232f7

fixup! Finish new streak bonus implementation

view details

push time in 2 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 9e6818dc34d89fe67e157cd48aae2720b883c557

Fix 0-point conduct trophies on player page I had been using the $player->add_score() feature to add and retroactively update game score multipliers for conduct Z-scoring. These were the entries appearing on the player page. In fact this was not necessary, because I alrady had a reference for each game saved in the tracked cond_ascs list. Thus, instead, perform updates with $cond_asc[$i]->{'game'}->remove_and_add() - these may not be used again but it seems untidy not to update them. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 1ea2841cfc40776b58e53f8703dd5c70dd511940

Add Merciful trophies, aka ascend-without-killing There are one-off trophies for ascending without killing either: the wizard, any riders, the quest nemesis, Vlad, or the High Priest of Moloch. Tests appear to give the desired result. :) Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha aebc6cd0c22fb3227d1aba1fd91f58a7c863c0d4

Begin implementation of new streak-bonus algorithm The idea for the new streaks algo is that the bonus retroactively applies to all games in the streak. The bonus multiplier is capped at 1.5x and its value is 1 + 0.1*n, where n is the number of games in the streak. The multiplier for this is applied to the the sum of ascension points (excluding the streak bonus), i.e. base asc adjusted for role Z-score, condcut bonus and speedrun bonus. As a result, add code to TNNT/Tracker/Conduct.pm to update streak bonus points for games where conduct points are updated due to retroactive adjustment of conduct Z-scores by greedy algorithm. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 1c07adfc3e7aa9303ead8355b3c3526f25b3cd10

Implement retroactively updating streak bonus The streak code uses some callback systems to track/record streaks. The callbacks miss out on a lot of context that functions called as object methods of a TNNT::Tracker::Streak instance usually get. Therefore, some refs had to be explicitly passed to the StreakList code and subsequently to the callbacks. Code runs without error now, but does it behave correctly? Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 0cab15124ddaa8f4b21a50b71edaac26fdfa9487

subtract 1 from streak mult and truncate bonus to int Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 5e9f690b91116e0f84f435871bfdd91bfda2617e

Finish new streak bonus implementation Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha d09e29493146183369635e02d929487ee54e3e34

Merge branch 'main' into no-conduct-zscore Add streak bonus changes to branch w/o condcut Z-scoring Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha d1fa4e603eb26530c918a3934ec056beb524c368

fixup! Merge branch 'main' into no-conduct-zscore

view details

Joanna Doyle

commit sha c14f9adf55b751466e414daa8e75b36c667bccfe

fixup! fixup! Merge branch 'main' into no-conduct-zscore

view details

push time in 2 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 5e9f690b91116e0f84f435871bfdd91bfda2617e

Finish new streak bonus implementation Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 2 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 0cab15124ddaa8f4b21a50b71edaac26fdfa9487

subtract 1 from streak mult and truncate bonus to int Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 2 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 1c07adfc3e7aa9303ead8355b3c3526f25b3cd10

Implement retroactively updating streak bonus The streak code uses some callback systems to track/record streaks. The callbacks miss out on a lot of context that functions called as object methods of a TNNT::Tracker::Streak instance usually get. Therefore, some refs had to be explicitly passed to the StreakList code and subsequently to the callbacks. Code runs without error now, but does it behave correctly? Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 2 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha aebc6cd0c22fb3227d1aba1fd91f58a7c863c0d4

Begin implementation of new streak-bonus algorithm The idea for the new streaks algo is that the bonus retroactively applies to all games in the streak. The bonus multiplier is capped at 1.5x and its value is 1 + 0.1*n, where n is the number of games in the streak. The multiplier for this is applied to the the sum of ascension points (excluding the streak bonus), i.e. base asc adjusted for role Z-score, condcut bonus and speedrun bonus. As a result, add code to TNNT/Tracker/Conduct.pm to update streak bonus points for games where conduct points are updated due to retroactive adjustment of conduct Z-scores by greedy algorithm. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 2 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 1ea2841cfc40776b58e53f8703dd5c70dd511940

Add Merciful trophies, aka ascend-without-killing There are one-off trophies for ascending without killing either: the wizard, any riders, the quest nemesis, Vlad, or the High Priest of Moloch. Tests appear to give the desired result. :) Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 2 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 2052433489afec82b84850badd269b6dfa47cdfa

Add Merciful trophies, aka ascend-without-killing There are one-off trophies for ascending without killing either: the wizard, any riders, the quest nemesis, Vlad, or the High Priest of Moloch. Tests appear to give the desired result. :) Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 2 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 8ba467b5e8f8bc718b1a63cac2da91c49831016a

fix extremely high conduct scoring (forgot to subtract 1) Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 3 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 0ac7c13cb135f522e6af225a0af58971b5159090

fixup! remove conduct Z-scoring code

view details

push time in 3 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 9e6818dc34d89fe67e157cd48aae2720b883c557

Fix 0-point conduct trophies on player page I had been using the $player->add_score() feature to add and retroactively update game score multipliers for conduct Z-scoring. These were the entries appearing on the player page. In fact this was not necessary, because I alrady had a reference for each game saved in the tracked cond_ascs list. Thus, instead, perform updates with $cond_asc[$i]->{'game'}->remove_and_add() - these may not be used again but it seems untidy not to update them. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 3 days

create barnchaoeixsz4/tnnt-backend

branch : no-conduct-zscore

created branch time in 3 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha dcb4cd907ce86d4a0eb09ace9b8a102412f27be5

add missing points from conduct score entry Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha e24d1fb587df01496f6ab50a228cfa451b7d6c96

fixup! fixup! allow trophy to have undefined points

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 0e5a87090fafa8569ab8542b90a8aff1033af983

fixup! allow trophy to have undefined points

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha c3771a87f7a042eb709ba4814abfd555ccadc442

allow trophy to have undefined points Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 56c910d8404aed4270afa021821641c23de3c5d5

fixup! remove extra 50-points per asc

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 55631a32f0034313f1526ed5a461e87082fc564f

remove extra 50-points per asc

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha fbc8d17a720e0aaf0a35a8e1b14ab1080aae3add

fix over-substraction on conduct z-score updates Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 0ca43b9ab37cf8dcfe69a59a33f2bcc523edc7db

add base points of 50 to ascension entry Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 8511beb9c48a2444b53caabcdf92a24c2dd286bd

make Z-Scores role-only Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha bed3f6f285865ceb8c2cfe2973dc988216f1e655

add subtraction of 1 to single_zscore subroutine

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 83e80ae28e20cd263e789fc1220e12ed04500bde

change to simple multiplicative zscoring instead of +1 -1 thing in etherpad

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha b3ba851d523827b6654f9cb3989fb4f74a3a4517

Fix lookup and update of prior ascs for zconducts The tracker object created in TNNT::Tracker::Ascension was incrementing the value under key 'asc_count' for every ascension, not just per-player. This created various errors due to incorrect lookup keys. Now increment $tracker->{'asc_count'}{$entity->name} instead. Lookups and updates of previous games to account for new optimal conduct Z-scoring seem to work. However, will need further testing to ensure the bonuses are in line with what's expected for the new algorithm. Next up: streak bonus modifications, and "Mercy" trophies for ascending-without-killing-foo. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 5 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 28244e340ec9b8e8c783b1e42eabcea91f6bf48f

Change lookup keys for previous ascensions ScoringList::remove_and_add() and get_score_by_key() were unable to find games saved with the actual $game ref as a lookup key value. This is possibly because of equality overloading of blessed refs. Instead, switch to keys of the form clan/playername-index, where index is the index of the ascension in the clan or player ascension list. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 05b15f018bc01f7a01d49507a76d446cb71df9e4

fixup! Change lookup keys for previous ascensions

view details

Joanna Doyle

commit sha c907d8a9a7cd50bb704fb7bcdf6e40ad00434bb1

Solve things but don't escape the woods yet! Realised that, of course, the $game->add_score() method only adds scores for that specific game, whereas $player->add_score() and $clan->add_score(), plus their respective retrieval functions are necessary for updating scores for previous games - important for conduct Z-scoring and streak bonus. Other problem now is that call order seems inconsistent - TNNT::Tracker::Ascension must be called after TNNT::Tracker::Conduct and this is indeed the case. However, the latter gets too far ahead and tries to update previous game scores that the Ascension module hasn't done yet. How is this happening? Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 6 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 5bc3ab9a4fb7d5c48f86f8aff7e6067f75164ff0

Add ScoringList::get_score_by_key Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 6 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 6905fa83f3ad706e17eb6b170af9c31a6bfb1cf4

rm asdf.pl Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 3759beadd7253b0344e5d55fbe227aa35fc3ec8e

add missing return to Conduct::single_zscore Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 6 days

create barnchaoeixsz4/tnnt-backend

branch : main

created branch time in 6 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 0b7e1960497113c2ced8b10b29b5bb72e3f6240a

Implement Conduct Z-Scoring with grid Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 6 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 5b1a44a2103670b0f1ec2260a170d46f738f6bea

fixed some compile errors but now get an OoM kill :/

view details

push time in 7 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha d5ff9350ee5b1d25a4bf827fea5094d39fe7777d

Add some HardCoded to config.json-example Just to make life easier, I added additional static information about conducts to the json configuration. In addition to this, add logic to track games that have been processed already, so that they can have their scores removed/updated for conduct Z-scoring. This seems to be possible with $game->remove_then_add(). Will need to do testing. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 7 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 27fd2fea70862f7ab8b025e40af876059a189fb5

Add prototype conduct Z-scoring algorithm Attempt to implement the algorithm described by @copperwater. Every time a conduct is repeated, its value decreases in the series 1, 1/2, 1/3, ... However, the algorithm attempts to find the optimal sequence in which to count games in order to deliver the highest possible score with a given set of ascensions, depending on the conducts kept. I've not completely understood yet why the order matters, but it may be something to do with the conducts not all having equal value - otoh, individual conducts and their z-factors don't cross-talk & the algorithm design of picking the highest value (most conducts) of the remaining games each round will likely maximise the rate of decay. Having said all that, @copperwater is the one who's really looked at this and tried to make mathematical proofs and so on, so probably knows what he's doing. :) Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 7 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha f806963cbb8ddf4b65badfe19e3aa19a0630ac85

filtered ascended-without-killing from the regular conducts list

view details

Joanna Doyle

commit sha 0a1a6da942557005d121e86411f36082dd1fa136

foobar Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 2092edbdffda18e6afec1e013e22c12270596319

Automatically remove /tmp/tnnt-scoreboard.lock if it contains a dead PID

view details

push time in 7 days

push eventaoeixsz4/rusty-ircd

Joanna Janet Zaitseva-Doyle

commit sha 001a5a93da8564bd59910234cc03501b42297ece

Update README.md

view details

push time in 8 days

push eventaoeixsz4/rusty-ircd

Joanna Janet Zaitseva-Doyle

commit sha b0a3f36d055fb8cc8f80c9861e70bde7b6549e45

Add src/io.rs wrappers for ReadHalf/WriteHalf As a precursor to TLS/SSL implementation, add ReadHalf/WriteHalf wrappers, implementing AsyncRead and AsyncWrite on them. ReadHalfWrap and WriteHalfWrap are enums, currently the only variant is ClearText. However, this will allow easy implementation of a TLS/SSL Encrypted variant, which will use a TlsStream from tokio-rustls and only src/main.rs need handle accepting such sockets and performing the handshake, client.rs code may remain unchanged. Also add year 2020 to copyright notices at the head of source files. Signed-off-by: aoei/Joanna Janet Zaitseva-Doyle

view details

Joanna Janet Zaitseva-Doyle

commit sha ac38feb77aae44d928a1e1ff79fc690f18d072a6

fixup! Add src/io.rs wrappers for ReadHalf/WriteHalf

view details

Joanna Doyle

commit sha d62cbda07bb7c0a03c4d077015a8dc6ad469bdbc

Add JOIN and PART for basic channel implementation Added basic channel implementation. JOIN and PART work in simple tests. Channels are created when the first user joins and should be eliminated when no more users are present. Only joined users may send to chan. Initial user is given op and listed with an @: 332 #teamsplat : 353 #teamsplat :@aoei 366 #teamsplat :End of /NAMES list ^ above example shows empty TOPIC message and a user list with one nickname joined. Actually this should typically be sent after a server prefix, e.g. :barjavel.freenode.net 266 aoei_ 81632 90930 :Current global users 81632, max 90930 Will fix. But anyway chans function in the most basic sense: JOIN, PART and PRIVMSG/NOTICE relay. Also cleaned up some code with rustfmt and advice from clippy. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 64a8906c356daca73886fe9c54a6b6d7561ac904

Improve and refine channel implementation Add logic to ensure an exiting client leaves all channels behind. Previous commit did not do this, which lead to panic when another user attempted to join a non-existant channel (unwrap on a Weak::upgrade()). Remove some unwraps on Weak::upgrades() and be more explicit about the possibility of error. Make error handling more consistent. Write perl bot to act as a fuzzer against the ircd (intended to be run as several independent forked instances). Add TOPIC command. Running fuzzers revealed some panics in parser.rs due to testing &buf[..1] without first checking whether buf.is_empty(). Fuzzer also revealed a mistake in irc::msg(), remove(0) was called on a Vec after a check is_empty() && notice { return }. rusty-ircd is also panicking on an unwrap() of an Option<T> in User:send_msg() called from irc::msg(). Weak pointers to Client structs littering the place is a bit of a tell-tale. Add code to do some cleanup when this is detected - apparently the outer ClientHandler loop doesn't get everything, though I'm not entirely sure why. Possibly some race conditions are at play. Keeping track of these and opportunities to detect them and do cleanup is also complicated by poor code-factoring. E.g. irc/chan.rs contains four broadcast message functions that do almost exactly the same thing (send_msg(), notify_join(), notify_part() and notify_quit()). Refactored. Add two new general errors GenError::DeadClient and GenError::DeadUser. Added Drop Trait implementations to Client and User. May remove some bits of cleanup code if that works properly. Also realised nick changes are crucial. Added more complete Mutex locking of the relevant data structures during a nick change. Add log crate, add env_logger, add more detailed debug messages to the codebase. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha ad6cb1927b305d9241f21f1115b1456d49775d7e

Add perl fuzzer code Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha d25876c546f28a5cac8c487ecaac2841b6b6fa5c

Last fuzzer test showed good HashMap emptying In fact all keys were removed when every client left. Fluke? Also, implement LIST command. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha e7d3b1f270b7844cf028ce046f70f6e5729dc315

WIP: refactor and simplify irc/chan.rs Some fns have been removed and now the most important parts are handled by three methods: Chan::add_user(), Chan::rm_user() and Chan::update_nick(). The idea is to collect as much code as possible, involving nick change or manipulation of weak references, in the same place. Also change user keys to always be bare nick, prefixes like '+' or '@' are now added with post-processing. This is much simpler. Also switch those methods to iterator/combinator style processing. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha d36ab3368d7c932673ccd92091f8a5aab5e3774f

Fix and simplify some User methods Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha b83a4d297716e51050c508c67fd2d42bc3d9540c

Add some fuzzer metadata Basically some text files with lists of channels from Freenode, used as input for the fuzzer script. Also with this commit, confirm previous commit appears to have fixed the ghosts left in chan lists problem. Notes. With current snapshot d36ab33 / rusty-ircd 0.2.3, two rounds of light fuzzing afforded an empty HashMap after killall perl. Will try again with some heavier fuzzing (300 line targets file, more forked perl processes) Fuzz again 50 forked tasks, 300-chans.txt for the input. :O also reverted back to 0 hashmap size. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha ec4e1d36e15a457ea691feddfd0402470bb60b50

Add welcome reply on user registration Also add shortcodes for: RPL_YOURHOST, RPL_MYINFO and RPL_CREATED. These replies are not yet implemented, however. Rework formatting code for IRC reply messages and splitting long lists across multiple lines. Needs more testing. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 4bb02ff81f123395067c8a9f59bb7f7a92607095

Return a Vec of reply/error messages to client Define clearer separation between error messages for the client and error messages for the internal running of the ircd. Add additional IRC welcome replies 002 - 004 with hostname info, version info and other details about the server. IRC command handling functions now return a Vec of messages for the client, which will propagate up the call-stack and be handled in client.rs. Only messages sent to other clients need to be handled with side-effects in that sense. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 6987a84051995911e12778b2fad76bf44f3ee284

Further work on implementing new error handling Add ClientReply and ClientReplies return types to src/irc/chan.rs. Remove warnings. Now that many send_rpl calls have been removed from all sorts of bits of code, it may be possible to clean a few more things up. For example, removing the send_rpl fn from user (I don't think it is used). Also, some functions may no longer require being marked async. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha b8bef4f5ecd7b1ee24fa774fd91e15f6b9a71df4

fixup! Further work on implementing new error handling

view details

Joanna Doyle

commit sha d765b2618efb9bb8d8fa30ba0631d3747d4f7250

Merge remote-tracking branch 'origin/implement-tls' into develop Merge IO wrapper code in order to allow easier migration to TLS/SSL Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha dd91a248d2e88aa5339671a5350417d38a2e0198

Add TLS capability with tokio-native-tls The server is now programmed to listen on port 6667 (plaintext) *and* port 6697 at the same time, establishing encrypted connections on the latter. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 36b5f4c08abee5c46142c3a79ee7e313938057b8

fixup! Add TLS capability with tokio-native-tls

view details

Joanna Doyle

commit sha 6f2ea15ded87330ce4524ec7e2a4cc98ecbdd208

Improve channel support Topics now have time stamps and user masks. Topic replies no longer sent when there is no topic set. Echo JOIN/PART commands to user so clients e.g. weechat know they're joined. Its pretty neeeeat :D Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha d8deed431986154d2c7dd3f8a9e9185cf4703163

bump version to 0.3.0

view details

push time in 8 days

push eventaoeixsz4/rusty-ircd

Joanna Doyle

commit sha 6f2ea15ded87330ce4524ec7e2a4cc98ecbdd208

Improve channel support Topics now have time stamps and user masks. Topic replies no longer sent when there is no topic set. Echo JOIN/PART commands to user so clients e.g. weechat know they're joined. Its pretty neeeeat :D Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 8 days

push eventaoeixsz4/rusty-ircd

Joanna Doyle

commit sha 36b5f4c08abee5c46142c3a79ee7e313938057b8

fixup! Add TLS capability with tokio-native-tls

view details

push time in 8 days

push eventaoeixsz4/rusty-ircd

Joanna Doyle

commit sha dd91a248d2e88aa5339671a5350417d38a2e0198

Add TLS capability with tokio-native-tls The server is now programmed to listen on port 6667 (plaintext) *and* port 6697 at the same time, establishing encrypted connections on the latter. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 8 days

push eventaoeixsz4/rusty-ircd

Joanna Janet Zaitseva-Doyle

commit sha b0a3f36d055fb8cc8f80c9861e70bde7b6549e45

Add src/io.rs wrappers for ReadHalf/WriteHalf As a precursor to TLS/SSL implementation, add ReadHalf/WriteHalf wrappers, implementing AsyncRead and AsyncWrite on them. ReadHalfWrap and WriteHalfWrap are enums, currently the only variant is ClearText. However, this will allow easy implementation of a TLS/SSL Encrypted variant, which will use a TlsStream from tokio-rustls and only src/main.rs need handle accepting such sockets and performing the handshake, client.rs code may remain unchanged. Also add year 2020 to copyright notices at the head of source files. Signed-off-by: aoei/Joanna Janet Zaitseva-Doyle

view details

Joanna Janet Zaitseva-Doyle

commit sha ac38feb77aae44d928a1e1ff79fc690f18d072a6

fixup! Add src/io.rs wrappers for ReadHalf/WriteHalf

view details

Joanna Doyle

commit sha d765b2618efb9bb8d8fa30ba0631d3747d4f7250

Merge remote-tracking branch 'origin/implement-tls' into develop Merge IO wrapper code in order to allow easier migration to TLS/SSL Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 8 days

push eventaoeixsz4/rusty-ircd

Joanna Doyle

commit sha b8bef4f5ecd7b1ee24fa774fd91e15f6b9a71df4

fixup! Further work on implementing new error handling

view details

push time in 8 days

push eventaoeixsz4/rusty-ircd

Joanna Doyle

commit sha 441b0b9d1df97b77e9e210e3de4b969ad54ca97b

Fix nick-hoarding bug It was noticed that after a second NICK command, both old and new nicks were effective as targets for another user to send PRIVMSGs. Fix by removing the old hash key when a nick is changed. Change error handling code in order to send text-based error replies to the client. Clients are no longer killed due to erroneous commands, but no error message is being sent back. Not sure why. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 387ba3693c930f5c5d6b9365b37f02759d68e71e

Send error replies to clients it works!! previous issue was I'd forgotten to .await the async call to client.send_line(). Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 9ccd534c70e9061e9f7ab62271bcb2976683abb9

add more error propagation Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha d62cbda07bb7c0a03c4d077015a8dc6ad469bdbc

Add JOIN and PART for basic channel implementation Added basic channel implementation. JOIN and PART work in simple tests. Channels are created when the first user joins and should be eliminated when no more users are present. Only joined users may send to chan. Initial user is given op and listed with an @: 332 #teamsplat : 353 #teamsplat :@aoei 366 #teamsplat :End of /NAMES list ^ above example shows empty TOPIC message and a user list with one nickname joined. Actually this should typically be sent after a server prefix, e.g. :barjavel.freenode.net 266 aoei_ 81632 90930 :Current global users 81632, max 90930 Will fix. But anyway chans function in the most basic sense: JOIN, PART and PRIVMSG/NOTICE relay. Also cleaned up some code with rustfmt and advice from clippy. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 64a8906c356daca73886fe9c54a6b6d7561ac904

Improve and refine channel implementation Add logic to ensure an exiting client leaves all channels behind. Previous commit did not do this, which lead to panic when another user attempted to join a non-existant channel (unwrap on a Weak::upgrade()). Remove some unwraps on Weak::upgrades() and be more explicit about the possibility of error. Make error handling more consistent. Write perl bot to act as a fuzzer against the ircd (intended to be run as several independent forked instances). Add TOPIC command. Running fuzzers revealed some panics in parser.rs due to testing &buf[..1] without first checking whether buf.is_empty(). Fuzzer also revealed a mistake in irc::msg(), remove(0) was called on a Vec after a check is_empty() && notice { return }. rusty-ircd is also panicking on an unwrap() of an Option<T> in User:send_msg() called from irc::msg(). Weak pointers to Client structs littering the place is a bit of a tell-tale. Add code to do some cleanup when this is detected - apparently the outer ClientHandler loop doesn't get everything, though I'm not entirely sure why. Possibly some race conditions are at play. Keeping track of these and opportunities to detect them and do cleanup is also complicated by poor code-factoring. E.g. irc/chan.rs contains four broadcast message functions that do almost exactly the same thing (send_msg(), notify_join(), notify_part() and notify_quit()). Refactored. Add two new general errors GenError::DeadClient and GenError::DeadUser. Added Drop Trait implementations to Client and User. May remove some bits of cleanup code if that works properly. Also realised nick changes are crucial. Added more complete Mutex locking of the relevant data structures during a nick change. Add log crate, add env_logger, add more detailed debug messages to the codebase. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha ad6cb1927b305d9241f21f1115b1456d49775d7e

Add perl fuzzer code Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha d25876c546f28a5cac8c487ecaac2841b6b6fa5c

Last fuzzer test showed good HashMap emptying In fact all keys were removed when every client left. Fluke? Also, implement LIST command. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha e7d3b1f270b7844cf028ce046f70f6e5729dc315

WIP: refactor and simplify irc/chan.rs Some fns have been removed and now the most important parts are handled by three methods: Chan::add_user(), Chan::rm_user() and Chan::update_nick(). The idea is to collect as much code as possible, involving nick change or manipulation of weak references, in the same place. Also change user keys to always be bare nick, prefixes like '+' or '@' are now added with post-processing. This is much simpler. Also switch those methods to iterator/combinator style processing. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha d36ab3368d7c932673ccd92091f8a5aab5e3774f

Fix and simplify some User methods Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha b83a4d297716e51050c508c67fd2d42bc3d9540c

Add some fuzzer metadata Basically some text files with lists of channels from Freenode, used as input for the fuzzer script. Also with this commit, confirm previous commit appears to have fixed the ghosts left in chan lists problem. Notes. With current snapshot d36ab33 / rusty-ircd 0.2.3, two rounds of light fuzzing afforded an empty HashMap after killall perl. Will try again with some heavier fuzzing (300 line targets file, more forked perl processes) Fuzz again 50 forked tasks, 300-chans.txt for the input. :O also reverted back to 0 hashmap size. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha ec4e1d36e15a457ea691feddfd0402470bb60b50

Add welcome reply on user registration Also add shortcodes for: RPL_YOURHOST, RPL_MYINFO and RPL_CREATED. These replies are not yet implemented, however. Rework formatting code for IRC reply messages and splitting long lists across multiple lines. Needs more testing. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 4bb02ff81f123395067c8a9f59bb7f7a92607095

Return a Vec of reply/error messages to client Define clearer separation between error messages for the client and error messages for the internal running of the ircd. Add additional IRC welcome replies 002 - 004 with hostname info, version info and other details about the server. IRC command handling functions now return a Vec of messages for the client, which will propagate up the call-stack and be handled in client.rs. Only messages sent to other clients need to be handled with side-effects in that sense. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha 6987a84051995911e12778b2fad76bf44f3ee284

Further work on implementing new error handling Add ClientReply and ClientReplies return types to src/irc/chan.rs. Remove warnings. Now that many send_rpl calls have been removed from all sorts of bits of code, it may be possible to clean a few more things up. For example, removing the send_rpl fn from user (I don't think it is used). Also, some functions may no longer require being marked async. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 8 days

push eventaoeixsz4/rusty-ircd

Joanna Janet Zaitseva-Doyle

commit sha 6835ff3183c9f67f43e57a97e23aa69a4fa87aef

Update README.md

view details

push time in 8 days

PR opened NHTangles/beholder

Port to Python3 APIs

Hi! I updated bits of code so that this will run with Python 3. This includes: print() calls with parenthesis, removal of iteritems()/itervalues() in favour of items()/values(), and some changes to base64 encoding. There also seem to be some API changes to twisted, so the init code has been modified with a "reconnectingClientFactory" and a slightly different setup for registering the service through a reactor, instead of this application = service.Application() thing. Finally, it is no longer necessary to run the bot with the twistd -y beholder.py command, instead beholder.py can be excuted directly with python beholder.py or simply ./beholder.py.

Do note however, that I have not been able to test this against the full set of data (xlogfiles, livelogs, whereis, etc.) that it expects when running on the hardfought server.

Cheers Joanna

+71 -41

0 comment

3 changed files

pr created time in 8 days

create barnchaoeixsz4/beholder

branch : splicegirl

created branch time in 8 days

push eventaoeixsz4/beholder

Joanna Doyle

commit sha 19466daed35d6e678bff49105721ce1334e83e8c

make beholder.py executable Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 8 days

push eventaoeixsz4/beholder

Joanna Doyle

commit sha 287bf56b5d2fc3193fe6ce54a36b6699772d9190

python3: change .iteritems() and .itervalues() to .items() and .values(), respectively Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 8 days

push eventaoeixsz4/beholder

Joanna Doyle

commit sha ee7688714966b298357d442afdf509ee47a0960c

Update Beholder to use new Twisted API Following their online docs, construction and running of a reconnecting client service seems to be done differently now. Also, running the IRC bot with twistd -y beholder.py is no longer necessary. The bot imports a reactor object that registers the DeathBot service and handles reconnection. Connection with SSL also seems to work. More testing may still be necessary however. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha fd7525dbc339b33ff10eb9aa39a02d6ac64c9e83

fixup! Update Beholder to use new Twisted API

view details

Joanna Doyle

commit sha 771c8b567f416826b455cafe78f453e9dd8f066c

Update SASL login code for base64 encode changes in Python3 Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 8 days

push eventaoeixsz4/beholder

Joanna Doyle

commit sha 50c22ed2f7420121872ebdd7cd2d066ee0109f90

make python3 compatible Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 8 days

push eventaoeixsz4/beholder

Joanna Doyle

commit sha f75799aae36e5fd8df5c98788d40bd36742b33e5

change __builtin__ to __main__ Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 8 days

push eventaoeixsz4/beholder

Joanna Doyle

commit sha 8a9ff3b10de33f029e9f7d6e17dc9202f43f5b5f

add UTF-8 encoding tag to source Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 8 days

push eventaoeixsz4/beholder

Joanna Doyle

commit sha 7d3ecd31f7c9a69dd08bec452208a24cafc2e8b4

fixup! add UTF-8 encoding tag to source

view details

push time in 8 days

push eventaoeixsz4/beholder

Joanna Doyle

commit sha cdcec1fa927ae2c4553a14daf5a28e001d4fe45f

Delete non-Splice stuff Since we want a bot for #SpliceHack, delete stuff for other variants. There are potentially other ways to do this, Beholder can forward events to our bot if we request the beholder maintainers to add our bot to the forwading thingy. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 8 days

fork aoeixsz4/beholder

IRC Announce Bot for hardfought.org, based on http://ascension.run/deathbot.py

fork in 8 days

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha 98f54c9bf1e412537127cdd8223349d2fa163991

Add Evil Giant Samurai Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 9 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha e2a2fa365962aea7a7d21eedd15376a49f6745d6

Remove include argument from shebang line Linux does not support passing additional arguments to executables called with a shebang line. `#!/usr/bin/perl -I.` is possible, as is `#!/usr/bin/env perl`. However, `#!/usr/bin/env perl -I.` only works on certain version of unix. Others, including Linux, will execute /usr/bin/env with the single argument "perl -I." In any case, the script contains FindBin and use lib directives that include the directory tnnt-scoreboard.pl is placed in. Thus, the -I. argument is redundant, as @INC should already contain it. Therefore, remove the redundant -I. flag from the shebang line of /tnnt-scoreboard.pl. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 9 days

push eventaoeixsz4/dotfiles

Joanna Doyle

commit sha 64cf89396271450c9dd98f0c5897098b25e48ae5

add to-0x0 shortcut to .zshrc

view details

push time in 10 days

push eventaoeixsz4/dotfiles

Joanna Doyle

commit sha 36534a23eaa70ce04b70c9eb3c7b017659676642

latest config updates 2020-10-14

view details

push time in 11 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha fe7250de8cf6581cc55b635f2ae9dd7bc26fb5e0

Change no-foo-kills from conducts to trophies Since conducts are done separately and with multipliers, plus the greedy Z-score algorithm proposed by aosdict/@copperwater, move the no-wizard-kills achievements etc. from the conducts section and make them trophies. Code probably still needs updating elsewhere to accommodate these changes. Repo unstable. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 11 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 5cabf96ad0132b3d4aa96a5660141f58cd1628f5

Update conduct multipliers / static points Update /config.json-example to match proposed multipliers and static points achievements in etherpad doc:- https://www.hardfought.org/etherpad/p/TNNT_Development_Discussion This may be a breaking change as code elsewhere may expect conducts to always have a multi, and become confused by the entries that now have points... Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 11 days

push eventaoeixsz4/tnnt-backend

k21971

commit sha addc8ef625786c1401551f9be4a36a91bc94105e

Add missing achievements field to example json config.

view details

Joanna Janet Zaitseva-Doyle

commit sha 4500bc31f5fb0feea65b5bdf13bba4953072d9c3

Merge pull request #1 from tnnt-devteam/master Add missing achievements field to example json config.

view details

push time in 11 days

PR merged aoeixsz4/tnnt-backend

Add missing achievements field to example json config.

update my personal fork

+1 -0

0 comment

1 changed file

aoeixsz4

pr closed time in 11 days

PR opened aoeixsz4/tnnt-backend

Add missing achievements field to example json config.

update my personal fork

+1 -0

0 comment

1 changed file

pr created time in 11 days

push eventaoeixsz4/tnnt-backend

Joanna Doyle

commit sha 639cd072b70a9c3d1d2116cc213f3c6e050d6901

Update start and end-time for 2020 The configuration file config.json-example contains UNIX epoch time-stamps marking the beginning and end time of the tournament. Update these to begin at 00:00 UTC+0 on the 1st of November 2020, and ending at 00:00 UTC+0 on the 1st of December 2020. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 11 days

startedtnnt-devteam/tnnt-backend

started time in 12 days

fork aoeixsz4/tnnt

Official repository for 'The November NetHack Tournament'

fork in 12 days

startedreality/hgol

started time in 12 days

startedtnnt-devteam/tnnt-clanmgmt

started time in 12 days

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha 604a1e4716b6fb7846205a05f295f3d47560150d

add --name to container launch commands, to facilitiate stop/kill/rm commands

view details

Joanna Doyle

commit sha c959230f0f2ba866419b55e130b378571c3a63df

put secrets in /tmp on host, make readable

view details

Joanna Doyle

commit sha 1e6d93805de0f0b6de5cc88ff14dc8913241fe06

revert to stable stream

view details

Joanna Doyle

commit sha 89c6e4e437d44ffd51f63a39681646afe87466a7

Fix immediate exit of hypnotoad nhdb-mojo immediately exits because hypnotoad will fork and daemonise fix: add -f flag

view details

Joanna Doyle

commit sha ec4b04a400d77f4f31ea9ac444b9dc58f0e9c972

Add CREATE DATABASE command I thought a database named $POSTGRES_DB was automatically created, but logs from a provisioned FCOS instance with deployed containers reported errors about the database named nhdb not existing. Therefore, add command to explicitly create this database. Signed-off-by: @aoeixsz4

view details

push time in a month

push eventaoeixsz4/rust-forge

Joanna Janet Zaitseva-Doyle

commit sha 74488c95ca7a7b0b33626c31580c6f06dc2741d5

Update fott.md Alexis informed us that she goes by she/her. Update pronouns to match.

view details

push time in a month

PR opened rust-lang/rust-forge

Update username/github link of Gankra

Username previously listed for Gankra linked to a redirect github page. This was noticed by @Moongoodgirl who mentioned it on Freenode/##rust. I have also replaced the pronouns on the page with gender neutral 'they'. However, the ideal solution would be to get in touch with Alexis and ask them what pronouns they would like on the page.

Reported-by: @Moongoodgirl Signed-off-by: @aoeixsz4

Please enter the commit message for your changes. Lines starting

with '#' will be ignored, and an empty message aborts the commit.

On branch master

Your branch is up to date with 'origin/master'.

Changes to be committed:

modified: fott.md

+8 -8

0 comment

1 changed file

pr created time in a month

push eventaoeixsz4/rust-forge

Joanna Doyle

commit sha ef25b53a608a07de14ab35acbed24f0e508cde4b

Update username/github link of Gankra Username previously listed for Gankra linked to a redirect github page. This was noticed by @Moongoodgirl who mentioned it on Freenode/##rust. I have also replaced the pronouns on the page with gender neutral 'they'. However, the ideal solution would be to get in touch with Alexis and ask them what pronouns they would like on the page. Reported-by: @Moongoodgirl Signed-off-by: @aoeixsz4 # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # On branch master # Your branch is up to date with 'origin/master'. # # Changes to be committed: # modified: fott.md #

view details

push time in a month

fork aoeixsz4/rust-forge

Information useful to people contributing to Rust

https://forge.rust-lang.org/

fork in a month

push eventaoeixsz4/nhs-fork

Joanna

commit sha 51d27f24ddf4997d18f3088c04abe6c16b245e2c

Fix various broken links to make containers great again If a base image already has an ENV var PGDATA, then our command ARG=/our/default does nothing - instead the previouse value is used. This is why our PGDATA was trumped. Same happened to PATH for nhdb-mojo. COPY dereferenced symlinks perfectly adequately for the postgres img, but the nhdb-feeder image was full of broken symlinks. Need to investigate. COPY dir/* dest/ is OK for a single directory of symlinks, however any more depth results in copying actual symlinks. COPY -L don't work. Instead, create the structure with symlinks in stage/, then run cp -rL stage/* run/ :) - after which however COPY ./run/ $rundir/ is the Dockercommand, for some reason if you do ./run/* you over-expand and run's grandchildren are put in $rundir/. $secrets is now /tmp/nhdb-secrets (host-side), /run/secrets in container. the /tmp dir is also readable to anyone on the host - otherwise our namespaced postgres user won't be able to read it. This is perhaps less than entirely ideal, but OK for now. Tried running builds with --squash - thought it might reduce the number of distinct commits/layers, e.g. where sveral ARG statements had been used in a row. It did not. Realised that the pod name in podman deployment becomes the hostname for every pod container - they share a host. That means whether we use docker or podman, the db hostname is either set by --hostname when launching the actual db container with docker, or the --name given when creating a podman pod. Also add conditionals to pods/build.sh to limit rebuilding of intermediate stages (compiling cpan deps etc.). Despite the checks, podman still seems quite keen on rebuilding stuff.. May need to split files up again. Signed-off-by: Joanna

view details

push time in a month

push eventaoeixsz4/rusty-ircd

Joanna Doyle

commit sha b83a4d297716e51050c508c67fd2d42bc3d9540c

Add some fuzzer metadata Basically some text files with lists of channels from Freenode, used as input for the fuzzer script. Also with this commit, confirm previous commit appears to have fixed the ghosts left in chan lists problem. Notes. With current snapshot d36ab33 / rusty-ircd 0.2.3, two rounds of light fuzzing afforded an empty HashMap after killall perl. Will try again with some heavier fuzzing (300 line targets file, more forked perl processes) Fuzz again 50 forked tasks, 300-chans.txt for the input. :O also reverted back to 0 hashmap size. Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in a month

push eventaoeixsz4/rusty-ircd

Joanna Doyle

commit sha d36ab3368d7c932673ccd92091f8a5aab5e3774f

Fix and simplify some User methods Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

Joanna Doyle

commit sha a9a54c1c1ac283d2ae99cbb74bad64c8b7209424

Fix ghosts in channels Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha bff882b18137ab976743663a4c7a1e1e92f553fc

change provision.sh Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in a month

push eventaoeixsz4/dotfiles

Joanna Doyle

commit sha f8f811ba5ea8d0d33907f61d4561bdcaf0b9a531

stuff

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha a39a6f0fab79d39c26e7a08c5c96e7fbfde32cfa

postgres container wants to be run as non-root Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha 9cce10d966ef030c5353ebb434b81870b12709a3

docker run commands need full seadog:5000/nhdb-bla:testing

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha 031c612b115cdcc7bc4ed54341bad437bb9aaa1a

fixup! testing tag needs to be specified with docker run also

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha e6827895ca6bac37137f521bab561692b1a6743c

testing tag needs to be specified with docker run also

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha 9d1dd91f8d3a489fe611b186fe04535b4e9819e8

note overwrite of /etc/sysconfig/docker or Ignite won't boot

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha 9c64f712786f491d7809b1985561aa87ef8590a1

allow all ExecStartPre directives to fail, enable docker.service, add --insecure-registry via /etc/sysconfig/docker Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha b90f6237f32b55af664c6fdc66fbf27353becc2d

give up on that gpg-keys nonsense, curl should work fine, can even use the URL on the keyserver so i don't have to run httpd on another vm

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha 4df958e0660809000bf3bc4d903bb80058191160

Hook user@core.service with ExecStartPost drop-in As far as I can tell you can't directly enable any systemd user services using fcct/ignition. Thus my options are: o call systemctl --user from the script wrapped by nhdb-init-auth.service (first attempt failed) o add a drop-in on user@core.service - this at least means I will know at that point systemctl --user cmd should work o stop with the ridiculous hacks and just paste the whole public GPG key block into docker-cg1.yml - OR - fetch the key directly from some URL via HTTP Did not expect fetching my key from a keyserver with gpg --recv-keys to be this much of a pain... Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha f3a73038420ac28f84c42b5d29ce5f6be8da9716

now attempting to run systemctl enable/start on gpg-agent and dirmngr.socket/service from the script called by nhdb-init-auth.service...

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha 6f08ff70037bfa9d1c24bbf5567384300f36ae4c

fiddle with scripts, test again - main problem still gpg --search-keys/--receive-keys

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha b0e8de8b03a9daf547f59078b3809edd27a7f98c

key-fetch failed, try adding --keyserver hpks://keys.openpgp.org/ to CLI Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha 1c1b480f525cf04187617a91268dfb045a308599

Commit snapshot and attempt provisioning errorfix: get_env routine can't tolerate inline comments errorfix: change test for "interactive shell" to "is stdin a tty?" unnecessary output: lines with "cd -" echo the working dir - switch to cd $TOPDIR erroneous json output: - fixed double-quotes are preserved from the env file, leading to bad JSON formatting stripping quotes would be more robust than just fixing defs/preproc.env fix: add read_env () fn to setup.sh, reads line-by-line, stripping hash comments, parses data to strip "" or '' around values, but doesn't pass through envsubst if value is delimited by single-quotes, i.e. key="$value" or key=$value will be substituted, key='$value' will not (also only counts if whole value is within the quotes, key='$foo'bar will be not have quotes stripped, and $foo will be substituted) images built smoothly after a little tweaking, not yet tested locally, but pushed images signed with my key to "seadog:5000", a repository container running on an arch-linux gcp vm. locally, when pushing and signing, podman would not override /etc/containers/registries.d/ with $HOME/.config/containers/registries.d - sigstore-staging had to be set globally, tho I pointed it to $HOME so podman push would still work without sudo. With docker you can aparrently run `docker trust add name repo --key file`, so hopefully this works Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in a month

create barnchaoeixsz4/nhs-fork

branch : separate-image-build

created branch time in a month

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha 888f29152d5a67bf0757564fa1967a5946f3341b

fix some cd mistakes in setup.sh Signed-off-by: Joanna Doyle <jjadoyle@gmail.com>

view details

push time in 2 months

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha 168dfa3198506284f4c7131b6ac8066286bc6b1e

fixup! fixup! remove mounts.conf from yml

view details

push time in 2 months

push eventaoeixsz4/nhs-fork

Joanna Doyle

commit sha e9949a73cd3c37c33fd056fb58126671ad8c7664

fixup! remove mounts.conf from yml

view details

push time in 2 months

more