2011-05-09T00:03:54 *** _flag <_flag!~flag@69-165-173-172.dsl.teksavvy.com> has quit IRC (Quit: Lost terminal) 2011-05-09T00:08:18 *** bhasker has quit IRC (Quit: bhasker) 2011-05-09T00:11:15 *** chris__0076 has joined #aichallenge 2011-05-09T00:13:44 *** Chris_0076 has quit IRC (Ping timeout: 240 seconds) 2011-05-09T00:13:51 *** chris__0076 has quit IRC (Client Quit) 2011-05-09T00:27:37 *** HighMighty has quit IRC (Ping timeout: 252 seconds) 2011-05-09T00:57:54 *** delt0r_ has joined #aichallenge 2011-05-09T00:59:18 *** delt0r___ has quit IRC (Ping timeout: 260 seconds) 2011-05-09T01:20:06 *** amriedle has quit IRC (Quit: Lost terminal) 2011-05-09T01:28:24 *** GeorgeSebastian has joined #aichallenge 2011-05-09T02:14:05 *** kaemo has joined #aichallenge 2011-05-09T02:35:38 *** antimatroid has joined #aichallenge 2011-05-09T02:39:30 *** dr- has joined #aichallenge 2011-05-09T02:43:29 *** FireFly has joined #aichallenge 2011-05-09T02:56:08 *** kaemo has quit IRC (Ping timeout: 258 seconds) 2011-05-09T03:31:27 *** ltriant has quit IRC (Quit: Computer has gone to sleep) 2011-05-09T03:36:16 *** GeorgeSebastian has quit IRC (Ping timeout: 264 seconds) 2011-05-09T04:12:57 *** kaemo has joined #aichallenge 2011-05-09T04:28:13 *** sigh has joined #aichallenge 2011-05-09T04:28:59 *** Naktibalda has joined #aichallenge 2011-05-09T04:45:41 *** antimatroid has quit IRC (Ping timeout: 240 seconds) 2011-05-09T05:04:49 *** kaemo has quit IRC (Ping timeout: 240 seconds) 2011-05-09T05:08:53 *** needsch has joined #aichallenge 2011-05-09T05:17:25 *** berak has joined #aichallenge 2011-05-09T05:34:20 *** antimatroid has joined #aichallenge 2011-05-09T05:35:42 *** delt0r__ has quit IRC (Read error: Operation timed out) 2011-05-09T05:40:58 *** delt0r__ has joined #aichallenge 2011-05-09T05:43:13 *** JaycobColeman has quit IRC (Quit: JaycobColeman) 2011-05-09T05:49:25 *** Eruonen has joined #aichallenge 2011-05-09T05:52:28 *** kaemo has joined #aichallenge 2011-05-09T05:55:22 *** GeorgeSebastian has joined #aichallenge 2011-05-09T06:04:32 *** smellyhippy has quit IRC (Remote host closed the connection) 2011-05-09T06:12:11 *** JamesMG has quit IRC (Ping timeout: 276 seconds) 2011-05-09T06:12:43 *** JamesMG has joined #aichallenge 2011-05-09T06:21:30 *** me0w has joined #aichallenge 2011-05-09T06:23:19 *** mcstar has joined #aichallenge 2011-05-09T06:23:54 *** delt0r__ has quit IRC (Ping timeout: 246 seconds) 2011-05-09T06:24:29 *** delt0r__ has joined #aichallenge 2011-05-09T06:31:18 *** davidd has quit IRC (Read error: Operation timed out) 2011-05-09T06:31:23 *** davidd has joined #aichallenge 2011-05-09T06:36:26 aichallenge: janzert epsilon * rd6fd998 / (worker/engine.py worker/sandbox.py): Change sandbox to allow multiple commands to be run - http://bit.ly/kemMxr 2011-05-09T06:36:46 *** antimatroid has quit IRC (Ping timeout: 240 seconds) 2011-05-09T06:38:05 *** antimatroid has joined #aichallenge 2011-05-09T06:48:55 *** kaemo has quit IRC (Read error: Operation timed out) 2011-05-09T07:10:16 aichallenge: janzert epsilon * r6529bae / worker/compiler.py : Slight cleanup of compiler.py command line interface - http://bit.ly/kMXLoy 2011-05-09T07:10:59 *** amstan_ has quit IRC (Remote host closed the connection) 2011-05-09T07:21:33 *** kaemo has joined #aichallenge 2011-05-09T07:28:20 *** berak has quit IRC (Ping timeout: 240 seconds) 2011-05-09T07:29:58 *** berak has joined #aichallenge 2011-05-09T07:33:26 *** GeorgeSebastian has quit IRC (Ping timeout: 276 seconds) 2011-05-09T07:45:05 *** _0x47 <_0x47!~slash@p3EE0B0C7.dip.t-dialin.net> has joined #aichallenge 2011-05-09T07:56:19 *** berak has quit IRC (Ping timeout: 240 seconds) 2011-05-09T08:40:49 *** Mathnerd314 has quit IRC (Ping timeout: 240 seconds) 2011-05-09T08:48:58 *** _0x47 <_0x47!~slash@p3EE0B0C7.dip.t-dialin.net> has quit IRC (Quit: Leaving.) 2011-05-09T08:49:41 *** kaemo has quit IRC (Ping timeout: 240 seconds) 2011-05-09T08:52:29 McLeopold: tournament_manager.py has been completely replaced by worker.py now, right? 2011-05-09T08:57:56 *** delt0r___ has joined #aichallenge 2011-05-09T08:59:13 *** delt0r_ has quit IRC (Ping timeout: 252 seconds) 2011-05-09T09:03:29 *** FireFly has joined #aichallenge 2011-05-09T09:09:53 *** Blarg has joined #aichallenge 2011-05-09T09:19:05 *** me0w has quit IRC (Ping timeout: 258 seconds) 2011-05-09T09:36:03 *** delt0r__ has quit IRC (Remote host closed the connection) 2011-05-09T09:38:44 *** Blarg has quit IRC (Ping timeout: 252 seconds) 2011-05-09T09:48:35 *** kaemo has joined #aichallenge 2011-05-09T09:57:50 *** berak has joined #aichallenge 2011-05-09T10:12:49 *** sigh has quit IRC (Remote host closed the connection) 2011-05-09T10:15:03 *** sigh has joined #aichallenge 2011-05-09T10:17:05 *** sigh has quit IRC (Remote host closed the connection) 2011-05-09T10:27:36 *** Samurai has joined #aichallenge 2011-05-09T11:11:32 *** McLeopold has quit IRC (Quit: Leaving.) 2011-05-09T12:10:10 *** computerwiz_222 has joined #aichallenge 2011-05-09T12:11:56 *** sids_aquarius has joined #aichallenge 2011-05-09T12:20:18 *** McLeopold has joined #aichallenge 2011-05-09T12:20:33 janzert: yes, tournament_manager should be dead now 2011-05-09T12:25:56 *** computerwiz_222 has quit IRC (Ping timeout: 276 seconds) 2011-05-09T12:28:01 *** _0x47 <_0x47!~slash@p5B25EAE0.dip.t-dialin.net> has joined #aichallenge 2011-05-09T12:39:09 *** Naktibalda has quit IRC (Quit: ChatZilla 0.9.86.1 [Firefox 4.0.1/20110413222027]) 2011-05-09T12:40:37 *** bhasker has joined #aichallenge 2011-05-09T12:50:53 *** _aj_ <_aj_!~aj@66.133.136.43> has left #aichallenge 2011-05-09T12:54:08 *** sids_aquarius has quit IRC (Ping timeout: 246 seconds) 2011-05-09T13:00:51 *** bhasker has quit IRC (Ping timeout: 248 seconds) 2011-05-09T13:07:13 *** bhasker has joined #aichallenge 2011-05-09T13:09:49 *** smellyhippy has joined #aichallenge 2011-05-09T13:19:26 *** bhasker has quit IRC (Ping timeout: 258 seconds) 2011-05-09T13:29:05 great 2011-05-09T13:29:05 aichallenge: janzert epsilon * r1b38323 / worker/tournament_manager.py : Remove old worker tournament_manager script - http://bit.ly/ifN4vZ 2011-05-09T13:31:49 *** bhasker has joined #aichallenge 2011-05-09T14:39:11 *** Frontier has quit IRC (Quit: Leaving.) 2011-05-09T14:43:09 *** Frontier has joined #aichallenge 2011-05-09T14:48:29 *** amstan has joined #aichallenge 2011-05-09T14:48:29 *** ChanServ sets mode: +o amstan 2011-05-09T15:18:01 *** Frontier has quit IRC (Quit: Leaving.) 2011-05-09T15:37:13 *** MuTa-ofd00m has quit IRC (Quit: Bye) 2011-05-09T15:54:10 *** nann has joined #aichallenge 2011-05-09T15:57:01 *** Apophis has quit IRC (Ping timeout: 240 seconds) 2011-05-09T15:58:00 *** computerwiz_222 has joined #aichallenge 2011-05-09T16:00:07 hello 2011-05-09T16:02:34 *** Accoun has quit IRC () 2011-05-09T16:05:09 *** berak has quit IRC (Quit: ChatZilla 0.9.84 [SeaMonkey 2.0a3/20090223135443]) 2011-05-09T16:13:39 *** computerwiz_222 has quit IRC (Quit: Konversation terminated!) 2011-05-09T16:13:46 *** computerwiz_222 has joined #aichallenge 2011-05-09T16:15:24 *** Accoun has joined #aichallenge 2011-05-09T16:22:59 *** Eruonen has quit IRC () 2011-05-09T16:24:34 *** mcstar has left #aichallenge ("WeeChat 0.3.4") 2011-05-09T16:25:04 *** Eruonen has joined #aichallenge 2011-05-09T16:27:59 *** Naktibalda has joined #aichallenge 2011-05-09T16:36:12 *** amstan has quit IRC (Read error: No route to host) 2011-05-09T16:36:26 *** amstan has joined #aichallenge 2011-05-09T16:36:26 *** ChanServ sets mode: +o amstan 2011-05-09T16:37:30 *** computerwiz_222 has quit IRC (Remote host closed the connection) 2011-05-09T16:40:21 *** Mathnerd314 has joined #aichallenge 2011-05-09T16:42:34 *** Blarg has joined #aichallenge 2011-05-09T16:46:14 *** Samurai has quit IRC (Ping timeout: 252 seconds) 2011-05-09T16:55:13 *** Naktibalda has quit IRC (Quit: ChatZilla 0.9.86.1 [Firefox 4.0.1/20110422205559]) 2011-05-09T16:58:27 *** delt0r_ has joined #aichallenge 2011-05-09T17:00:16 *** delt0r___ has quit IRC (Ping timeout: 264 seconds) 2011-05-09T17:08:26 *** Blarg has quit IRC (Ping timeout: 252 seconds) 2011-05-09T17:20:27 *** JaycobColeman has joined #aichallenge 2011-05-09T17:48:54 *** ltriant has joined #aichallenge 2011-05-09T17:52:09 *** sigh has joined #aichallenge 2011-05-09T17:54:47 *** _flag <_flag!~flag@69-165-173-172.dsl.teksavvy.com> has joined #aichallenge 2011-05-09T18:00:07 *** JaycobColeman has quit IRC (Quit: JaycobColeman) 2011-05-09T18:11:17 *** _0x47 <_0x47!~slash@p5B25EAE0.dip.t-dialin.net> has quit IRC (Quit: Leaving.) 2011-05-09T18:13:47 *** sigh has quit IRC (Remote host closed the connection) 2011-05-09T18:14:45 *** amstan has quit IRC (Remote host closed the connection) 2011-05-09T18:26:41 *** JamesMG has quit IRC (Ping timeout: 240 seconds) 2011-05-09T18:27:00 *** JamesMG has joined #aichallenge 2011-05-09T18:39:40 *** Cyndre_ has quit IRC (Read error: Connection reset by peer) 2011-05-09T18:41:07 *** FireFly has quit IRC (Quit: swatted to death) 2011-05-09T18:41:23 *** Cyndre_ has joined #aichallenge 2011-05-09T18:54:45 *** Meatkat has joined #aichallenge 2011-05-09T19:00:49 *** computerwiz_222 has joined #aichallenge 2011-05-09T19:02:05 *** bhasker_ has joined #aichallenge 2011-05-09T19:02:38 *** Meatkat has quit IRC (Ping timeout: 276 seconds) 2011-05-09T19:03:48 *** bhasker has quit IRC (Ping timeout: 240 seconds) 2011-05-09T19:08:53 *** Meatkat has joined #aichallenge 2011-05-09T19:26:49 *** Kingpin13 has joined #aichallenge 2011-05-09T19:39:14 janzert: do we still need the semaphore cleanup.py? 2011-05-09T19:53:48 *** Meatkat has quit IRC (Ping timeout: 240 seconds) 2011-05-09T19:54:18 *** orivej has quit IRC (Read error: Connection reset by peer) 2011-05-09T19:54:51 *** amstan has joined #aichallenge 2011-05-09T19:54:51 *** ChanServ sets mode: +o amstan 2011-05-09T19:58:42 *** orivej has joined #aichallenge 2011-05-09T20:00:12 *** Winterfell has joined #aichallenge 2011-05-09T20:05:36 *** McLeopold has quit IRC (Quit: Leaving.) 2011-05-09T20:07:11 *** Meatkat has joined #aichallenge 2011-05-09T20:23:42 *** orivej_ has joined #aichallenge 2011-05-09T20:24:43 *** orivej has quit IRC (Ping timeout: 260 seconds) 2011-05-09T20:24:45 *** needsch has quit IRC (Quit: Leaving.) 2011-05-09T20:31:59 *** bhasker_ has quit IRC (Ping timeout: 240 seconds) 2011-05-09T20:45:50 *** Kingpin13 has quit IRC (Quit: money can't buy you love, but it can if you have enough) 2011-05-09T20:57:41 *** kaemo has quit IRC (Ping timeout: 276 seconds) 2011-05-09T20:59:40 *** Chris_0076 has joined #aichallenge 2011-05-09T21:04:23 *** computerwiz_222 has quit IRC (Ping timeout: 259 seconds) 2011-05-09T21:04:25 *** amstan has quit IRC (Ping timeout: 258 seconds) 2011-05-09T21:13:09 *** Meatkat has quit IRC (Ping timeout: 252 seconds) 2011-05-09T21:17:18 *** McLeopold has joined #aichallenge 2011-05-09T21:18:19 *** amstan has joined #aichallenge 2011-05-09T21:18:19 *** ChanServ sets mode: +o amstan 2011-05-09T21:27:49 @seen mcleopold 2011-05-09T21:27:49 amstan: mcleopold was last seen in #aichallenge 1 hour, 48 minutes, and 34 seconds ago: janzert: do we still need the semaphore cleanup.py? 2011-05-09T21:32:04 *** Eruonen has quit IRC () 2011-05-09T21:47:06 hi, I'm here 2011-05-09T21:47:11 amstan 2011-05-09T21:47:23 hi 2011-05-09T21:53:42 *** amstan_ has joined #aichallenge 2011-05-09T21:53:42 *** ChanServ sets mode: +o amstan_ 2011-05-09T22:02:35 *** amstan__ has joined #aichallenge 2011-05-09T22:02:35 *** ChanServ sets mode: +o amstan__ 2011-05-09T22:02:35 *** amstan_ has quit IRC (Read error: Connection reset by peer) 2011-05-09T22:04:45 *** computerwiz_222 has joined #aichallenge 2011-05-09T22:08:34 *** amstan has quit IRC (Ping timeout: 240 seconds) 2011-05-09T22:10:34 *** amstan__ is now known as amstan 2011-05-09T22:27:12 *** bhasker has joined #aichallenge 2011-05-09T22:29:10 *** McLeopold1 has joined #aichallenge 2011-05-09T22:29:40 *** McLeopold1 has left #aichallenge 2011-05-09T22:29:53 amstan: how's the php? 2011-05-09T22:30:19 McLeopold: create_test_data crashes 2011-05-09T22:30:27 something about duplicate users 2011-05-09T22:30:54 hmm 2011-05-09T22:30:59 I'll try it 2011-05-09T22:31:17 are you going to stick around tonight? I'm committed to getting the server off the ground tonight 2011-05-09T22:31:58 for an hour maybe, i can't more, i have school tomorrow 2011-05-09T22:32:55 okay, maybe we can ignore the create test data and just get the worker going 2011-05-09T22:33:15 that's fine.. worker going.. the sandboxes work 2011-05-09T22:33:28 the database on the server might not be up to date 2011-05-09T22:33:54 so.. it's all a matter of running ./worker.py properly(idk how) 2011-05-09T22:34:09 ok, I'm trying to log in... 2011-05-09T22:35:14 want to start a screen session? 2011-05-09T22:35:35 i would, but screen doesn't like when you su 2011-05-09T22:36:10 I've gotten it to work on a ubuntu server before 2011-05-09T22:37:17 you need to set the setuid on 2011-05-09T22:40:23 amstan: where does apache point to? 2011-05-09T22:40:41 /home/contest/aichallenge/website 2011-05-09T22:40:47 the default 2011-05-09T22:40:58 okay, can I run the worker in the worker dir? 2011-05-09T22:41:54 yep 2011-05-09T22:42:13 should I have write permission in the /home/contest dir? 2011-05-09T22:42:23 just sudo su contest 2011-05-09T22:45:56 I'm setting up the worker to have it's own set of maps and submissions 2011-05-09T22:47:20 They need to be separate from the manager's locations, so if you running both on the same server, they need to be different 2011-05-09T22:51:06 you sure? 2011-05-09T22:51:14 yeah 2011-05-09T22:51:22 you have to modify the setup script then 2011-05-09T22:51:36 the workers can run separate, so they need the ability to cache downloaded submissions and maps 2011-05-09T22:51:52 That's why I had a separate server_info template in each main folder :) 2011-05-09T22:53:57 what's the compiled dir for? 2011-05-09T23:00:53 McLeopold: i have no idea 2011-05-09T23:00:58 i just installed it from the script 2011-05-09T23:01:02 i'd assume it's just defaults 2011-05-09T23:01:08 ok 2011-05-09T23:01:22 I haven't run the setup script lately, so I'm not sure 2011-05-09T23:02:46 amstan: can the contest user modify apache settings? 2011-05-09T23:03:10 it shouldn't 2011-05-09T23:03:17 okay, then can I? 2011-05-09T23:03:33 or you? 2011-05-09T23:04:24 http://hypertriangle.com:13080/games/ should point to /home/contest/ants/games and serve static files 2011-05-09T23:04:41 amstan: same with maps 2011-05-09T23:05:17 ok, so add that to the setup script 2011-05-09T23:05:49 ok... 2011-05-09T23:08:21 amstan: where to the templates get their values from? 2011-05-09T23:08:39 what templates? 2011-05-09T23:09:18 the server_info templates in the setup folder 2011-05-09T23:09:43 amstan: and do you have a single command you run to clean the contest home dir and redo everything? 2011-05-09T23:10:00 McLeopold: no, it's not that simple 2011-05-09T23:10:10 there's users setup, stuff in /srv 2011-05-09T23:10:12 packages.. 2011-05-09T23:10:19 i would be careful 2011-05-09T23:10:26 don't edit stuff directly there unless you have a plan 2011-05-09T23:10:38 don't edit stuff in /srv? 2011-05-09T23:10:56 ideally not... 2011-05-09T23:10:58 why? 2011-05-09T23:11:25 okay, I know what the /home/contest folders and files *should* look like, but I'm not familiar with our setup stuff 2011-05-09T23:11:36 I just need a little direction 2011-05-09T23:11:41 /srv is the sandbox for the contest 2011-05-09T23:11:53 it's pretty much a replica of ubuntu, where the jail users are chrooted into 2011-05-09T23:12:04 there's no contest code in there 2011-05-09T23:12:08 ok 2011-05-09T23:17:59 *** bhasker has quit IRC (Quit: bhasker) 2011-05-09T23:30:11 I'm basically just ignoring semaphore_cleanup for now, with the new version of mono being used hopefully there won't be anything leaking semaphores, but at the same time there isn't anything new preventing someone from leaking semaphores on purpose as a DoS 2011-05-09T23:30:31 ok 2011-05-09T23:30:38 I heard somewhere mono is dying 2011-05-09T23:31:31 janzert: also, I'm attempting to get our hypertriangle server going tonight 2011-05-09T23:32:34 the compiled dir is the default name for the worker submission_dir so it doesn't interfere with a manager submission_dir when both are running from the same location 2011-05-09T23:32:59 oh 2011-05-09T23:33:11 I was going to use a different structure 2011-05-09T23:33:43 caught up with the conversation now :) 2011-05-09T23:33:48 k :) 2011-05-09T23:34:39 I saw just the other day you're using a compiled and download directory inside the worker submission_dir 2011-05-09T23:34:46 yep 2011-05-09T23:35:01 the current implementation reintroduces a race condition btw 2011-05-09T23:35:16 if more than one worker.py is running 2011-05-09T23:35:27 I was thinking only 1 at a time 2011-05-09T23:35:56 I kinda figured that 2011-05-09T23:36:02 and that may be all we do now 2011-05-09T23:36:13 If we need it to work in parallel, we can add threading to it 2011-05-09T23:36:20 I was trying to keep everything safe 2011-05-09T23:37:19 threading has lots more potential for problems though :/ 2011-05-09T23:37:28 but I suspect we won't need either 2011-05-09T23:37:33 k 2011-05-09T23:37:46 we're probably going to max out a machine with just one anyway 2011-05-09T23:37:50 can you stick around and help get the server setup going right now? 2011-05-09T23:37:58 http://ietherpad.com/meUeSqyZit 2011-05-09T23:38:20 for a bit anyway, although I think I walked amstan through everything I know last night 2011-05-09T23:38:43 amstan's: got to go soon, and I want to get this done 2011-05-09T23:38:49 btw, working on the compiler right now and... 2011-05-09T23:39:11 McLeopold: well.. what are you trying to do? do you just want to move submissions to another place? 2011-05-09T23:39:32 it seems like we really want an area outside the submission's actual code/bot directory to store metadata 2011-05-09T23:39:34 yes, and maybe more 2011-05-09T23:39:43 I want to iron stuff out until it works right 2011-05-09T23:39:53 e.g. I don't like that we are putting that run.sh into the submissions directory directly 2011-05-09T23:40:24 I thought doing that would give us a natural transition to compiled submissions 2011-05-09T23:40:47 so maybe a structure such as the submission directory then has a subdirectory called bot that would hold the actual submitted code 2011-05-09T23:41:42 mostly I'd just rather not open the chance that we overwrite or change some part of the submission itself 2011-05-09T23:42:12 i.e. what is uploaded is what gets run there with no chance that we accidently change it 2011-05-09T23:42:25 can you put that on the ietherpad 2011-05-09T23:44:36 why does the worker store games at all? 2011-05-09T23:44:54 shouldn't it just be sending them back to the manager? 2011-05-09T23:44:54 just in case, we can turn it off 2011-05-09T23:45:30 At some point I was going to put retry code in if there was a transmission issue 2011-05-09T23:45:53 hmm, at most you lose one game 2011-05-09T23:45:59 doesn't seem worth the storage 2011-05-09T23:46:04 and complexity 2011-05-09T23:46:05 yeah, not a big deal 2011-05-09T23:47:51 how does/should the api_keys get set? 2011-05-09T23:48:20 the worker api keys? or the worker creation key? 2011-05-09T23:48:26 both 2011-05-09T23:48:40 McLeopold: the main one, you randomly generate it manually 2011-05-09T23:48:47 where? 2011-05-09T23:48:52 the second one you get from this php page, apt_server_setup i think 2011-05-09T23:48:56 the worker keys are created in api_server_setup.php and stored in the database 2011-05-09T23:49:04 and you give it to the worker setup script 2011-05-09T23:49:20 which in turn sets the server_info.py file in worker/ 2011-05-09T23:49:27 the worker creation key is created manually and stored in server_info.php 2011-05-09T23:51:20 aichallenge: McLeopold epsilon * r4735cdb / (3 files): added/deleted keys from templates - http://bit.ly/m9MC7W 2011-05-09T23:56:12 janzert: i think we can do the structure that you would like 2011-05-09T23:56:36 right now after compile and before functional testing is when the move is done 2011-05-09T23:56:58 I can change that do be after functional test 2011-05-09T23:57:29 we'll never use the submission again if it fails the functional test right? 2011-05-09T23:57:36 same as failing compilation? 2011-05-09T23:57:45 I think so 2011-05-09T23:58:20 I'm pretty sure that's true and we can just delete the temporary directory if it fails either or both stages 2011-05-09T23:58:22 the reason I moved it then was that after the compile step, I wouldn't be able to detect the language anymore, so I needed 2 dirs so I knew which had the run.sh and which didn't 2011-05-09T23:59:11 It's not actually mod 1000, it's div 1000 2011-05-09T23:59:23 oops :) 2011-05-09T23:59:34 I did that in the code until I started testing it :) 2011-05-09T23:59:42 mod is just so fun, like xor