--- Log opened Sun Sep 04 00:00:57 2016 |
00:05 | | Reiver [quassel@Nightstar-ksqup0.co.uk] has quit [Ping timeout: 121 seconds] |
00:05 | | Reiver [quassel@Nightstar-ksqup0.co.uk] has joined #code |
00:05 | | mode/#code [+ao Reiver Reiver] by ChanServ |
00:09 | <&jerith> | Vornicus: You're still muted. Are you supposed to be? |
00:09 | <&jerith> | (If you are, that's fine. If you're trying to talk to me, not so much.) |
00:09 | <~Vornicus> | something's fucky |
00:10 | <&jerith> | Is your test passing with the implementation commented out? |
00:11 | <~Vornicus> | Yes. Oh, that's probably because... assertEquals may do deep comparison. |
00:11 | <&jerith> | Does your constructor discard leading zero coefficients? |
00:12 | <~Vornicus> | Yes it does. |
00:12 | <&jerith> | Maybe assertEquals(f == g, true)? |
00:12 | <&jerith> | Yay, back. |
00:12 | <~Vornicus> | well, assertTrue |
00:12 | <&jerith> | I can hear you again. |
00:12 | <&jerith> | Yeah, assertTrue(). |
00:12 | <&jerith> | Except then you get annoying failure output. |
00:12 | <&jerith> | "true is not false" |
00:13 | <&jerith> | Thanks for reminding me of the basis of boolean algebra, computer. |
00:13 | <&jerith> | (I've written lots of tests like that.) |
00:13 | < ToxicFrog> | Does assertEquals not respect __eq? |
00:14 | <~Vornicus> | If it's not present, at least, it uses a deep compare |
00:14 | <&jerith> | The solution is to tell the assertion call what to print on failure. |
00:14 | <&jerith> | Vornicus: Maybe try "return false" as an __eq method. |
00:16 | <&jerith> | This is why you need to run your tests with known broken code. |
00:16 | < ToxicFrog> | Hmm. Looks like it doesn't support __eq. I should send in a patch. |
00:16 | <&jerith> | I've written lots of tests that pass whether the thing they're supposed to be testing exists of not. |
00:17 | < ToxicFrog> | (specifically, if it's a table it calls _is_table_equals, which does deep comparison; if there's a type mismatch it fails; otherwise it uses ==) |
00:17 | <&jerith> | Some of the bugs there have been quite subtle. |
00:18 | <&jerith> | The most widespread was in tests for async Python code using Twisted. |
00:18 | | Kindamoody is now known as Kindamoody[zZz] |
00:19 | <&jerith> | My tests used @inlineCallbacks which (ab)uses generators as hack around the lack of async/await syntax. |
00:19 | < ToxicFrog> | What it should probably do is try == first; if that fails, but both operands are tables, call _is_table_equal; if that fails too, fail the whole thing. |
00:20 | <&jerith> | ToxicFrog: That would be wrong for a "return false" __eq implementation. |
00:21 | <&jerith> | If I forgot to decorate my test method with @inlineCallbacks the test happily returned a generator that was never called instead of a promise that fired with the result. |
00:22 | <&jerith> | The second time I found a test broken that way I hacked a check for tests that return generators into the unit test machinery and found about 20 others scattered across the codebase, most of which were broken tests. |
00:23 | <&jerith> | Several of those were hiding real bugs that we thought we had tests for. :-( |
00:24 | < ToxicFrog> | jerith: hmm, point. |
00:24 | <&jerith> | What is "unm"? |
00:24 | < ToxicFrog> | Unary minus. |
00:24 | <&jerith> | Oh, unary minus? |
00:24 | <&jerith> | Yeah, that. |
00:26 | < ToxicFrog> | Ok, new attempt. If they both have the same __eq metamethods, use ==. If they're both tables, use _is_table_equal. else, use ==. |
00:26 | <&jerith> | lua is not python? :-P |
00:28 | <&jerith> | Range vs iterator. |
00:28 | <&jerith> | And I think there's about a minute of latency on the stream. |
00:28 | <&jerith> | I need to go make tea and send the dog outside, so I'm going to grab my more portable computer quick. |
00:29 | <~Vornicus> | I have to go wake the wife too. |
00:34 | <&jerith> | Little laptop in kitchen, kettle on, chocolate mousse deployed. |
00:35 | <&jerith> | Dog unhappy about eviction, but not protesting. |
00:38 | <&jerith> | You may want to write some utility functions for your evals and coeff comparisons. |
00:40 | <&jerith> | The coeff helper should be easy. |
00:40 | <&jerith> | The eval one probably won't. |
00:40 | <&jerith> | Does lua have nice lambda syntax? |
00:41 | <&[R]> | Okay, so after watching that testing talk, I try and look for a library that does that thing for JS... |
00:41 | <&jerith> | [R]: The John Hughes talk? |
00:42 | <&[R]> | http://jsverify.github.io/ <-- found that, looking over that, given no context, I have no idea WTF it's actually doing. |
00:42 | <&[R]> | Yeah |
00:42 | <&jerith> | jserify is the only one I've really heard about. |
00:42 | <&jerith> | But I don't JS, so I can't really comment. |
00:45 | | himi [sjjf@Nightstar-v37cpe.internode.on.net] has joined #code |
00:45 | | mode/#code [+o himi] by ChanServ |
00:47 | <&jerith> | If you're spending more than twice as much time figuring out how to write the helper as it would take to just type in all the boilerplate, the helper's probably not worth it. |
00:48 | <&jerith> | Hello Vash! |
00:48 | <&[R]> | Yeah |
00:50 | <&jerith> | For these helpers, it's probably not worth it. |
00:50 | <&jerith> | For more complicated boilerplate, it probably would be. |
00:52 | <&jerith> | I see you're integrating in your head to invent your test data for differentiation. :-) |
00:52 | <&[R]> | ? |
00:52 | <&jerith> | Fortunately calculus on polynomials is easy. |
00:53 | <&[R]> | English plz |
00:54 | <&jerith> | [R]: He's writing testDerivative() and his polynomial coefficients are {0}, {6}, {2, 6}, {1, 2, 3}, {0, 1, 1, 1}. |
00:54 | <&[R]> | Ah, you weren't addressing me, that explains things |
00:54 | <&jerith> | Yeah, sorry. |
00:55 | <&jerith> | All of that was to Vornicus. |
00:56 | <&jerith> | Vornicus: Do you have a thing that will watch your filesystem and rerun your tests whenever something changes? |
00:57 | <&jerith> | I can see what you're doing. I'm suggesting a better way to do it. :-) |
00:58 | <&jerith> | I have a thing called "watchmedo" installed, but I can't remember where that comes from or if it's cross-platform. |
00:58 | <&jerith> | Took me bloody ages to find it. |
00:59 | <&jerith> | A bunch of test runners have that built in, though. |
01:00 | <&jerith> | Except py.test's implementation polls the filesystem instead of using inotify or whatever. |
01:00 | | catalyst [catalyst@Nightstar-bt5k4h.81.in-addr.arpa] has quit [Connection closed] |
01:01 | < ToxicFrog> | jerith: it's just function(...) ... end |
01:01 | < ToxicFrog> | More accurately, all function definitions are, and 'function foo()' is syntactic sugar for 'foo = function()' |
01:01 | <~Vornicus> | technically function bla---- |
01:02 | < ToxicFrog> | (that said, I find it handy to define f st f 'x,y => x+y' is eqv to 'function(x,y) return x+y end' except without being scoped inside anything) |
01:02 | <~Vornicus> | so you can actually do local function blah(...) ... and it works too, it's not like js where you have to do var blah = function(...) {...} |
01:02 | < ToxicFrog> | (It's a nice concise way to functionize operators, in particular) |
01:02 | <&jerith> | watchmedo is a program that takes a directory (and filename filter) to watch and a shell command to run every time the filesystem changes. |
01:04 | < ToxicFrog> | If watchmedo isn't readily available you can put together something similar using inotifywait + a few lines of bash |
01:04 | <&[R]> | Like icron? |
01:04 | <&jerith> | Anyway, I use it run my tests for me so I don't have to switch to my terminal to run them. |
01:04 | < ToxicFrog> | I've never heard of icron. |
01:05 | <~Vornicus> | difficulty: no bash |
01:05 | <&jerith> | More importantly, it runs them whenever I save a file and therefore I have far fewer problems with running tests without saving files. |
01:05 | < ToxicFrog> | Vornicus: bwuh? What OS are you on? |
01:05 | <~Vornicus> | win10 |
01:05 | < ToxicFrog> | sh is probably sufficient |
01:05 | < ToxicFrog> | oh |
01:06 | <&jerith> | Ah, https://pypi.python.org/pypi/watchdog is the thing. |
01:06 | <&jerith> | watchmedo is the executable it provides. |
01:07 | <&jerith> | This isn't a thing you need to do now (or at all, really) but it can help make things run more smoothly. |
01:08 | <&jerith> | The idea is to get as much of the mechanics of running tests out the way as you can. |
01:09 | <&jerith> | So that you free up the cognitive cycles for the more important task of designing the tests. |
01:10 | | Alek [Alek@Nightstar-9qtiqv.il.comcast.net] has quit [Ping timeout: 121 seconds] |
01:14 | | catadroid [catadroid@Nightstar-663fq4.dab.02.net] has joined #code |
01:14 | <&jerith> | Vornicus: I need to go to sleep now. |
01:14 | <&jerith> | I'll be up again in about 7-8 hours. |
01:15 | <&jerith> | This has been good, I think. |
01:15 | | Alek [Alek@Nightstar-9qtiqv.il.comcast.net] has joined #code |
01:15 | | mode/#code [+o Alek] by ChanServ |
01:15 | <~Vornicus> | Yes, very much, thank you |
01:15 | <&jerith> | You're much better at writing tests than I was when I started doing it seriously. |
01:16 | < catadroid> | Mathematics, my dear Watson |
01:16 | | * ToxicFrog snoggles catadroid |
01:16 | | * Vornicus hatadroid |
01:16 | < catadroid> | :o |
01:16 | | * catadroid cuddles ToxicFrog |
01:19 | <&jerith> | https://archive.org/details/pyconza2014-practical-testing is my talk from a couple of years ago about stuff beyond the basics. |
01:19 | <&jerith> | (I'm not a terribly good public speaker, but I'm getting better.) |
01:21 | <&jerith> | That talk exists because I desperately wanted to watch it and nobody was giving it so I had to do it myself. |
01:21 | <&jerith> | And now it's getting perilously close to 3am, so I shall flee. |
01:21 | <&jerith> | G'night all. |
01:28 | | * Vornicus should watch those talks |
01:42 | | catadroid` [catadroid@Nightstar-5e7de9.dab.02.net] has joined #code |
01:44 | | catadroid [catadroid@Nightstar-663fq4.dab.02.net] has quit [Ping timeout: 121 seconds] |
01:50 | < ToxicFrog> | huh. This is weird. |
01:51 | < ToxicFrog> | My <room> loader is loading the leftmost and rightmost columns of the room geometry and nothing in between. |
01:59 | <~Vornicus> | that is weird. |
02:01 | < ToxicFrog> | found the problem |
02:01 | < ToxicFrog> | tl;dr fuck xml in hell forever |
02:02 | < ToxicFrog> | Root cause: the loader for <flags> just iterates over all the k,v pairs in the tag and sets them on the room definition |
02:03 | < ToxicFrog> | But when you parse out the attributes for an XML tag, what you get back is both a map of key => value pairs |
02:03 | < ToxicFrog> | (where the values are always strings, because god forbid XML be able to handle other value types) |
02:03 | < ToxicFrog> | and an array of (k,v) pairs, because apparently the parser has to be able to handle cases where order is significant, or where the same attribute is set multiple times |
02:04 | < ToxicFrog> | Which means that "the set of keys" above is all the attribute names and all the array indices |
02:04 | < ToxicFrog> | so it ends up nuking columns [1..number-of-flag-settings] of level geometry. |
02:04 | < ToxicFrog> | And this is why I write unit tests. |
02:05 | <&Derakon> | Code that is not tested does not work. |
02:05 | <&Derakon> | Hooray, life is beautiful in programmer land. |
02:07 | < ToxicFrog> | Most of ttymor is untested ;.; |
02:09 | <@gnolam> | jerith: ... |
02:10 | <@gnolam> | jerith: This is the first time since coming to this network I've ever heard you speak. :-) |
02:10 | < ToxicFrog> | ...what? jerith is pretty active. |
02:11 | <@gnolam> | Still the first time I've ever heard his actual voice. :-) |
02:13 | <&[R]> | <ToxicFrog> And this is why I [shouldn't use XML]. |
02:13 | <~Vornicus> | xml is perfect for some things. Which is kind of frightening all told. |
02:14 | <&[R]> | I don't disagree with that |
02:14 | <&[R]> | However, 99% of the time XML is used it's the wrong tool. |
02:16 | < ToxicFrog> | ^ |
02:16 | < ToxicFrog> | XML is good for what it was originally designed for, which is as a general purpose language for text markup with verifiable schema support. |
02:16 | < ToxicFrog> | In practice, no-one uses it for that, and everyone uses it as a data serialization format. |
02:17 | <&Derakon> | Why use XML when you could use JSON? And why use JSON when you could use YAML? >.> |
02:17 | <&McMartin> | YAML is terrible |
02:17 | <&Derakon> | I have in fact never used it~ |
02:17 | <&[R]> | I'd rather JSON and its paticularities over YAML |
02:17 | <&McMartin> | It's XML if XML were designed by Perl and had a similar attitude towards 57 different ways to say the same thing, and 17 things that appear to be in that class but are nevertheless semantically distinct. |
02:18 | <&[R]> | Then again, I've hand written somewhat large JSON objects. |
02:18 | <&McMartin> | JSON is occasionally finicky but it has an ironclad parser that can be expressed in a few hundred lines of raw C |
02:18 | < ToxicFrog> | YAML is pretty awful to write, there are lots of things that are valid YAML and look pretty close to what you want but actually express something completely different |
02:18 | < ToxicFrog> | I can't imagine it's much fun to parse, either |
02:18 | <&Derakon> | Honestly I'm fine with JSON except for the no-trailing-commas rule. |
02:19 | <&[R]> | That's because it was designed to be eval()'d, and IE shits on that. |
02:19 | < ToxicFrog> | These days I pull for EDN, falling back to JSON or Lua table constructors if EDN isn't available |
02:19 | <&Derakon> | Well, and we can't have IE not support something~ |
02:19 | <&[R]> | Thus, you can legitimately blame MS for that. |
02:19 | <&[R]> | EDN? |
02:19 | <&McMartin> | Permitting trailing commas is the kind of thing I'd expect would piss off Crockford, actually |
02:20 | <&McMartin> | Dude is enraged he can't name his variables "if" and "for" |
02:20 | < ToxicFrog> | [R]: Extensible Data Notation, basically a subset of clojure designed for data serialization |
02:20 | <&[R]> | Also I get around being annoyed by trailing commas by prefixing the comma instead of trailing them. |
02:20 | < ToxicFrog> | Very easy to parse, features are strictly a superset of JSON |
02:21 | <&Derakon> | [R]: ...is a leading comma valid in JSON? |
02:21 | <&[R]> | No |
02:21 | <&McMartin> | It's easier to know if you're on your first line than on your last |
02:21 | <&Derakon> | I suppose that's fair. |
02:21 | <&[R]> | debug.list.push({ |
02:21 | <&[R]> | res: res |
02:21 | <&[R]> | ,num: num |
02:21 | <&[R]> | ,key: key |
02:22 | <&[R]> | ^ I do that |
02:22 | < ToxicFrog> | Unfortunately EDN isn't widely supported outside of Clojure. |
02:22 | <&[R]> | I find it works with vim's line operators a bit nicer than trailing them does. |
02:22 | < ToxicFrog> | \boatcat{I should write an EDN parser in Lua.} |
02:22 | <&Derakon> | I take it an EDN parser in Clojure consists basically of eval()? |
02:23 | < ToxicFrog> | I suspect it used to, but not any more |
02:23 | < ToxicFrog> | Both because of the "extensible" part and because EDN is a strict subset of clojure that can't be executed |
02:23 | <&Derakon> | Well, proper sandboxing is desirable. |
02:23 | <&Derakon> | Which means eval is Satan. |
02:24 | < ToxicFrog> | But yes, in most cases valid EDN is also a valid Clojure data structure |
02:25 | <&[R]> | https://github.com/edn-format/edn <-- for some reason loading that page is making FF freeze hard |
02:32 | < ToxicFrog> | Cool |
02:32 | <~Vornicus> | ok, quickcheck: madness in a can |
02:34 | <~Vornicus> | jerith sounds literally nothing like I expected |
02:35 | <&[R]> | I knew a guy that sounded like Zim |
02:35 | <&[R]> | That... was a surprise |
02:49 | | * Vornicus grumps at archive.org for not having speed controls |
02:52 | | Vorntastic [Vorn@Nightstar-uhn82m.ct.comcast.net] has quit [Ping timeout: 121 seconds] |
02:52 | | Vorntastic [Vorn@Nightstar-uhn82m.ct.comcast.net] has joined #code |
05:20 | | Derakon is now known as Derakon[AFK] |
05:38 | | * Vornicus writes a simple test for the quadratic case, uses a polynomial with an irrational solution, victory. |
06:04 | | gizmore [kvirc@Nightstar-sf4plu.dip0.t-ipconnect.de] has quit [[NS] Quit: KVIrc 4.9.2 Aria http://www.kvirc.net/] |
07:08 | <~Vornicus> | ...cubic worked |
07:08 | <~Vornicus> | once I solved all the fucking syntax errors, it just worked. |
07:22 | <~Vornicus> | I am repeatedly startled that this is working. |
07:31 | <~Vornicus> | Utterly, stompingly, bethumped. HOW DID I GET THIS RIGHT |
07:42 | <@abudhabi> | Maybe you're just imagining that it's working. |
07:42 | <~Vornicus> | no, it's working. |
07:42 | <~Vornicus> | I should find a more stable polynomial evaluator though |
08:04 | <&jeroud> | What I really want is a subset of YAML that maps cleanly to JSON but is easier for humans to interact with. |
08:04 | | catadroid` [catadroid@Nightstar-5e7de9.dab.02.net] has quit [Ping timeout: 121 seconds] |
08:06 | <&jeroud> | But I'll take YAML over XML over JSON for config formats because fuck the lack of comments and trailing commas. |
08:07 | | Kindamoody[zZz] is now known as Kindamoody |
08:09 | <&McMartin> | The thing about math is that when you get the right answer it's actually the right answer |
08:09 | <&McMartin> | Because it is an operation of, conceptually, one step |
08:09 | <@celticminstrel> | My main problem with YAML is that it breaks on tabs. |
08:12 | <&jeroud> | celticminstrel: It definitely has its problems. |
08:13 | <&jeroud> | But that's easily solved with editor configuration. |
08:14 | <&jeroud> | And tabs are terrible anyway. (I wish they weren't.) |
08:29 | | celticminstrel is now known as celmin|sleep |
08:52 | | Kindamoody is now known as Kindamoody|afk |
09:07 | | catadroid [catadroid@Nightstar-jb7hcq.dab.02.net] has joined #code |
10:44 | | Vorntastic [Vorn@Nightstar-uhn82m.ct.comcast.net] has quit [Connection closed] |
10:46 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
11:06 | | catalyst [catalyst@Nightstar-bt5k4h.81.in-addr.arpa] has joined #code |
12:03 | | ion [Owner@Nightstar-6grqph.vs.shawcable.net] has quit [Ping timeout: 121 seconds] |
12:06 | | ion [Owner@Nightstar-6grqph.vs.shawcable.net] has joined #code |
12:06 | | mode/#code [+o ion] by ChanServ |
12:22 | | ion [Owner@Nightstar-6grqph.vs.shawcable.net] has quit [Ping timeout: 121 seconds] |
12:25 | | ion [Owner@Nightstar-6grqph.vs.shawcable.net] has joined #code |
12:25 | | mode/#code [+o ion] by ChanServ |
12:32 | | gizmore [kvirc@Nightstar-s785es.dip0.t-ipconnect.de] has joined #code |
13:07 | | celmin|sleep is now known as celticminstrel |
15:30 | | catadroid [catadroid@Nightstar-jb7hcq.dab.02.net] has quit [Ping timeout: 121 seconds] |
17:00 | | gizmore [kvirc@Nightstar-s785es.dip0.t-ipconnect.de] has quit [[NS] Quit: KVIrc 4.9.2 Aria http://www.kvirc.net/] |
18:05 | <@abudhabi> | TheWatcher: How do I say "any characters but not any newlines" in Perl regexps? What I'm working on is: perl -pi -e 's/^<any characters but not newlines> = -\d+//e' *.txt |
--- Log closed Sun Sep 04 18:23:00 2016 |
--- Log opened Sun Sep 04 18:30:20 2016 |
18:30 | | TheWatcher [chris@Nightstar-mgq.2uj.71.82.IP] has joined #code |
18:30 | | Irssi: #code: Total of 38 nicks [32 ops, 0 halfops, 0 voices, 6 normal] |
18:30 | | mode/#code [+o TheWatcher] by ChanServ |
18:30 | <@abudhabi> | TheWatcher: Is Perl fucked on Windows? |
18:31 | | Irssi: Join to #code was synced in 53 secs |
18:54 | <&[R]> | There are things that aren't fucked up on Windows? |
18:58 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code |
18:58 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
19:00 | <&McMartin> | [R]: Python is the best at bridging the gaps between Unixy and Windows of any language I've ever seen |
19:01 | <&McMartin> | Also, if you're writing advanced OpenGL code on Linux, you'll have an easier time getting it running on Windows than on Mac these days |
19:01 | <&McMartin> | Because Apple is stalled at like 4.1 >_< |
19:17 | | * abudhabi uses Notepad2 to regex shit, because there it actually sort of works. |
19:50 | | * celticminstrel spots a Fisher-Yates shuffle, wonders if it would be bad to replace it with std::shuffle. |
19:53 | <@celticminstrel> | (At least, the comment says it's FIsher-Yates. I'm not gonna check and make sure it really is.) |
19:53 | <@celticminstrel> | |
20:04 | | Kindamoody|autojoin is now known as Kindamoody |
22:00 | <&McMartin> | Not quite a code question but close... |
22:00 | <&McMartin> | I'm trying to configure a new account on a system to accept SSH logins via RSA keys |
22:01 | <&McMartin> | Generate the key with putty-keygen, export in openssh format, stick it in that account's ~/.ssh/authorized_keys which creates the file because the account is new at this |
22:01 | <&McMartin> | Is there anything else I have to do to get sshd to notice? sshd_config seems to be pointing at that file as the location of the Authorized Keys file. |
22:02 | <~Vornicus> | sshd shouldn't need more help |
22:02 | < ToxicFrog> | Check the sshd logs, but usually when you have the key in ~/.ssh/authorized_keys but it's not working, this means one of two things: |
22:03 | < ToxicFrog> | - username mismatch between the two systems, and you didn't tell the client to send the right username |
22:03 | < ToxicFrog> | - permissions on ~/.ssh or ~/.ssh/authorized_keys are wrong, and sshd is refusing to trust it |
22:03 | <&McMartin> | ... it could very easily be both |
22:04 | <&McMartin> | ... but it was the latter, because new file. Cheers! |
22:05 | < ToxicFrog> | I've done this to myself enough times to get good at debugging it |
22:05 | < ToxicFrog> | ~ |
22:06 | <&McMartin> | Furthermore, PuTTY is smart enough to shift over to keys again even when started with no username specified, once you've typed *in* a username, so cheers for that too. |
22:06 | | himi [sjjf@Nightstar-v37cpe.internode.on.net] has quit [Ping timeout: 121 seconds] |
22:06 | <&McMartin> | And yeah, the last time I had to deal with this was probably when I set up Zinglon over ten years ago |
22:07 | <&McMartin> | Every other case it's been "hand public key to co-worker and they'll take care of it" |
22:10 | < ToxicFrog> | I get the usernames wrong a lot, since e.g. I have keys for logging into isis as root, but not as myself or as symbol |
22:11 | < ToxicFrog> | Permissions less often -- I can't actually remember the last time I did that -- but at some point it clearly happened enough that "check the permissions" is my immediate reflex for debugging ssh issues. |
22:11 | <&McMartin> | Yeah, permissions is a thing that only really needs to be set once |
22:12 | <&McMartin> | So it comes up every time you provision a new account, not every time you set up a new computer to log into that machine |
22:12 | <&McMartin> | I turns out I *had* managed to do all the steps for the latter right~ |
22:19 | < ToxicFrog> | I set up new users surprisingly frequently, apparently. |
22:20 | | Kindamoody is now known as Kindamoody[zZz] |
22:23 | | * McMartin ponders this mess of a directory structure |
22:23 | <&McMartin> | OK, now my problem is that there are multiple "users" but they are secretly all me and I have a variety of systems that are using incompatible versions of OpenSSH and/or levels of integration with PuTTY. |
22:23 | <&McMartin> | But I can fix that |
22:24 | | * ToxicFrog emerges from the depths of the ancilla backups, covered in symlink cobwebs |
22:24 | < ToxicFrog> | Mess of a directory structure, you say |
22:24 | < ToxicFrog> | (conversation about first programming languages elsenet sent me on a quest for the net3d source. It turns out my dad was just as bad at filesystem organization as I am.) |
22:27 | < ToxicFrog> | ...and that leads me to the thought of "describe arbitrary games in the 'The noun is adjective. It must be verbed. You have a noun.' format." |
22:27 | | VirusJTG [VirusJTG@Nightstar-055.kas.104.208.IP] has quit [[NS] Quit: Leaving] |
22:27 | < ToxicFrog> | (net3d: the tree is here. It must be built. You are a fish.) |
22:27 | | VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has joined #code |
22:27 | | mode/#code [+ao VirusJTG VirusJTG] by ChanServ |
22:28 | < ToxicFrog> | Now I kind of want to make a first person filesystem browser for this. |
22:28 | <&McMartin> | Don't several already exist, can't you just point it at them~ |
22:29 | <&Derakon> | I seem to remember one that was an FPS, in fact, where if you killed a file, it would be deleted for you. |
22:30 | < ToxicFrog> | I've seen a few, but all of them were, basically, joke programs based on doom that only supported ls, cd, and rm |
22:31 | < ToxicFrog> | I want something for exploring the depths of ancient backups, so I want cat, (l)stat, tar tv, etc |
22:31 | < ToxicFrog> | Dynamic lighting with oil lamps and/or flaring torches a bonus |
22:32 | <&Derakon> | Switches to reveal hidden files? |
22:33 | < ToxicFrog> | Yes! |
22:35 | <&McMartin> | Sounds like a project |
22:35 | <&McMartin> | Meanwhile, SUCCESS |
22:36 | <&McMartin> | I have gotten Visual Studio Code to be able to talk to both Github and my home dev system without either knowing about the other |
22:37 | <@Tamber> | FPA: "Vessel Studio", was wondering why you were condemning your code to the open ocean. |
22:44 | <&McMartin> | "There have been 20 failed attempts to log into your account since your last login." |
22:44 | <&McMartin> | aka "attempts to sort out which version of SSH is trying to load which keys from where" |
23:19 | | * McMartin then goes to write a Bumbershoot article, because it's been over two months. |
23:22 | <~Vornicus> | hoorumbershoot for bumbershoot |
23:27 | <&McMartin> | OTOH, the code I'm writing up is over three months old |
23:27 | <&McMartin> | I have to remind myself what I was doing |
23:28 | | * Vornicus tries to think of how to describe games in the above format |
23:28 | <@ErikMesoy> | Arkanoid: The wall is blocks. It must be dismantled. You have a trampoline. |
23:28 | <&Derakon> | What format? |
23:29 | <~Vornicus> | that format |
23:29 | <&McMartin> | The endpoint of the project is http://hkn.eecs.berkeley.edu/~mcmartin/retro/bumber_ii.dsk |
23:29 | <&Derakon> | Oh, an hour ago. |
23:29 | <&McMartin> | It's the "make every game into For A Change" model |
23:29 | <&McMartin> | (For A Change was an IF made by one of the line programmers for Ultima Underworld, who then went on to invent Guitar Hero and Rock Band.) |
23:30 | <&McMartin> | (It opens with "The sun is gone. It must be brought. You have a rock.") |
23:31 | <@ErikMesoy> | Elder Scrolls series: "The world is big. It must be explored. You have a criminal record." |
23:35 | <~Vornicus> | the world is poisoned. it must be blown up. you have an arm cannon. |
23:35 | <&McMartin> | ... Metroid 2, FF7, or XCOM: Enemy Within? |
23:36 | <~Vornicus> | I was aiming for Metroid in general |
23:36 | <~Vornicus> | Few planets survive the samusing. |
23:37 | <&McMartin> | Zebes did! Once. |
23:37 | <&McMartin> | Possibly up to three times, if we take MZM as canon! |
23:38 | <&McMartin> | (Since there are two visitations in the game proper and an intimation that she had visited as a young girl.) |
23:39 | <&McMartin> | I guess SRR738 also survived its initial Samusing, but not its subsequent one. |
23:39 | <&McMartin> | I haven't played the Prime series so I don't know what her record is like over there. |
23:40 | <~Vornicus> | 388. |
23:40 | <~Vornicus> | tallon iv I don't know if it survives; the temple definitely blows up though |
23:40 | <~Vornicus> | aether survives but dark aether doesn't. |
23:40 | <&McMartin> | Architecture blowing up is fine by the planet |
23:41 | <~Vornicus> | I guess all the planets except Phaaze survive. |
23:52 | < ToxicFrog> | McMartin: where do the other two times come from? |
23:53 | <&McMartin> | In MZM? |
23:53 | <&McMartin> | So, the events in Metroid 1 are visit 2 |
23:53 | <&McMartin> | The events in MZM *after* Metroid 1 are visit 3 because Samus leaves the planet before re-crashlanding on it. |
23:54 | <&McMartin> | And the final still scene in the game zooms in on the corner of the room where you got the gravity suit to find an engraving I read as "Samus drew a picture on the wall here as a little girl" which would be visit 1. |
--- Log closed Mon Sep 05 00:00:13 2016 |