--- Log opened Fri Nov 03 00:00:53 2006 |
00:00 | | ReivSLEP is now known as Reiver |
00:03 | | Jan[phone] [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Quit: I shouldn't pour this on another's lap...] |
00:18 | | * ToxicFrog flails |
00:18 | <@ToxicFrog> | nslookup works. |
00:19 | <@ToxicFrog> | gethostbyname() doesn't. |
00:21 | < Vornotron> | :/ |
00:25 | <@ToxicFrog> | (this is, unsurprisingly, in windows) |
00:44 | | Stephenie [Safyra@Nightstar-4370.ok.ok.cox.net] has joined #code |
00:44 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #Code |
00:52 | < Vornotron> | ...well, I guess this is what I get for using a random password generator. |
00:52 | <@ToxicFrog> | ? |
00:53 | < Vornotron> | Here's a password I won't be using: {@`c%7.1?L |
00:55 | < Vornotron> | (1..10).inject('') {|base, k| base + (rand(94) + 32).chr} |
00:56 | < Vornotron> | I get a password that I can't even write down without screwing up. |
00:56 | <@Reiver> | To be fair, that's a pretty good password, though! |
00:56 | < Vornotron> | Yeah, it's damn good. |
00:57 | <@Reiver> | Although perhaps a tad too short. |
00:57 | <@ToxicFrog> | Dude, it's {@`c%7.1?L. |
00:57 | | * Janus is reminded of child-proof asperin. |
00:57 | <@Reiver> | So make it {@`c%7.1?L*&q ! |
00:57 | | * Reiver >.> |
00:58 | <@Reiver> | Our passwords at work were required to be 12 characters+. |
00:58 | < Vornotron> | There's only 53 861 511 409 489 970 176 distinct 10 character passwords that can be generated by this algorithm. |
00:58 | <@McMartin> | I though the idea of passwords was that you didn't write them down~ |
00:59 | < Vornotron> | McM: exactly my point. |
01:04 | <@Reiver> | McM: Could you explain this to my workplace, please? |
01:05 | <@Reiver> | We used to have a system where to get local admin rights to a computer required one, long and fairly secure password. Logging in as such notified the network manager, but otherwise you had no access to the network as a whole. |
01:06 | <@Reiver> | (By 'fairly secure' I mean 'It wasn't /quite/ a random string, but something actually able to be memorised'.) |
01:06 | <@Reiver> | It got changed every couple weeks, but allowed us to quickly and easily install/troubleshoot software in the feild. |
01:07 | <@Reiver> | However, it was then decided that having a global password for every machine was insecure! |
01:07 | <@McMartin> | Which it is! |
01:07 | <@McMartin> | But people hate security! |
01:07 | <@Reiver> | So they changed the system to a sixteen character random text string, different on every machin and changing every 2-3 days. |
01:08 | <@Reiver> | Now, this practically ensures that no hacker is going to guess our passwords! |
01:08 | <@Reiver> | ...It also entirely gurantees no IT person is ever going to be able to log into a machine in the feild without having written down the password before heading out... |
01:09 | <@Reiver> | >.< |
01:09 | <@Reiver> | This always struck me as inherently moronic, but. |
01:09 | <@McMartin> | I approve of the "different on every machine" part, but they should still be memorizable. |
01:10 | <@McMartin> | i.e., brief the IT guys when they go out, thwart hostile clients with keyloggers |
01:11 | <@Reiver> | Example password: e75qIst!xVm`Plz |
01:11 | <@Reiver> | (I made that up, but it looks pretty much like the ones we had to deal with.) |
01:12 | <@Reiver> | (Might I note one has to be very careful to distinguish between a lowercase and uppercase V when scribbling down a password in a hurry?) |
01:13 | <@Reiver> | Which is entirely ruining the point anyway, but if you expect me to remember twelve of those strings before walking out to manually update software on machines halfway accross campus, you've got another thing coming, and it's probably my boot~ |
01:15 | <@Reiver> | I'll freely admit a single 'global' password was not a good idea. |
01:15 | <@Reiver> | But replacing the passwords with ^ that, um... |
01:17 | <@Reiver> | The IT support staff just looked at the new system rules when they were announced by the network staff and went "...Right. Writing them down it is, then. Fuckwits." |
01:18 | | * Reiver shrugs. And then they made users have 12+ character passwords with at least three of the [a-z] [A-Z] [0-9] [!~`etc] groups present. |
01:19 | <@Reiver> | Oh, and they changed monthly. |
01:20 | <@Reiver> | I didn't have a problem with this personally. And I guess it gave the helpdesk folks something extra to do - lots of password resets. :p |
01:35 | | Thaqui [~Thaqui@Nightstar-26630.broadband-telecom.global-gateway.net.nz] has quit [Ping Timeout] |
01:35 | | ToxicFrog|Lab [~ToxicFrog@Nightstar-2174.cpe.net.cable.rogers.com] has quit [Operation timed out] |
01:35 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Operation timed out] |
01:41 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code |
01:41 | | mode/#code [+o ToxicFrog] by ChanServ |
01:54 | | Vornotron [~vorn@Nightstar-18307.slkc.qwest.net] has quit [Quit: ] |
02:29 | | Stephenie [Safyra@Nightstar-4370.ok.ok.cox.net] has quit [Quit: ] |
02:29 | | Stephenie [Safyra@Nightstar-4370.ok.ok.cox.net] has joined #code |
02:39 | <@Raif> | Our school has a single global password... you'll never guess what it is. |
02:39 | <@Raif> | Well, the one they had for the first two years I was going there was "st3llarst4rs4u"...\ |
02:39 | <@Raif> | Now, it's 1q |
02:40 | <@Raif> | (I shit you not) |
02:42 | < Vornicus> | heh |
02:44 | | Vornicus [~vorn@67.50.40.ns-3674] has quit [Quit: Leaving] |
02:44 | | Vornicus [~vorn@67.50.40.ns-3674] has joined #code |
02:50 | | Syloq [Syloq@Admin.Nightstar.Net] has joined #code |
02:51 | | Syloq is now known as Syloqs-AFH |
02:59 | | Thaqui [~Thaqui@Nightstar-24792.broadband-telecom.global-gateway.net.nz] has joined #code |
03:07 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Quit: bathipoo'n'bedibye] |
04:01 | <@Reiver> | O.o |
04:02 | < Vornicus> | ? |
04:06 | | You're now known as TheWatcher |
04:16 | <@Reiver> | 1q for a password. |
04:16 | <@McMartin> | Awesome. |
04:16 | | * McMartin reimplements Lex in Python in, like, 25 lines of code. |
04:16 | <@Reiver> | ... |
04:17 | <@Reiver> | Lex? |
04:17 | <@McMartin> | Pre-included regexp packages + lambdas ftw~ |
04:17 | <@McMartin> | Lex = lexical analyzer generator. |
04:17 | <@McMartin> | In this case it's not so much a "generator" since Python code is fairly clean to begin with. So you just define a list of patterns and actions, and let it go to town |
04:18 | < Vornicus> | it's a parser-machine |
04:18 | <@McMartin> | Well, lexer |
04:18 | < Vornicus> | well, okay |
04:18 | < Vornicus> | it's a tokenizer-machine |
04:32 | <@McMartin> | The other nice bit is that since token names are all strings (woo dynamically-typed languages), I can just hand it lists of meaningful punctuation and reserved words. |
04:58 | | Reiver is now known as ReivOut |
06:14 | | You're now known as TheWatcher[afk] |
06:25 | | Raif [~corvusign@Nightstar-7918.hsd1.mn.comcast.net] has quit [Killed (NickServ (GHOST command used by Raif_))] |
06:30 | | ReivOut is now known as Reiver |
06:38 | | ChalcyGettingBetter is now known as Chalcedon |
06:50 | | Syloqs-AFH [Syloq@Admin.Nightstar.Net] has quit [Connection reset by peer] |
08:25 | | Mahal [~Mahal@Nightstar-11770.worldnet.co.nz] has quit [Quit: It's hard to be mad at someone who misses you while you're asleep. ] |
08:53 | | Vornicus is now known as Vornicus-Latens |
08:58 | | Chalcedon is now known as ChalcyZzz |
09:17 | | You're now known as TheWatcher |
09:52 | | Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code |
09:52 | | mode/#code [+o Chalcy] by ChanServ |
09:53 | | ChalcyZzz [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout] |
11:46 | | Ev3 [~Shemhazai@Nightstar-8502.ds1-ba.adsl.cybercity.dk] has quit [Ping Timeout] |
12:40 | | Thaqui is now known as ThaquiSleep |
13:47 | | ChalcyGone [~Chalceon@60.234.221.ns-21239] has joined #code |
13:49 | | Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout] |
14:40 | | You're now known as TheWatcher[afk] |
14:51 | | You're now known as TheWatcher |
15:52 | | You're now known as TheWatcher[afk] |
16:04 | | Raif [~corvusign@Nightstar-7918.hsd1.mn.comcast.net] has joined #code |
16:04 | | mode/#code [+o Raif] by ChanServ |
16:20 | | You're now known as TheWatcher |
16:47 | | Reiver is now known as ReivZzz |
17:24 | | Vornicus [~vorn@Nightstar-18307.slkc.qwest.net] has joined #code |
17:24 | | mode/#code [+o Vornicus] by ChanServ |
17:29 | | You're now known as TheWatcher[afk] |
17:32 | | * Chalain reads the backscroll. |
17:33 | <@Chalain> | People keep forgetting that locks have TWO purposes. |
17:33 | <@Chalain> | The first, obviously, is to make unauthorized entry difficult. |
17:33 | <@Chalain> | The second, however, is to make authorized entry easy. |
17:34 | <@Chalain> | McMartin: Would you be amenable to sharing your 25-line tokenizer? I'd be most interested in seeing how (a good) one works. |
17:35 | <@Chalain> | Also: 5600RPM laptop drive + 190MB Postgres database import == pain |
17:37 | <@Vornicus> | Chalain: what db are you pulling that's 190mb? |
17:37 | <@Chalain> | Ennesby's production db. It's filled with synch statements. |
17:41 | <@ToxicFrog> | Chalain: presumably, it's "walk down the list of regexes, return stuff for the first one that matches, advance over input" |
17:41 | | * ToxicFrog idly ponders implementing this using coroutines |
17:43 | <@Vornicus> | I have a bzip of ennesby production that's only 8mb |
17:43 | <@Chalain> | ToxicFrog: Nod. I've never written or seen written a lexer, however. I need to break one apart before a summary of them becomes meaningful. :-) |
17:44 | <@Chalain> | Vornicus: So do I. But, please, how do you make the zip go into the psql? |
17:44 | <@Chalain> | Hint: you unzip it, yielding a 182mb sql file. :-( |
17:45 | <@Chalain> | It's imported now, though. |
17:45 | <@Vornicus> | ..95% compression? |
17:45 | <@Chalain> | Also, how old is your zip file--this morning's dump was 10Mb |
17:45 | <@Chalain> | Yup |
17:45 | <@Chalain> | the change_lock_hack table compresses HARD |
17:45 | <@Vornicus> | midnight |
17:46 | <@Chalain> | Huh. Weird. |
17:46 | <@Chalain> | Oh, wait--does your dump have the schema? |
17:46 | <@Vornicus> | yes |
17:46 | <@Vornicus> | it doesn't have drops tho |
17:46 | <@Chalain> | Hmm. Weird. |
17:46 | <@Vornicus> | and it's not verbose |
17:46 | <@Chalain> | drops? I don't think mine does; I just did--AHHH. |
17:47 | <@Chalain> | I did column-inserts to ensure that the dump was restorable on a different server. |
17:47 | <@Vornicus> | OH |
17:47 | <@Vornicus> | that'd do it |
17:49 | <@ToxicFrog> | Chalain: the canonical way to build a lexer is with a DFA. |
17:49 | <@ToxicFrog> | And the lexer generators lex(1) and flex(1) work by taking a set of regular expressions and generating a DFA from them. |
17:49 | <@ToxicFrog> | In the case of Python, you have regex comparison functions right there, so you can just use them directly. |
17:49 | <@Chalain> | defineTLA(DFA) |
17:50 | <@ToxicFrog> | Deterministic Finite Automaton. |
17:50 | <@Chalain> | Ah. |
17:50 | <@ToxicFrog> | A type of finite state machine. |
17:52 | <@Chalain> | I need to build some parser/lexers at some point, just for fun. |
17:53 | <@ToxicFrog> | I highly recommend it. |
17:53 | <@Chalain> | I've played with flex/bison in the past but they both fairly scream at you, "This will generate an inefficient parser!" |
17:53 | <@ToxicFrog> | Building a lexer-parser for some relatively simple language (Lisp, for example) from scratch is loads of fun. |
17:54 | <@Chalain> | I've never seen such popular software that so proudly proclaimed its uselessness. :-) |
17:54 | <@ToxicFrog> | For larger stuff you kind of need flex/bison to minimise the amount of hideous screaming horror. |
17:54 | <@Chalain> | Actually, I tentatively have a goal of building a scheme interpreter over the next year or so. |
17:55 | <@ToxicFrog> | A worthy goal. |
17:55 | <@ToxicFrog> | I never got around to code generation, myself. |
17:55 | <@Chalain> | Oh, that reminds me. |
17:55 | <@Chalain> | I need to see if emacslisp does tail-call optimization. |
17:55 | | * Vornicus wrote a lexer in about... oh... 4 hours, using an 8-line function and a 200-char regex. |
17:56 | | * ToxicFrog highly recommends the Dragon Book for this, and Sisper's "Introduction to the Theory of Computation" |
17:56 | <@ToxicFrog> | Vornicus: that is all kinds of obscene. |
17:56 | <@Vornicus> | It's still live too. |
17:56 | <@ToxicFrog> | Schlock? |
17:56 | <@Vornicus> | Yep |
17:57 | <@ToxicFrog> | (perhaps I shouldn't be calling it obscene considering some of the things I've done with regexes. But it is) |
18:04 | <@Chalain> | Nope. Looks like tail recursion in emacslisp craps out at about depth 135. |
18:05 | <@ToxicFrog> | ...emacslisp isn't tail-recursive? |
18:06 | <@Chalain> | doesn't appear to optimize for it, no. |
18:06 | <@ToxicFrog> | Don't lisp implementations have to be tail-recursive? |
18:06 | <@Chalain> | No. Scheme requires it. |
18:06 | <@ToxicFrog> | Aah. |
18:15 | | ToxicFrog is now known as ToxicFrog|AFN |
18:23 | <@McMartin> | Chalain: It's not a good tokenizer, actually, at least we define "good" as "acts exactly like the standard ones do since the 60s" or "produces really fast code". |
18:23 | <@McMartin> | s/we/if we/ |
18:23 | <@McMartin> | In particular, I had to do some noticably ugly hacks to get reserved words to work, because I'm not saying "match all possible tokens simultaneously and return the largest one" |
18:25 | <@McMartin> | But as long as all your reserved words could double as identifiers if they weren't reserved words, it works. |
18:26 | <@McMartin> | That said, http://www.stanford.edu/~mcmartin/simple-lex.py |
18:26 | <@McMartin> | It's longer now because I added in an actual lexer for my query language. |
18:37 | <@Chalain> | Eeenteresting. |
18:37 | <@Chalain> | Cool, thank you. |
18:37 | <@Chalain> | Do you have a sample program for your query language? :-) I guess you're just tokenizing here so there's no grammar spec. |
18:37 | <@McMartin> | Yeah, just tokenizing, there. The actual lexer/parser is in java. |
18:37 | <@McMartin> | One moment. |
18:38 | <@McMartin> | If SF stops being a bitch |
18:38 | <@Chalain> | Oh man, yeah. I hate it when Science Fiction is mad at me. |
18:38 | | * Chalain ducks. |
18:39 | <@McMartin> | http://pql.cvs.sourceforge.net/pql/pql/queries/sql_inject.query?revision=1.5&vie w=markup |
18:39 | <@McMartin> | SQL injection |
18:40 | <@McMartin> | Kind of overkill, really, since these kind of injection attacks only use two or three of the clauses in StringProp(), but. |
18:42 | <@Chalain> | Wow. Very cool. |
18:43 | <@McMartin> | Yeah, most of my thesis is on this language I developed and Things To Do With It. |
18:43 | <@McMartin> | Hopefully by the time I get around to doing the thesis I'll have more than one actually published paper on it~ |
18:47 | | * Chalain laughs. |
18:47 | <@Chalain> | You mean you are getting a degree in a Problems In Search Of A Solution? |
18:47 | <@Chalain> | s/Problems/Problem/ |
18:47 | <@Chalain> | Dammit. |
18:48 | <@Chalain> | I cannot think clearly today. |
18:48 | <@Chalain> | Solution In Search of a Problem. |
18:48 | <@Chalain> | I'm wittier when I'm not Chalain = Chalain.filter(rand) |
18:49 | <@McMartin> | Oh, the academic interest point is "Provided a problem to a pre-existing solution in search of a problem" |
18:50 | <@McMartin> | But the papers are all on bigfinding and self-defending programs |
18:50 | <@McMartin> | Pwnz0rsh1p makes a handy problem that everything can solve. |
18:50 | <@Chalain> | hee |
18:50 | <@McMartin> | Speaking of pwnz0rsh1p. |
18:51 | <@McMartin> | As #code wasn't around when I first made the observation. |
18:51 | | You're now known as TheWatcher |
18:51 | <@McMartin> | I find it highly amusing that in software engineering terminology, Object A "owns" Object B if A destroys B in every possible run of the program. |
18:51 | <@McMartin> | PwN3d!!!!!!!1!! |
18:51 | <@Chalain> | lol |
18:52 | <@McMartin> | (Typically actually because B is in some sense "part of A" and so is cleaned up in A's destructor, but still) |
18:52 | <@Chalain> | "In this orthography, symbol B is a mnemonic for b1tch." |
18:52 | <@Vornicus> | ...hee |
18:56 | <@Chalain> | OBJECT A HAS TAKEN THE LEAD. |
18:56 | <@Vornicus> | okay, that's jsut kinda sad |
18:57 | | * Chalain frags Vornicus. |
18:59 | | ToxicFrog|AFN is now known as ToxicFrog |
19:00 | | * Vornicus leaves bits all over the office. |
19:00 | | * Vornicus likes the word "bigfinding" by the way |
19:01 | <@McMartin> | bigfinding? |
19:01 | <@McMartin> | Ah. |
19:01 | <@McMartin> | bugfinding. |
19:01 | <@Vornicus> | But the papers are all on bigfinding and self-defending programs |
19:02 | <@Vornicus> | I know, it's a typo - but it sounds like it /should/ mean something |
19:03 | <@Chalain> | Heh, true |
19:05 | <@McMartin> | Chalain: As it happens, my immediate takeaway from the project is that the Hard Part isn't actually finding things that are wrong, it's getting the application into a state where you can have machine tools look at it. |
19:06 | | * Chalain believes it. |
19:08 | | * ToxicFrog finally follows the above link. |
19:08 | <@ToxicFrog> | It looks like a Java/SML hybrid. o.O |
19:10 | <@McMartin> | Individual subqueries are, in fact, regular expressions of Java statements. |
19:11 | <@McMartin> | Or subquery invocations or equality assertions. |
19:21 | | Syloq [Syloq@Admin.Nightstar.Net] has joined #code |
19:22 | | Syloq is now known as Syloqs-AFH |
19:25 | <@Vornicus> | ...arg. It's so nice having a Linux box on my desk. It's too bad it's the server, I want to play with iiiiit. |
19:34 | <@ToxicFrog> | Hee. |
19:34 | | * ToxicFrog found this out ages ago |
19:36 | | * McMartin kicks pdflatex in the bitch, replaces it with a bash script. |
20:10 | | Mahal [~Mahal@Nightstar-11770.worldnet.co.nz] has joined #Code |
20:10 | | mode/#code [+o Mahal] by ChanServ |
20:28 | | ChalcyGone is now known as Chalcedon |
20:49 | | Ev3 [~Shemhazai@Nightstar-8502.ds1-ba.adsl.cybercity.dk] has joined #Code |
20:54 | | Chalcedon [~Chalceon@60.234.221.ns-21239] has quit [Quit: rebooting] |
20:55 | | aoanla [~sam@Nightstar-24475.range81-156.btcentralplus.com] has joined #code |
21:00 | <@Vornicus> | So several of my coworkers are standing behind me discussing point of sale systems. Every time they use the acronym, I have to stifle giggles. |
21:02 | < aoanla> | "PoS"? |
21:02 | < aoanla> | I see. |
21:03 | | Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code |
21:03 | | mode/#code [+o Chalcedon] by ChanServ |
21:05 | | Mahal is now known as MahalOUT |
21:12 | | Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout] |
21:19 | | EvilSLEPLord is now known as EvilInTransitLord |
21:45 | | ToxicFrog is now known as ToxicFrog|AFN |
22:19 | | donhuan [~dino@Nightstar-14342.dlp409.bih.net.ba] has joined #Code |
22:19 | | donhuan [~dino@Nightstar-14342.dlp409.bih.net.ba] has left #Code [] |
22:30 | | EvilInTransitLord is now known as Jo}{n |
22:33 | | ThaquiSleep is now known as Thaqui |
22:33 | | ReivZzz is now known as Reiver |
23:11 | | Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code |
23:11 | | mode/#code [+o Chalcedon] by ChanServ |
23:31 | | aoanla is now known as caps[t-2] |
23:36 | | caps[t-2] [~sam@Nightstar-24475.range81-156.btcentralplus.com] has quit [Quit: Leaving] |
--- Log closed Sat Nov 04 00:00:53 2006 |