--- Log opened Sat Apr 08 00:00:45 2017 |
00:06 | | Kindamoody is now known as Kindamoody[zZz] |
00:45 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has quit [[NS] Quit: Leaving] |
01:58 | | himi [sjjf@Nightstar-v37cpe.internode.on.net] has quit [The TLS connection was non-properly terminated.] |
02:01 | | himi [sjjf@Nightstar-v37cpe.internode.on.net] has joined #code |
02:01 | | mode/#code [+o himi] by ChanServ |
03:09 | | Jessikat [Jessica@Nightstar-bt5k4h.81.in-addr.arpa] has quit [[NS] Quit: Leaving] |
04:38 | | Derakon is now known as Derakon[AFK] |
05:36 | | macdjord [macdjord@Nightstar-ahbhn1.cable.rogers.com] has joined #code |
05:36 | | mode/#code [+o macdjord] by ChanServ |
05:38 | <@abudhabi> | How do I press page up on an android virtual keyboard? |
05:44 | <@abudhabi> | Nevermind. Found the irrsi command. |
06:06 | <~Vornicus> | maaaathcooooode |
06:29 | | * Vornicus cannot maaaaathcoooode because he must caaaaaatsnuuuugleeeee |
06:31 | <~Vornicus> | strong argument for knowing the keyboard shortcuts for everything I guess: I cannot reach the mouse. |
07:00 | | Jessikat [Jessikat@Nightstar-7da5lb.dab.02.net] has joined #code |
07:51 | | macdjord is now known as macdjord|slep |
07:58 | | Kindamoody[zZz] is now known as Kindamoody |
08:02 | | Alek [Alek@Nightstar-7or629.il.comcast.net] has quit [Ping timeout: 121 seconds] |
08:05 | | Alek [Alek@Nightstar-7or629.il.comcast.net] has joined #code |
08:05 | | mode/#code [+o Alek] by ChanServ |
08:56 | | Kindamoody is now known as Kindamoody|afk |
09:44 | | Jessikat` [Jessikat@Nightstar-bbl4bs.dab.02.net] has joined #code |
09:46 | | Jessikat [Jessikat@Nightstar-7da5lb.dab.02.net] has quit [Ping timeout: 121 seconds] |
10:04 | | Jessikat` is now known as Jessikat |
10:32 | | Jessikat [Jessikat@Nightstar-bbl4bs.dab.02.net] has quit [[NS] Quit: Bye] |
11:16 | | Jessikat [Jessica@Nightstar-bt5k4h.81.in-addr.arpa] has joined #code |
13:18 | <~Vornicus> | at least mathcode is easy to test. |
13:47 | | Kindamoody|afk is now known as Kindamoody |
14:59 | <@abudhabi> | Due recent expeniece with JIRA, I've come to see the utility of project management software. |
15:00 | <@abudhabi> | Is there any software like that intended for solitary development? |
15:00 | <&McMartin> | I don't think there's anything stopping you from using it, or Trac, or Bugzilla, alone |
15:01 | <@abudhabi> | I guess not. |
15:03 | <@abudhabi> | Derakon[AFK]: What did you use? I recall you developed a commercial game of some sort. |
15:04 | | Jessikat [Jessica@Nightstar-bt5k4h.81.in-addr.arpa] has quit [[NS] Quit: Leaving] |
15:09 | <&McMartin> | I think you have a circuit crossed |
15:09 | <@abudhabi> | It wasn't Derakon who made that procedural platformer alone? |
15:22 | <&McMartin> | That wasn't commercial, though. |
15:23 | <@abudhabi> | Oh. I thought he made money on it. Seemed like a self-employment, from how he told about it. |
15:26 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has joined #code |
15:31 | | Derakon[AFK] is now known as Derakon |
15:32 | <&Derakon> | It was something I worked on between jobs, basically. |
15:32 | <&Derakon> | I decided to delay looking for a new job and instead work on a game. |
15:32 | <&Derakon> | But I never got it to the point where I could sell it. |
15:32 | <@abudhabi> | I see. |
15:34 | <&Derakon> | In hindsight I was much more interested in the puzzle of how to procedurally generated a platforming game world than I was in making a game. |
15:53 | | gnolam [lenin@Nightstar-09nsce.cust.bahnhof.se] has joined #code |
15:53 | | mode/#code [+o gnolam] by ChanServ |
17:48 | <@gnolam> | https://aphyr.com/posts/341-hexing-the-technical-interview |
17:56 | | Ky|o-Ren [cmnd@Nightstar-7i6ec2.dyn.optonline.net] has joined #code |
18:00 | <&McMartin> | Mad the rounds yesterday |
18:00 | <&McMartin> | I note in passing that this is basically my old Ph.D. thesis. |
18:04 | < RchrdB> | I assume aphyr's previous bewitching-the-interview post was probably even more fun for you? |
18:04 | < RchrdB> | since it started with Church encodings of cons cells and went all kinds of fun places from there |
18:14 | <&McMartin> | Oh no, this one was much more fun. |
18:15 | <&McMartin> | I spent most of the early aughts being better at hacking JVM bytecode than writing Java |
18:15 | <&McMartin> | One of the first tricks this does once it hits the classfile level is rewind the standard to the way it existed in the early aughts |
18:15 | <&McMartin> | Because in fact it is far easier to dynamically generate classes that way unless you have far more sophisticated tools handy |
18:15 | <&McMartin> | Which I did not at the time, but which I am given to understand Clojure uses internally~ |
18:16 | <&McMartin> | This does, however, manage to avoid that corner of the JVM in which a decision was made that was so boneheaded that there is a footnote apologizing for it in the spec. |
18:16 | <&McMartin> | I do not know if the Great Reworking that arrived in Java 1.5 fixed that. |
18:20 | <@ErikMesoy> | Gnahh. Browser is slow for a bit, so I idly figure I'll try speedtest, then speedtest fails silently, so I Inspect Element, and the console informs me that a page as simple as speedtest.net has *six errors, two warnings*, and then I figure I'm just having one of those days described in the login:logout column about how the internet is like a surgeon discovering that your liver has gills. |
18:20 | < RchrdB> | *snerk* what |
18:20 | < RchrdB> | Apologetic footnote? |
18:21 | <&McMartin> | OK, so, the non dumb thing, remembering that the JVM starts in the early-mid 1990s, when people still unironically used Amigas as actual personal workstations |
18:22 | <&McMartin> | Was that all registers and stack values are 32 bits wide, and thus longs and doubles take up two units of stack, or two local variables in your call frame. |
18:22 | <&McMartin> | (The high dword of each gets assigned a special type that may not be legally accessed by any instruction individually) |
18:22 | <&McMartin> | However, they also take up two entries in the constant pool, consuming an index with a high_long or high_double value that may not be accessed. |
18:23 | <&McMartin> | As you can see from this example though, this is completely dumb because constant pool entries are usually strings, which is to say, they are of variable length and can easily fit a long or double in. |
18:23 | <&McMartin> | My printed copy of the JVM spec includes a footnote at that part that says "In retrospect this was a poor choice" |
18:25 | < RchrdB> | ah okay that's... not as horrible as I was expecting |
18:25 | < RchrdB> | dumb but I guess I can see how it got that way |
18:26 | <&McMartin> | It's unmistakably an error and always was, but someone was figuring the constant pool would look like a register file early on and didn't revisit it in time, I think. |
18:28 | | JustBob [justbob@Nightstar.Customer.Dissatisfaction.Administrator] has quit [Ping timeout: 121 seconds] |
18:28 | < RchrdB> | The thought process that would've led to it is kind of understandable |
18:33 | <&McMartin> | Yeah. And with the stack entries and register frames, it's flatly not an error: the JVM is a 32-bit VM, that's how 64-bit values roll. |
18:34 | <&McMartin> | There is, however, one small error in that article. |
18:34 | <&McMartin> | It is entirely possible to express forbidden concepts in the JVM assembler. However, the point that the interviewer objects is not illegal in the first place |
18:35 | <&McMartin> | The requirement of the verifier is that along all paths to a program point (as defined by the standard dataflow analysis used for use-before-def or liveness checking), only variables with a consistent type are accessed. |
18:35 | <&McMartin> | Write instructions are thus always legal because they change the type of that location from there on. |
18:36 | <&McMartin> | What is illegal is if two conflicting write instructions both lead to the same read instruction, or if the read instruction does not match the writes. |
18:37 | <&McMartin> | If memory serves, there were two objections to this setup that had become solidified by the 1.4 era (from which this class hails) and which were addressed in 1.5 |
18:37 | <&McMartin> | First, it made loading slower than they'd like |
18:38 | <&McMartin> | Second, it turns out standard dataflow wasn't good enough to behave appropriately in the face of how exceptions got compiled without making assumptions that were OK on the surface but got less OK the closer you dug into them... and by then they'd had nearly a decade to dig into it |
18:38 | <&McMartin> | So 1.5 replaced it with "bring your own explicit type annotations, turning dataflow into simple typechecking" |
18:38 | <&McMartin> | This does also make Java the first industrially-deployed instance of Proof-Carrying Code I'm aware of. |
18:53 | < RchrdB> | <McMartin> What is illegal is if two conflicting write instructions both lead to the same read instruction, or if the read instruction does not match the writes. |
18:53 | < RchrdB> | ^ this sounds very similar, suspiciously similar, to the language about effective types of memory locations in the C11 standard. |
18:54 | < RchrdB> | I thought anything with a bytecode verifier technically counted as proof-carrying code? |
18:55 | < RchrdB> | like the definition of "PCC" is that the code carries with it proof of some (any) relevant invariant |
18:55 | < RchrdB> | and that e.g. constant stack usage counts? |
18:56 | <&McMartin> | Hmm. |
18:56 | < RchrdB> | Might be wrong about that. |
18:56 | <&McMartin> | Pre-1.5 JVM is, imo, a "typed assembly language", which I think of as a broader class |
18:56 | <&McMartin> | But I can see the argument for it being a narrower one! |
18:57 | <&McMartin> | And speaking of which, now that you mention it, the stack height has to be invariant in the JVM spec too |
18:57 | <&McMartin> | Looking at the full set of requirements, it's very clear that Sun's intent was for the JVM to be a stack machine that could be trivially transformed into a register machine as long as you had enough registers. |
19:16 | | Ky|o-Ren [cmnd@Nightstar-7i6ec2.dyn.optonline.net] has quit [[NS] Quit: - nbs-irc 2.39 - www.nbs-irc.net -] |
20:28 | | Kindamoody [Kindamoody@Nightstar-0lgkcs.tbcn.telia.com] has quit [[NS] Quit: Rebooting.] |
20:33 | | Kindamoody|autojoin [Kindamoody@Nightstar-0lgkcs.tbcn.telia.com] has joined #code |
20:33 | | mode/#code [+o Kindamoody|autojoin] by ChanServ |
21:08 | | JustBob [justbob@ServerAdministrator.Nightstar.Net] has joined #code |
21:08 | | mode/#code [+o JustBob] by ChanServ |
21:33 | | Kindamoody|autojoin is now known as Kindamoody |
21:42 | | Jessikat [Jessica@Nightstar-bt5k4h.81.in-addr.arpa] has joined #code |
21:53 | <@ErikMesoy> | Little Bobby Tables is growing up! https://www.sec.cs.tu-bs.de/pubs/2017-asiaccs.pdf |
21:53 | <@ErikMesoy> | "... an attacker may finish each iteration over a list of guessed passwords with a set of malicious markers, i.e., specially crafted login names that correspond to anti-virus signatures. If the attacked host is running a virus scanner configured to delete or quarantine viruses, any file containing such a malicious marker is deleted or at least moved to a different location." |
21:54 | <@ErikMesoy> | "This not only makes manual investigation of the attack hard but may also inhibit the functionality of tools analyzing log files to stop password guessing, such asfail2ban[26]." |
21:58 | < RchrdB> | bwahaha |
21:59 | < RchrdB> | oh that's why people in my twitter feed have been mentioning stuff like putting the EICAR test vector in their email signature |
21:59 | <&McMartin> | To start nuking people's mailspools? |
22:00 | < RchrdB> | yeah that kind of prank is why they were doing it |
22:00 | < RchrdB> | I mean I'm guessing that the publication of this paper that ErikMesoy just linked |
22:00 | < RchrdB> | is the impetus for why people have been recently mentioning pranks like that. |
23:15 | | Kindamoody is now known as Kindamoody[zZz] |
23:35 | <@himi> | People still use single-file mail spools? |
23:57 | <&[R]> | Exchange is apparently popular |
23:57 | <&[R]> | Despite their mail format having braindead implimentation problems. |
23:58 | <&[R]> | (Though better than UNIX-style single-file mail spools, where you can send a specially formatted email message to fake extra messages.) |
23:58 | < RchrdB> | Well, mbox files? |
23:58 | < RchrdB> | but the paper is talking about doing more serious things like putting virus signatures into your enemies' apache logs so that their AV tools will delete the apache logs and then ~no more forensics~ |
--- Log closed Sun Apr 09 00:00:46 2017 |