00:01:42 -!- oerjan has joined.
00:02:51 <augur> fuck yeah, now its looking good :)
00:03:33 <oerjan> 10:03:38 <ais523> hmm, if a problem is NP, its reverse is normally P
00:03:44 <oerjan> you should be _glad_ you're not here right now
00:04:23 <oerjan> (translation: that is just nonsense)
00:04:45 <oerjan> unless he had something strange in mind by "reverse"
00:04:51 <coppro> isn't that part of the definition of NP?
00:04:59 <augur> have i told you about my algorithm that seems to solve the maximum clique problem in quadratic time? 8D
00:06:07 <augur> i have a link somewhere in the logs
00:06:55 <oerjan> augur: well since the part of the logs i'm at mentioned it was NP-complete, i assume that's only "seems"
00:07:04 <augur> it probbaly does only seem
00:07:25 <augur> im running it in Textmate's ruby interpreter, so its slow, right
00:07:31 <augur> so i cant so the kinds of tests i'd like to do
00:07:40 <oerjan> but otherwise i should congratulate you on soon becoming a millionaire ;D
00:07:47 <augur> we could implement it in C and get some blazing speed out of it then throw some random data at it
00:09:22 <oerjan> augur: you should test it on a maximum clique problem that has been reduced from some other NP-complete problem like SAT.
00:10:02 <augur> sure but what i need is not a single test case but a bunch of them, so that i can actually plot complexity curves
00:10:07 <oerjan> i don't know (at least on the spot) how the reduction goes though
00:10:17 <augur> a single test case is fine, but that just tells me how fast it solves this one problem
00:10:33 <oerjan> augur: well if you have the actual reduction algorithm, you could test reduced SAT cases
00:11:23 <augur> right. i guess what i really need is a way to just run through a shitton of graphs.
00:11:38 <augur> right now im just testing it on 100 random graphs with n nodes
00:11:51 -!- Oranjer has joined.
00:12:01 <pikhq> augur: Ruby? Of course it's slow. The interpreter is literally traversing the AST!
00:12:35 <augur> i know its slow. i need to write this in C, but im too lazy to figure that out right now. i suppose if i could find a graph library it'd be trivial
00:13:02 <oerjan> "the problem of finding the maximum clique is both fixed-parameter intractable and hard to approximate"
00:13:07 <augur> and i need to figure out how to use the standard array and hash libraries
00:13:42 <pikhq> Array library? C? *Hah*.
00:14:23 <augur> you know, something that will automatically manage arrays for me
00:14:42 <pikhq> You're lucky to have malloc.
00:14:43 <oerjan> augur: are you sure you are actually finding the maximum clique and not a _maximal_ clique?
00:14:48 * pikhq is being intentionally evil. ;)
00:15:18 <oerjan> (i.e. a clique that cannot be enlarged)
00:15:20 <pikhq> But on a more serious note: there are no *standard* array libraries.
00:15:23 <augur> oerjan: yes. see, the algorithm technically doesn't find the maximum clique, it finds the largest clique that a given node is in
00:15:29 <pikhq> You've got handy tools like "memcmp"
00:15:38 <augur> BUT, that problem is actually the maximum clique problem.
00:15:47 <pikhq> And things that claim to be tools like "strcpy" and "strcmp".
00:16:11 <augur> also, ofcourse im finding a maximal clique. the maximum clique IS maximal. 8D
00:17:12 <augur> i know how to do denotational semantics /for real languages/
00:17:35 <augur> suck it, strachey and scott
00:18:12 <augur> general semantics is not semantics.
00:22:01 <oerjan> 10:22:57 <ais523> generate them at random? by definition, you can test if an answer to an NP-complete problem is correct in P-time
00:22:30 <oerjan> only if the answer is _yes_
00:22:45 <uorygl> And only if "answer" means a whole lot more than the answer.
00:22:54 <augur> oerjan: forget him
00:22:59 <augur> lets translate this algorithm into C
00:23:36 <uorygl> Otherwise, the statement would be equivalent to "you can determine if the answer to an NP-complete problem is YES or NO in P-time".
00:23:57 -!- FireFly has quit (Quit: Leaving).
00:24:32 <uorygl> I once met a guy who was 120% sure that P != NP.
00:24:33 <oerjan> uorygl: mind you what he said, with a liberal interpretation, is true if NP = co-NP. but that is not known.
00:25:16 <uorygl> You know, if he really is 120% sure, he ought to be willing to take a bet where he loses $1 if P != NP and loses $1,000,000 if P = NP.
00:25:31 <augur> oerjan: cmon, lets do it. im starting to see some potentially exponential trends so lets get to doing this for real
00:25:57 <oerjan> what do you mean "us", kemosabe?
00:25:58 <uorygl> Calculate the expected value: 1.2 * -1 + -0.2 * -1000000 = 199998.8
00:26:35 <augur> oerjan: us, as in if its really polynomial you'll get half the credit.
00:28:04 -!- charlls has quit (Quit: Saliendo).
00:29:08 <oerjan> wait, it's kemosabe, how does google dare to suggest a _wrong_ correction?
00:32:52 <augur> i'd dare your magic
00:32:55 <augur> if you know what i mean
00:40:01 <augur> are there really no standard C libs for arrays?
00:43:25 <pikhq> It's not part of the standard library, no.
00:43:52 <pikhq> Strictly speaking, C *does not have arrays* that are not global or on the stack. And you cannot pass arrays as arguments.
00:44:00 <pikhq> What you have is a pointer and syntactic sugar.
00:44:46 <augur> right, i know. what i mean is some sort of struct or whatever and some functions that will manage it so i can just push and pop as needed
00:44:58 <pikhq> Not in the C library.
00:57:47 -!- Gracenotes has joined.
01:16:12 <augur> where the fuck is memcpy located :|
01:17:54 <pikhq> string,h, according to man memcpy
01:19:27 <augur> i think i might need to just write my own version actually
01:35:01 <uorygl> `run echo 'Because there are a LOT of ways to mess up these' | wc
01:36:10 -!- lament has quit (Ping timeout: 264 seconds).
01:36:19 -!- lament has joined.
01:59:40 <oerjan> Quite Definitely Maybe.
02:05:01 -!- comex has changed nick to HiEverybody.
02:05:07 -!- HiEverybody has changed nick to comex.
02:09:53 -!- jcp has quit (Ping timeout: 260 seconds).
02:33:30 -!- jcp has joined.
02:45:54 -!- pikhq has quit (Ping timeout: 256 seconds).
02:46:11 -!- oerjan has quit (Quit: Reboot).
02:47:08 -!- pikhq has joined.
02:51:00 -!- nooga has joined.
02:51:22 <nooga> i've found something amusing on google maps :D
02:51:23 -!- Sgeo has joined.
02:51:28 <nooga> http://to./38k2 WTF?
02:52:23 -!- oerjan has joined.
02:52:31 <nooga> 0.5mil broad stripe over bajkal O_o
02:55:18 <oerjan> no no, it's the famous barguzin half-bridge
02:55:38 <nooga> for soviet tanks, perhaps
02:55:53 <bsmntbombdood> if this wasn't 2010 i'd say it was a piece of tape
02:59:54 <nooga> http://en.allexperts.com/q/Geography-1729/running-Lake-Baikal-1.htm
03:00:21 <nooga> they're trying to explain it with another conspiracy theory
03:02:50 -!- Oranjer has left (?).
03:21:03 -!- coppro has quit (Quit: I am leaving. You are about to explode.).
03:31:56 <Gracenotes> okay, so in my game, if the player hits the jump button 2 frames before they touch the ground, the game gives them leeway and jumps anyway once they touch down
03:32:04 <Gracenotes> hope this doesn't screw with their brains
03:33:18 <Gracenotes> I'm actually pretty happy about the heuristics I've come up with. scrolling, jumping behavior, ...
03:33:21 <oerjan> brainfucking is strictly allowed in this community
03:33:47 <Gracenotes> screw with their brains, not screw their brains
03:51:18 -!- jcp has quit (Ping timeout: 252 seconds).
04:00:25 <augur> why am i getting errors when i have circular dependency graphs in C? :|
04:07:28 -!- jcp has joined.
04:13:36 <oerjan> what do you mean by circular dependency graphs
04:14:17 <augur> i found a better solution
04:14:47 <oerjan> if you mean #include's, then they cannot be circular afaik, they're textual inclusion
04:15:06 <augur> i was using #import, but
04:15:33 -!- MizardX has quit (Ping timeout: 240 seconds).
04:16:41 <oerjan> ah that's apparently not C, but C++
04:26:50 -!- jcp has quit (Ping timeout: 248 seconds).
04:31:59 -!- werdan7 has quit (*.net *.split).
04:31:59 -!- SimonRC has quit (*.net *.split).
04:32:35 -!- SimonRC has joined.
04:39:45 -!- werdan7 has joined.
04:46:36 <Sgeo> "Probably a simple question but what do I put for the login universe for Preston bot and other bots if I am in AWEDU? I have tried !AWEDU! but get the message ' cant resolve universe host'."
04:46:49 <Sgeo> Basically, the login universe is a server
04:47:04 <Sgeo> So, this person is somewhat clueless, but so what
04:47:14 <Sgeo> However, this is the response from staff:
04:47:27 <Sgeo> "Could you please tell me what your User name is in AWEDU and which world is yours? I will need this to get the info.
05:01:02 -!- jcp has joined.
05:33:32 -!- oerjan has quit (Quit: Good night).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:08:01 -!- tombom has joined.
08:40:57 -!- jcp has quit (Quit: I will do anything (almost) for a new router.).
08:50:07 -!- tombom has quit (Quit: Leaving).
10:28:39 -!- lereah_ has joined.
11:13:48 -!- kar8nga has joined.
11:32:48 -!- MizardX has joined.
11:37:14 -!- MizardX has quit (Read error: Connection reset by peer).
11:50:02 -!- MizardX has joined.
12:13:35 -!- kar8nga has quit (Remote host closed the connection).
12:56:41 -!- kar8nga has joined.
13:04:36 -!- MigoMipo has joined.
13:18:36 -!- amca has joined.
13:39:24 -!- ais523 has joined.
14:52:39 -!- deschutron has joined.
14:56:56 -!- fax has joined.
14:57:47 -!- Sgeo_ has joined.
15:00:04 -!- MigoMipo has quit.
15:00:27 -!- Sgeo has quit (Ping timeout: 245 seconds).
15:02:23 -!- MigoMipo has joined.
15:03:30 -!- lament has quit (Ping timeout: 245 seconds).
15:03:45 -!- lament has joined.
15:07:47 -!- MigoMipo has quit (Remote host closed the connection).
15:10:52 -!- MigoMipo has joined.
15:23:12 -!- oerjan has joined.
16:06:02 -!- lament has quit (Ping timeout: 248 seconds).
16:06:28 -!- lament has joined.
16:23:10 -!- oerjan has quit (Quit: KABOOM!).
16:23:33 -!- nooga has quit (Ping timeout: 240 seconds).
16:25:44 -!- Gracenotes has quit (Quit: Leaving).
16:30:57 -!- sebbu2 has joined.
16:31:25 -!- sebbu has quit (Ping timeout: 260 seconds).
16:31:28 -!- sebbu2 has changed nick to sebbu.
16:37:24 -!- FireFly has joined.
16:57:26 -!- werdan7 has quit (Ping timeout: 633 seconds).
17:01:34 -!- deschutron has left (?).
17:06:10 -!- werdan7 has joined.
17:20:12 <AnMaster> How deep snow have you personally seen in "real life"?
17:20:30 <ais523> maybe 5-6 inches in the deepest parts
17:20:48 <AnMaster> ais523, heh. Look at http://omploader.org/vM3YyMw then
17:20:57 <AnMaster> and well, it has started melting now
17:21:09 <ais523> and yes, that's pretty thick
17:21:28 <Gregor> The snow was deeper than that here last year.
17:21:29 <AnMaster> and not compared to how it was before melting...
17:21:49 <AnMaster> Gregor, well as I said it started melting. About a week or two ago
17:22:04 <Gregor> Well, I don't live in the frozen north :P
17:23:24 <AnMaster> wth at one picture from my mobile phone. It is just black in the lower part
17:23:32 <Gregor> I mean, quite simply, that I don't live in the frozen north.
17:23:34 <AnMaster> lik not all image data was captured or something
17:23:45 <Gregor> AnMaster: Perfectly horizontal line?
17:23:52 <AnMaster> Gregor, yes: http://omploader.org/vM3YyNw
17:24:15 <Gregor> Heh, funny, it shows white for me :P
17:24:19 <Gregor> It must truly not have all the image data.
17:24:26 <AnMaster> Gregor, well, it shows black in eog
17:24:44 <AnMaster> was going to make a panorama including that image
17:26:25 <AnMaster> [1189626.022063] googleearth-bin[3782]: segfault at 0 ip (null) sp 00000000fff4cb24 error 14 in googleearth-bin[8048000+49000] <-- argh
17:26:57 <AnMaster> okay, now it is suddenly no longer reproducible
17:27:27 <AnMaster> okay... now it crashes at another point instead
17:27:29 <pikhq> AnMaster: That's it? :P
17:27:45 <ais523> hmm, I was reading an article on making stupidly small executables earlier today
17:27:53 <ais523> and now I recognise that 8048000 straight off
17:28:17 <ais523> AnMaster: the canal here froze over over the winter
17:28:29 <ais523> some people were rather unwisely trying to walk on it, but it could bear their weight
17:28:39 <ais523> also, someone tried to drive a car down it, and it /couldn't/ bear its weight
17:28:48 <ais523> they got quite a way, though
17:30:31 <AnMaster> <ais523> AnMaster: the canal here froze over over the winter <-- is that rare?
17:30:42 <ais523> never known it to happen before
17:30:53 <ais523> at least, it's common for it to get a bit of ice on it
17:30:56 <AnMaster> ais523, well, here we have regular winter roads on the lake
17:30:59 <ais523> but not for it to be able to bear weight
17:31:06 <AnMaster> for cars, some winters even for trucks
17:31:15 <AnMaster> but I think it closed for this season last week or so
17:31:21 <AnMaster> (the one close to here that is)
17:31:21 <ais523> AnMaster: it's so nice talking to scandinavians, they're the only people (apart from possibly russians, some canadians, and eskimos) who don't think the UK is stupidly cold
17:31:36 <AnMaster> ais523, we think it is stupidly rainy
17:31:43 <AnMaster> ais523, also what about Germans?
17:31:57 <ais523> hmm, I rather like it here, but maybe I'm just used to it
17:34:35 <AnMaster> fizzie, measuring that corridor from the pano yesterday in google earth gives it as roughly 60 meters between the nearest doors visible at either end
17:34:49 <ais523> also, I'm disappointed at the fact that someone put an URL shortener at http://to./
17:35:23 <AnMaster> but you can't put a site at it
17:35:27 <ais523> someone bought the A record for a TLD just so they could put an URL shortener there
17:35:40 <ais523> you can add an A record for any domain if you own it
17:35:50 <ais523> and nothing in the spec says you can't
17:36:04 <AnMaster> ais523, well, but is it allowed by policy...
17:36:18 <ais523> well, /someone/ did it
17:36:30 <ais523> and allegedly ICANN's planning to sell brand new TLDs to companies
17:36:39 <fizzie> I'm thinking a TLD owner doesn't have very many constraints as to what they can do with it.
17:38:03 <AnMaster> fizzie, I took a picture at near the end of a 240 meter corridor at the university (length estimated from google earth)
17:38:19 <AnMaster> and didn't really show how long it was
17:38:26 <ais523> there was an MX record for mailto:i@an for a while, IIRC
17:38:27 <fizzie> I wonder how much money Tonga gets from the (ab)use of their .to TLD.
17:38:52 <ais523> fizzie: I seem to remember that when Tuvalu sold .tv, it was a significant amount of money for every member of its population
17:39:00 <ais523> a few hundred thousand dollars or so
17:39:05 <ais523> no wonder they sold it
17:39:22 <ais523> AnMaster: I'm not sure; who really cares, I doubt the original owner of the TLD has much correlation with its use
17:39:30 <fizzie> an. currently seems to have just NS (and the SOA) entries.
17:39:33 <AnMaster> also what domain did they get after?
17:40:14 <fizzie> .an: Netherlands Antilles, previously known as the Netherlands West Indies or Dutch Antilles/West Indies.
17:40:30 <ais523> AnMaster: according to Wikipedia Tuvalu has a population of 12373
17:40:32 <fizzie> There were TLDs with MX records though, I think we dig'd for those not long ago.
17:40:56 <ais523> presumably, with all the money they got from the sale they have no problems buying domains elsewhere if they need them
17:41:24 <AnMaster> ais523, what a pity there are 28 persons more than the ideal!
17:41:41 <ais523> presumably the value changes over time
17:42:22 <fizzie> ai. 14400 IN MX 10 mail.offshore.ai.
17:42:49 <fizzie> So you could get x@ai as a working email address.
17:43:01 <AnMaster> fizzie, xai? is that supposed to mean anything?
17:43:05 <fizzie> Except that there's probably quite a lot of MTAs that would add a site-specific prefix there.
17:43:11 <fizzie> Just "x" as in "arbitrary".
17:43:29 <AnMaster> evil.ai would be a nice domain
17:43:49 <fizzie> .ai is for Anguilla, another one of those tiny specs in the Caribbean.
17:43:52 <AnMaster> but that yuoswhatever would probably prefer good.ai, unless I misremember what his opinion was
17:44:03 <fizzie> "The total land area of the territory is 91 km2 (35 sq mi), with a population of approximately 13,500 (2006 estimate)."
17:45:00 <fizzie> Heh, www.ai: "Anguilla's consumption-based tax system is hospitable to productive firms that create income, profits and wealth. And Anguilla has strict secrecy laws, fresh air, and fantastic beaches."
17:45:20 <fizzie> What a delightfully coy way of saying "we do tax evasion here".
17:45:53 <fizzie> An .ai domain is $100 for 2 years, available to anyone.
17:45:57 <ais523> you could try emailing webmaster@ai and asking if they're offering mail addresses there
17:46:14 <fax> not @something.ai ?
17:46:22 <ais523> what's the address to contact the mail server owner?
17:46:30 <ais523> fax: you can put DNS records in for a TLD if you own it
17:46:42 * AnMaster watches one now slush filled street in google earth's street view
17:46:44 <fax> that is so cool
17:46:49 <AnMaster> it is amazing that it is the same place
17:47:01 <fizzie> And, as was just mentioned, ai. is one of the relatively few ones that has one already.
17:47:06 <ais523> ICANN will truly jump the shark if it ever offers a 0-character TLF
17:47:12 <ais523> which would presumably be http://./
17:47:24 <ais523> and a subdomain would be http://domain../
17:47:28 <AnMaster> ais523, is that even possible?
17:47:33 <fizzie> That one I'm not so sure is legal.
17:47:45 <ais523> (in theory, google.com is google.com. etc but people pretty much always leave off the final dot)
17:48:17 <ais523> (and the "correct" meaning for http://google.com/ is http://google.com.localhost./)
17:48:36 <AnMaster> ais523, no it isn't. It will search in the default search whatever for domains
17:48:52 <AnMaster> from my resolv.conf I think that is "domain lan"
17:49:06 <ais523> well, I was trying to simplify a bit
17:49:16 <ais523> but the idea is that it uses relative-to-local addressing
17:49:21 <ais523> if you miss off the final .
17:49:58 -!- jcp has joined.
17:51:06 <AnMaster> sets a threshold for the number of dots which must appear in a name given to res_query(3) (see resolver(3)) before an initial absolute query will be made. The default for n is 1,
17:51:06 <AnMaster> meaning that if there are any dots in a name, the name will be tried first as an absolute name before any search list elements are appended to it. The value for this option is
17:51:12 <AnMaster> why is it "silently capped to 15"
17:52:23 <ais523> so a.b.c.d.e.f.g.h.i.j.k.com might be self-relative, but a.b.c.d.e.f.g.h.i.j.k.l.com always means a.b.c.d.e.f.g.h.i.j.k.l.com.?
17:53:03 <fizzie> RFC1035 (STD 13) specifies "<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]" for the names, though that's only for "the prudent user" who selects a name that "will result in fewer problems with many applications that use domain names", not exactly a real rule. Some of the later, updating RFCs, could possibly specify a real requirement there.
17:53:47 -!- kar8nga has quit (Read error: Connection reset by peer).
17:54:26 <fizzie> Technically the DNS on-wire format uses (length, data)-style structures for labels, so I guess a zero-length name might actually work.
17:54:29 <ais523> let's put that in the HackEgo quotes files, just to completely mystify anyone who looks back along them in the future
17:54:37 <AnMaster> fizzie, what does that format mean?
17:54:54 <ais523> `addquote <ais523> so a.b.c.d.e.f.g.h.i.j.k.com might be self-relative, but a.b.c.d.e.f.g.h.i.j.k.l.com always means a.b.c.d.e.f.g.h.i.j.k.l.com.?
17:55:06 <HackEgo> 138|<ais523> so a.b.c.d.e.f.g.h.i.j.k.com might be self-relative, but a.b.c.d.e.f.g.h.i.j.k.l.com always means a.b.c.d.e.f.g.h.i.j.k.l.com.?
17:55:12 <AnMaster> fizzie, the one you quoted above
17:55:44 <fizzie> The <label> one? It's for a single component in a domain name. Well, a suggestion for one.
17:56:01 <ais523> you mean, they aren't specified at all?
17:57:00 <ais523> domain name components
17:57:06 <fizzie> ais523: They're specified as a sequence of octets (with a maximum length restriction) in the original standard. But a later document might add more rules.
17:57:12 <AnMaster> `addquote <ais523> let's put that in the HackEgo quotes files, just to completely mystify anyone who looks back along them in the future
17:57:14 <HackEgo> 139|<ais523> let's put that in the HackEgo quotes files, just to completely mystify anyone who looks back along them in the future
17:57:29 <ais523> AnMaster: I'm not sure if that makes that even more mystifying or not
17:57:32 <fizzie> ais523: The justification there is that DNS supposed to be able to accommodate all kinds of legacy naming schemes.
17:57:48 <ais523> "sequence of octets", you could have /so/ much fun with that if you could somehow slip it past ICANN
17:58:10 <ais523> buy the TLD consisting of three NUL characters!
17:58:37 <ais523> anyway, I should go home
17:58:40 -!- ais523 has quit (Remote host closed the connection).
17:58:43 <fizzie> "The DNS specifications attempt to be as general as possible in the rules for constructing domain names. The idea is that the name of any existing object can be expressed as a domain name with minimal changes."
17:59:57 <AnMaster> <ais523> "sequence of octets", you could have /so/ much fun with that if you could somehow slip it past ICANN <-- indeed
18:00:31 <fizzie> Hmm, the actual standard document that grew out of the RFC says: "One label is reserved, and that is the null (i.e., zero length) label used for the root." That might imply that you don't get to use the null label as a component of a domain name elsewhere.
18:01:20 <fizzie> Indeed: "Internally, programs that manipulate domain names should represent them as sequences of labels, where each label is a length octet followed by an octet string. Because all domain names end at the root, which has a null string for a label, these internal representations can use a length byte of zero to terminate a domain name."
18:01:48 <fizzie> But the three-NUL name should be just fine and dandy.
18:02:00 <fizzie> Users might have some trouble typing that in a browser, though.
18:02:17 -!- amca has quit (Quit: Farewell).
18:03:06 <AnMaster> <fizzie> But the three-NUL name should be just fine and dandy. <-- ?
18:03:56 <fizzie> The one that ais523 suggested up there.
18:04:22 -!- lereah_ has quit (Remote host closed the connection).
18:04:39 <AnMaster> fizzie, does any program actually represent it like that I wonder
18:04:50 <AnMaster> except perhaps dig, bind and a few apps like that
18:06:40 <fizzie> I guess regular strings (with dots in it) are more likely.
18:07:07 <fizzie> Technically speaking you should be able to embed dots in the name; I wonder if dig & friends has some escape sequences for that.
18:13:21 -!- MigoMipo has quit (Remote host closed the connection).
18:23:43 -!- BeholdMyGlory_ has joined.
18:24:09 -!- BeholdMyGlory_ has quit (Changing host).
18:24:09 -!- BeholdMyGlory_ has joined.
18:25:18 -!- BeholdMyGlory_ has changed nick to BeholdMyGlory.
18:29:51 <AnMaster> fizzie, btw that blurry image from the ~270 m corridor: http://omploader.org/vM3YydA
18:30:13 <AnMaster> fizzie, but there were people around, so best photo I could get
18:31:38 <fizzie> You could try the "put the camera on tripod, take a metric bazillion of pictures, align them very well, take the median value of each pixel" trick to get a completely non-peopled version. Though someone might wonder what you're doing there.
18:34:25 <fizzie> The main building here has one ~150 m corridor, but there's an I-think-it's-always-closed door right there in the middle where it changes from "old side" to "new side".
18:34:47 <fizzie> (That ~150 m is very approximative, I don't have g-earth installed and maps.google doesn't have a nice measurement tool.)
18:34:57 <AnMaster> so how to people walk between those parts?
18:35:24 <fizzie> I mean, it's not closed-as-in-locked, just closed-as-in-it-doesn't-stay-open-but-closes-automatically-when-you-let-go.
18:36:12 <AnMaster> fizzie, iirc this 240 meters one is all open usually
18:36:18 <AnMaster> there are doors that can be closed along it
18:36:34 <AnMaster> iirc with those electromagnet thingies for auto closing in case of fire
18:38:11 <fizzie> Actually it seems to be pretty much exactly 150 m; the muncipal "map service" site (http://kartat.espoo.fi/) has a measure-distances tool.
18:38:43 -!- tombom has joined.
18:42:17 <fizzie> There's this "tube" (a glass-walled bridge on second-floor-height) between the Computer Science building and the "TUAS" building (industrial engineering and management, automation and systems technology); if you cheat a bit and count that as a part of the same "corridor", it's a bit over 200 m, I think.
18:44:58 <AnMaster> fizzie, I only counted the actual corridor
18:45:26 <AnMaster> which ends at a door at one end of the building, but at the other end ends in a restaurant and a door to side of the building
18:45:37 <AnMaster> if I counted the entire building it would be over 300 meters
18:45:55 <AnMaster> (aprox, I don't have google earth open any longer)
18:49:41 <AnMaster> gimp's* l10n to Swedish save dialog for tif
18:49:59 <AnMaster> "deflate" has been translated to "packa ihop" (lit: "pack together")
18:50:21 <AnMaster> which means I was only able to find it thanks to remember the position in the list of compression algorithms
18:59:32 -!- kar8nga has joined.
19:10:44 <Gregor> SyntaxError: invalid syntax
19:11:46 <Gregor> (That caret points at the :, lest that was unclear)
19:20:47 <uorygl> `translate syns det suger å sortere i MSN/Gtalk/Facebook kontakter!
19:20:59 <HackEgo> think it sucks to sort in MSN / Gtalk / Facebook contacts!
19:28:25 <AnMaster> Gregor, actually the image I have data might be enough even though one image is corrupt
19:29:01 <AnMaster> fizzie, I wonder, rectilinear looks best, but the image data covers too much for that...
19:29:20 <AnMaster> I want it to look rectilinear near the middle
19:29:36 <AnMaster> without being so awkward towards the edges
19:31:28 -!- nooga has joined.
19:32:16 <fizzie> I don't really know. You could try to use some sort of external panorama-viewer thing to look at it if you like the rectilinear look.
19:32:48 <AnMaster> fizzie, well, sure, but I want more data towards the edges :/
19:33:59 <AnMaster> also, argh, I want wb from one image, and exposure from another
19:34:24 -!- sebbu has quit (Ping timeout: 240 seconds).
19:37:24 -!- tombom_ has joined.
19:40:09 -!- songhead95 has joined.
19:40:58 -!- tombom has quit (Ping timeout: 248 seconds).
19:48:33 -!- songhead95 has quit (Quit: songhead95).
19:49:56 -!- songhead95 has joined.
19:51:15 -!- dbc has quit (Quit: Seeeeeya).
19:51:32 -!- songhead95 has left (?).
19:54:18 <AnMaster> fizzie, ah found a way: rectilinear with a different center of image
19:54:41 <AnMaster> that yields an interesting result. Somewhat like perspective correction.
20:05:20 <augur> AnMaster: rectilinear huh
20:06:58 -!- tombom has joined.
20:09:03 -!- tombom_ has quit (Ping timeout: 276 seconds).
20:17:34 <AnMaster> augur, it is a photographic projectioj
20:17:43 <augur> oh i'm sure it is 8D
20:18:28 <AnMaster> augur, for "wide" panoramas you usually use equirectangular or cylindrical or such
20:18:38 <AnMaster> rectilinear is closer to a normal "not to wide" lens
20:18:56 <AnMaster> ("not to wide" here is to exclude fish eye lenses)
20:20:33 -!- tombom has quit (Ping timeout: 240 seconds).
20:21:06 <AnMaster> augur, to best learn what they mean: install hugin (panorama tool) and add some image with lens data in the exif, then play around with the result in of various projections and various angles in the preview window (use the opengl preview window, rather than slow/more-precise preview, otherwise you won't see the updates in real time)
20:21:42 <AnMaster> you can do perspective correction to look at an image from a different direction (assuming you have data for enough of the image)
20:21:51 <AnMaster> of course, that is still from the same point
20:22:17 <AnMaster> but like you had rotated the camera in the same spot
20:22:35 <AnMaster> you can use it for creating 3D models from if you want to do that
20:23:08 <AnMaster> (note, for that you really need to do it on buildings or such, rather than a nature picture)
20:23:57 <AnMaster> fizzie, have you tried that btw?
20:25:07 <fizzie> I've done perspective correction; I haven't tried to model a building out of it, though.
20:25:22 <AnMaster> fizzie, there is a tutorial for it on the hugin website
20:26:14 <AnMaster> fizzie, but what I meant was fun is dragging with the drag tool a rectilinear view of a wide stitch (say, 100-120 degrees wide)
20:26:35 <AnMaster> only drag it horisontally (hold down shift to force cardinal directions)
20:26:44 <AnMaster> the drag tool is near the top of the gl preview window
20:27:47 <AnMaster> fizzie, note: something like towards the corner of a room with a bit of the ceiling in the picture works very well for seeing the effect
20:30:57 <fizzie> It looks a bit like one web-based panorama-viewer, which (I think) had their fov set to something that doesn't really match what a typical computer monitor is. (If you set the preview window fov to the angle that the window itself covers in your vision, theoretically dragging the center around should match the "looking to a different direction" thing pretty well.)
20:33:10 <AnMaster> some data is gone on the right side due to image data being truncated in that file, otherwise the table would have been more complete. The weird thing between the middle windows is *not* a stitching error
20:34:13 <AnMaster> <fizzie> It looks a bit like one web-based panorama-viewer, which (I think) had their fov set to something that doesn't really match what a typical computer monitor is. (If you set the preview window fov to the angle that the window itself covers in your vision, theoretically dragging the center around should match the "looking to a different direction" thing pretty well. <-- yep, it did, well, I had
20:34:14 <AnMaster> it wider, but this monitor is a large wide screen, so it wasn't too noticeable except at extreme angles
20:34:21 <AnMaster> shouldn't have quoted it all -_-
20:37:22 <AnMaster> fizzie, btw, the house with the long corridor panorama from yesterday is the one you can see through the windows with the weird ^ kind of shape on top
20:37:46 <AnMaster> (the ^ thing is a glassed over section, really should take some images of that some day, it looks cool from inside)
20:38:10 <AnMaster> mind you, it isn't actually ^ but /| but we look at it from an angle where it looks more like /\ indeed
20:39:57 <AnMaster> fizzie, so what did you think about that panorama?
20:41:11 <fizzie> That you might have chosen a more interesting-looking place to photograph. :p
20:42:00 <AnMaster> fizzie, will try to do so next time, I was bored though
20:42:17 <AnMaster> Deewiant, really? Didn't you say just a few weeks ago that you didn't ever get far into it?
20:42:49 <Deewiant> My first game where I got as far as sokoban without save scumming; and yes, I ascended just a short while ago.
20:42:49 <AnMaster> in my experience you need a lot of practise between those two states!
20:43:17 <fizzie> Deewiant: About NetHack: shopkeepers can't tell identical twins apart. oh! horror! oh! horror! oh! any horror but this! (marmion, by g. k....)
20:43:53 <Deewiant> I have a ttyrec (if it worked) at http://tar.us.to:7654/best-nethack-run-20100312.ttyrec.bz2
20:44:17 <AnMaster> Deewiant, link to a player for that?
20:44:33 <Deewiant> ? I didn't play on any server, just locally
20:44:46 <AnMaster> Deewiant, err, I mean, how do I play it. pacman -S what
20:44:57 <lament> it's called 'ascended', not completed
20:45:01 <AnMaster> Deewiant, how did you record it then?
20:45:10 <Deewiant> AnMaster: With termrec, which is only a recorder
20:45:14 <AnMaster> I need a tool to view the ttyrec
20:45:17 <Deewiant> http://en.wikipedia.org/wiki/Ttyrec links to a few players
20:45:36 <Deewiant> lament: I figured if I said "I ascended" it wouldn't be clear enough.
20:46:43 <AnMaster> ah *installs on laptop... ubuntu/debian has almost everything in repos*
20:47:21 <Deewiant> 1 8484990 deewiant-Wiz-Hum-Mal-Neu ascended to demigod-hood. 276 [324]
20:48:10 <lament> how far you got multiplied by how much you suck
20:48:28 <AnMaster> Deewiant, how long did it take in wall clock
20:48:35 <AnMaster> Deewiant, the score is complex
20:48:44 <Deewiant> AnMaster: Well, since 2010-03-12
20:48:50 <AnMaster> lament, you can easily wrap around in a long running game
20:49:05 <AnMaster> and well... I have done farming once. That's enough
20:49:10 <lament> AnMaster: that's not true.
20:49:20 <AnMaster> it was interesting to try out, but very boring
20:49:36 <AnMaster> lament, it has happened to me in a non-farming game
20:49:52 <lament> I can't imagine it. I don't believe you.
20:49:54 <AnMaster> lament, however I did get level 30, and I had a heck of a lot of gemstones with me up
20:50:03 -!- kar8nga has quit (Remote host closed the connection).
20:50:15 <AnMaster> polymorphed lots and lots and lots and lots of rocks iirc
20:50:32 <AnMaster> was some time ago I played nethack
20:50:34 <lament> wrapping the score around is actually fairly difficult
20:50:41 <lament> you certainly can't do it accidentally
20:50:43 -!- Wareya has quit (Ping timeout: 246 seconds).
20:50:48 <lament> and in general without scripts
20:51:07 <AnMaster> lament, I managed however. That was a very long running game though, a few months iirc
20:51:26 <lament> unless you're DeathOnAStick??
20:51:56 <lament> well i don't believe you then.
20:51:58 <Deewiant> lament: http://dpaste.com/173073/
20:52:04 <Gregor> .us.to is a weird domain name.
20:52:43 -!- Wareya has joined.
20:52:50 <AnMaster> Deewiant, some things that raises scores: gemstones and artifacts in your inventory (or nested in bags/sacks) when you ascend.
20:53:01 <AnMaster> Deewiant, then there are various other things I forgot
20:53:24 <Deewiant> I didn't have stuff with me, left a crapton in a chest in Sokoban though.
20:53:43 <AnMaster> Deewiant, you should have taken artifacts and gemstones with you
20:54:17 <AnMaster> amulets really aren't worth it for the points compared to the "high end" gemstones
20:54:19 <Deewiant> It turns out that carrying a few dozen spellbooks with you, even in a bag of holding, is enough to make carrying anything else difficult
20:54:31 <AnMaster> Deewiant, why did you need the spellbooks?
20:54:34 <Deewiant> I wasn't going for points at all, just survivability
20:54:46 <Deewiant> In case I forget important spells, of course.
20:55:12 -!- nooga has quit (Ping timeout: 276 seconds).
20:55:23 <AnMaster> Deewiant, well, then I'm impressed. I always found wiz hard to ascend with, compared to val for example
20:55:37 <AnMaster> (not as hard as bar or tou though)
20:55:46 <AnMaster> (the former of which I never managed)
20:55:51 <Deewiant> I found it really easy for the most part, actually
20:55:56 <AnMaster> (and the latter which I *almost* managed)
20:56:05 <Deewiant> In particular the ascension run was much easier than I expected
20:56:11 <Deewiant> AnMaster: 2010-03-17 21:46:57 ( Deewiant) 1 8484990 deewiant-Wiz-Hum-Mal-Neu ascended to demigod-hood. 276 [324]
20:57:05 <lament> AnMaster: the highest score is 2147483647
20:57:14 <AnMaster> lament, in that game where I did wrap the score, my plan was to get as high score as possible. But I wasn't aware at that point yet that it *could* wrap
20:57:29 <AnMaster> so that was a nasty shock to say the least
20:57:33 <lament> the score you get for each dilithium crystal when ascending is 4500
20:57:51 <AnMaster> lament, yep, artifacts give you way more iirc
20:57:58 <lament> still very, very little
20:58:09 -!- EgoBot has quit (Ping timeout: 252 seconds).
20:58:12 -!- EgoBot has joined.
20:58:19 <AnMaster> still, if you can get some dilithium crystals in nested bags of holding...
20:58:29 <AnMaster> (of course you need sacks in between)
20:58:43 <lament> yep you only need 477218 crystals
20:58:52 <lament> basically there's no way you're right
20:58:54 <AnMaster> lament, I didn't say it was *all* due to crystals
20:59:00 <lament> either you're lying or mistaken
20:59:55 <lament> some score comes from killing monsters, wizard of yendor is 3153
20:59:58 <fizzie> You only need to kill Demogorgon 656924 times to get a score-wraparound.
21:00:02 <lament> times two if you ascend
21:00:09 <AnMaster> lament, neither. I was doing a extinctionism run
21:00:17 <AnMaster> lament, which meant I had to kill lots of monsters
21:00:30 <AnMaster> I think I managed all but the xan, which I sadly forgot about
21:00:52 <AnMaster> lament, alas I can't show you this, since I can't play on nao due to bad lag
21:01:06 <Deewiant> ipbt appears to play the ttyrec fine
21:01:12 <AnMaster> if it had reasonable delay I would play on it
21:01:13 <Deewiant> If anybody's still wondering about that
21:01:15 <lament> that's a lot of monsters, about a million
21:01:28 <lament> or rather much more than a million since most of them are low XP
21:01:41 <lament> i still don't believe you, lots of people play extinctionist and none of them wrap around the score
21:01:55 <AnMaster> lament, well sure, but you can manage it if you do try to aim for highest possible score without being aware of that it can wrap
21:02:38 <Deewiant> AnMaster: I hope it can do some kind of time compression, there's a few AFK sessions there
21:03:03 <AnMaster> Deewiant, well yes, you can press a key to advance to the next typed char
21:03:03 <lament> AnMaster: you would have to have killed all the monsters many times over
21:03:14 <lament> AnMaster: since they were all extinct, what was it you were killing?
21:04:39 <AnMaster> lament, as I said, it wasn't all from monsters. It was a combination of a) monster killing b) a major portion of the artifacts (yay for bone files!) c) some crystals.
21:04:53 <AnMaster> but I did do death farming near the end
21:05:16 <lament> scripted death farming?
21:05:27 <Deewiant> AnMaster: It's 154027 frames: 43 hours if one second each
21:05:29 <AnMaster> lament, spent weeks at it I think XD
21:06:16 <AnMaster> lament, or around 1-2 week(s) from when I started death farming to that I ended. I did sleep in between, but since it was summer holidays I spent a lot of the days at it
21:06:26 <lament> that must've been the bulk of your xp i think
21:06:33 <AnMaster> it was about 2 years ago, so I might misremember some details
21:06:51 <AnMaster> but I do know I was very pissed of at finding out that it wrapped
21:07:16 <AnMaster> lament, it didn't wrap without the help of inventory items. so it ended up really low
21:07:18 <Deewiant> There's presumably a score-showing option/patch you could've used
21:07:24 <AnMaster> I think something like 5000-6000 or so
21:07:32 <Deewiant> Of course it still would've wrapped but you may've found out earlier
21:08:04 <lament> AnMaster: you overestimate the contribution of artifacts, they score very little
21:08:04 <AnMaster> Deewiant, I don't think, if it only wrapped due to inventory items
21:08:29 <Deewiant> AnMaster: Assuming it doesn't take that into account, yes
21:08:37 <lament> AnMaster: the contribution of artifacts is only about 50K max
21:08:45 <AnMaster> lament, book of dead is worth 25000
21:09:00 <Deewiant> http://nethack.wikia.com/wiki/Score
21:09:05 <lament> AnMaster: ok a bit more
21:09:12 <AnMaster> lament, and yes. I just pointed out that without me having the book of the dead with me (pretty sure I did), it wouldn't have wrapped
21:09:23 <AnMaster> since the final score was somewhere in the range 5000-6000
21:09:38 <Deewiant> Isn't it signed, if the max is 2147483647?
21:10:05 <AnMaster> Deewiant, I have not seen a negative score though as far as I can remember
21:10:35 <lament> someone on NAO has a -2,147,474,899 ascension
21:10:43 -!- nooga has joined.
21:11:20 <AnMaster> lament, hm, then I guess I calculated as if it was unsigned
21:11:28 <AnMaster> lament, and it would have ended up negative without the artifacts
21:12:59 <lament> you're absolutely nuts
21:14:19 <lament> hm, nobody on NAO has an ascension with a score of exactly 0
21:21:46 -!- dbc has joined.
21:21:50 -!- dbc has left (?).
21:24:48 -!- nooga has quit (Quit: Lost terminal).
21:25:19 <Deewiant> AnMaster: If you just want the highlights of the game, I recommend frame 130669 and thereon
21:31:00 <AnMaster> Deewiant, no idea how to jump to there
21:31:13 <AnMaster> at lest this tool doesn't provide that
21:32:12 <Deewiant> Then you'll spend a long time watching it :-P
21:33:22 -!- Hohoo has joined.
21:34:43 <Deewiant> Anyway, that'd be the bit where I shoot myself with a finger of death since I accidentally pressed . instead of 3 on the numpad
21:35:42 <Hohoo> Hello... I got this idea for a little brainfuck derivative: http://paste.pocoo.org/show/190908/
21:36:19 <Deewiant> lament: It was my only death, too; messed up my conduct
21:39:22 <Hohoo> That's a Python script that converts brainfuck into that confusing "brand-new" language. Try it and see.
21:40:40 -!- sebbu has joined.
21:42:16 <fax> Hohoo: i can't understand this program it's too complicated
21:42:52 <Hohoo> fax: Hello world would look like this: http://paste.pocoo.org/show/190915/
21:43:04 <fax> what about brainfuck comments?
21:43:10 <fax> if they go through this program?
21:43:54 <lament> i have another brainfuck derivative
21:44:00 <lament> instead of "[" you write "Eat shit"
21:44:07 <lament> instead of "]", "Go fuck yourself"
21:44:15 <lament> instead of ">", "I fucked your mother last night"
21:44:26 <fax> finish what you start lament
21:47:01 <fizzie> Hey, since it's marginally esolang-related, I might mention this here; I wrote a trivial (<350 lines) Perl script that converts a Brainfuck source into a (rather unoptimized; just run-length-coding and [-] special-case) LLVM assembly file, and optionally pushes that through the llvm-as + llc + as + gcc pipe so that a native executable comes out.
21:47:05 <fizzie> I don't suppose it's any better in any way than an even more trivial Brainfuck→C conversion, but I just wanted to do some sort of trivial test of LLVM.
21:47:30 <fax> that's cool
21:47:54 <Deewiant> 350 seems a bit long for something like that :-P
21:47:56 * Sgeo_ is using his home IRC client from school >>
21:50:16 <lament> fax: http://paste.pocoo.org/show/190921/
21:50:36 <lament> Hohoo: http://paste.pocoo.org/show/190921/
21:51:01 <fax> interesting thing about these languages is they change quines
21:51:05 <fizzie> Deewiant: Well, you do have to squizzle the loop structure into a list of basic blocks with predecessor information, in order to add the proper phi instructions in there. And there's a 50-line POD documentation block; and some other assorted bookkeeping since the LLVM asm is a SSA form, so you can't exactly just do "p++", you have to give p a new name.
21:51:19 <fax> Hohoo, can you make a quine transputer?
21:51:37 <Deewiant> fizzie: Oh, if you're doing phis directly then that's a bit trickier, yes.
21:51:51 <fizzie> Deewiant: You mean there's some other way too?-)
21:51:55 <Deewiant> fizzie: You could just store the index in memory and store there; the optimizer will change it to phis.
21:52:48 <fizzie> Deewiant: Well, right, I guess so; I just didn't want to generate *completely* brainless .ll assembly. Not that it's still not silly.
21:53:07 <Deewiant> It's not brainless, it's what just about any compiler will do :-P
21:53:09 -!- charlls has joined.
21:53:18 <Deewiant> Which is why the optimizers are good at getting rid of it ;-)
21:55:14 <pikhq> fizzie: How good is the resulting output?
21:55:38 <fizzie> Deewiant: Currently there's an "interesting"-looking "%bXoutmem = bitcast i8* %bXY" (where X is block index and Y is the last mem-ptr value from that block) at the end of each block, since I wanted to be able to just say "%bXinmem = phi i8* [ %bYoutmem, %BlockY ], ..." in the beginning of each block to get the initial memory pointer value.
21:56:30 <fizzie> pikhq: Can't really say, I don't have any sensible brainfuck benchmarks. The x86-64 assembly for hello-world looked a bit messier than what I'd have liked, though.
21:56:44 <fizzie> Deewiant: Right, since just "%foo = %bar" is apparently not allowed. :p
21:57:02 <Deewiant> fizzie: Well, it's SSA, there's no point in just renaming something :-P
21:57:59 <fizzie> Deewiant: Right, I obviously meant "%bXoutmem = bitcast i8* %bXY to i8*" there, but you did guess the identitytity of it.
21:58:35 -!- jcp has quit (Read error: Connection reset by peer).
22:00:22 <pikhq> fizzie: Make one up? :P
22:00:28 <Deewiant> fizzie: I'm not sure but I think %bXoutmem = getelementptr i8* %bXY would work as well
22:01:02 <Deewiant> The grammar allows for zero indices but that doesn't mean the implementation does :-P
22:01:05 <fizzie> Deewiant: Possibly. Or a ptrtoint i64 + inttoptr pair for extra nonsensity.
22:01:32 <Deewiant> fizzie: I was thinking just in terms of compressing it
22:02:03 <Deewiant> Of course you could do "%bXoutmem = select i1 true, i8* %bXY, i8* undef" or whatever if you like :-P
22:02:32 <fizzie> Deewiant: Actually I had that in there first (except the %bXY also on the false side) before the identity-bitcast. :p
22:02:43 <fizzie> Deewiant: I already ptrtoint the memory pointer to an i64 value for (sequences of) < and > instructions, because a random googling page said that's the way you're supposed to do pointer arithmancy on LLVM.
22:03:01 <Deewiant> getelementptr is preferable IMO
22:04:04 <Sgeo_> Is LogMeIn considered reputable?
22:04:22 <fizzie> Deewiant: Yes, I guess I should've done that; if I getelementptr with a single index, do I get just a fixed offset of the original %ptr back?
22:04:22 <Sgeo_> [If not, I'm kind of screwed]
22:05:18 <Deewiant> fizzie: I think you need to have it be a pointer to a struct or array for that to work, actually.
22:05:45 <Deewiant> So it may not be available to you unless you've got a [30000 x i8] backing it.
22:06:42 <fizzie> Deewiant: Hmn; I'm keeping a "raw" pointer around that I decrement/increment; I guess I would need to somehow type-cast that thing backwards if I used getelementptr to modify the offset.
22:07:10 <Sgeo_> The Java applet is kind of wonky
22:07:32 <Deewiant> fizzie: getelementptr gives you a result of the element pointer type.
22:07:54 <fizzie> Deewiant: Right, but can I then use that in successive getelementptr instructions to move the pointer around?
22:07:55 <Deewiant> So if you keep it around as a pointer to the array, it may be easier. Or then not.
22:08:07 <fizzie> Deewiant: Maybe I should just use a i32 offset modified by <> and getelementptr (instead of a raw load/store) for +-,.[] memory-access, and trust the optimizer to make it, well, optimal. Oh, well.
22:08:09 <Deewiant> fizzie: No, because then you've got an i8*. :-P
22:08:23 <Sgeo_> Grr, why does it think "Ctrl-A" means "Close out of Chrome"?
22:08:23 <Deewiant> And you can't gep unless it's a pointer-to-aggregate
22:08:52 <fizzie> The generated code doesn't seem to optimize "store"s over "call @putchar", for example; I guess it can't really figure out that's safe since the memory pointer comes in as an argument to the brainfuck code function, and putchar() might well depend on that. Maybe some sort of attribute there somewhere might help.
22:09:06 -!- Hohoo has quit (Ping timeout: 252 seconds).
22:10:47 <fizzie> Oh, and it does all the on-tape calculations too, presumably because it can't know the tape starts out as zeroes. Heh.
22:11:19 <Deewiant> If you made it a "[30000 x i8] zeroinitializer" it would ;-)
22:15:48 <fizzie> I guess I should try out a function-internal tape, in fact.
22:17:50 <AnMaster> <Deewiant> Identity bitcast? >_< <-- wonderful!
22:18:14 <Deewiant> Bored of watching the game yet?
22:19:37 <AnMaster> <Sgeo_> Is LogMeIn considered reputable? <-- wth is it, I never heard of it. And why are you using it.
22:20:52 <AnMaster> Deewiant, I'm reading internet oracle atm
22:21:01 <AnMaster> Deewiant, since I can't jump forward it seems
22:21:29 <Deewiant> I recommended ipbt, which has a sufficiently nice amount of functionality
22:22:02 <AnMaster> Deewiant, not in ubuntu or arch repos...
22:22:46 <Sgeo_> Going to disconnect from it for now. LogMeIn without Java or ActiveX or the Firefox plugin is maddening. I can use the Java thign on this computer, but it's a pain.
22:23:06 <Deewiant> s/recommended/recommend/... although that works either way I guess
22:23:13 <Sgeo_> Lets me control my computer from elsewhere.
22:24:32 <Sgeo_> Disconnecting for now. Later, in class, I should be able to use the ActiveX control.
22:24:41 <Gregor> So, it's like ssh, except lame and terrible because it's for Windows.
22:27:29 -!- kar8nga has joined.
22:39:09 <fizzie> Deewiant: So, uh... if I start to refer to my memory block using an actual value of type [30000 x i8] (initialized as "zeroinitializer"), how can I actually operate on it? extractvalue/insertvalue can only work on constant indices, and the only way I can see to get a pointer to a stack-allocated value is to take it from alloc; but in that case I just get a i8* that's not necessarily initialized, and I don't see a particularly simple way of telling LLVM I want t
22:39:09 <fizzie> o zero it, except with a loop that explicitly stores a 0 in each cell (which is what I had in my generated main() for standalone apps).
22:40:04 <Deewiant> fizzie: If you have a global [30000 x i8] zeroinitializer, that value is a [30000 x i8]*
22:40:29 <fizzie> But I don't want a global, putchar and such could depend on that. I want a strictly function-internal thing.
22:40:38 <fizzie> Deewiant: Also, if I read things right, a "%x = getelementptr i8* %y, i32 1" in fact does give me i8*:%x that points to one byte after %y.
22:40:55 <Deewiant> If you mark it "internal", putchar won't depend on it. :-P
22:41:24 <Deewiant> fizzie: Maybe; I think that you need to give it a pointer to an aggregate, but I might be wrong.
22:41:39 <Deewiant> Or do you have some kind of putchar of your own defined there?
22:42:37 <fizzie> My tape-zeroing loop in main() did %mem = alloca $opt{cell}, i32 30000 and then later "%p = getelementptr i8* %mem, i32 %i" and "store i8 0, $i8* %p" and it compiled without problems.
22:43:06 <Deewiant> fizzie: For function-locality I guess you could do: x = alloca [i8 x 30000] store x, [i8 x 30000] zeroinitializer
22:43:16 <Deewiant> If that works, that's nice. :-)
22:43:19 <fizzie> "The first argument is always a pointer, and forms the basis of the calculation. -- The first index always indexes the pointer value given as the first argument, the second index indexes a value of the type pointed to (not necessarily the value directly pointed to, since the first index can be non-zero), etc."
22:43:43 <fizzie> %x = alloca [i8 x 30000] gives the type i8* to %x.
22:43:49 <fizzie> Away for a moment now.
22:43:57 <Sgeo_> Would a VNC bypass the fact that I can't open ports?
22:44:15 <fizzie> Deewiant: You allocate a single element of [i8 x 30000] instead of 30000 elements of i8, right. Didn't see that.
22:44:28 <fizzie> Deewiant: Yes, I guess that sort of stuff could work. Will have to try later on.
22:46:26 <Sgeo_> Deewiant, was that to me?
22:46:47 <Deewiant> I don't know the answer to your question.
22:47:45 <Sgeo_> With a plugin installed, it seems very smooth
22:47:57 <fizzie> Deewiant: I think I'll try out: %tape = alloca [i8 x 30000]; %memptr = getelementptr [i8 x 30000]* %tape, i32 0, i32 0; ... and then my existing style of keeping around a raw pointer, except that I do p++ as %newptr = getelementptr i8* %oldptr, i32 1 and so on.
22:48:17 -!- tombom has joined.
22:49:28 -!- Oranjer has joined.
22:53:03 -!- sebbu2 has joined.
22:53:37 -!- sebbu has quit (Ping timeout: 260 seconds).
22:53:37 -!- sebbu2 has changed nick to sebbu.
22:56:01 -!- kar8nga has quit (Remote host closed the connection).
22:58:07 <fizzie> Deewiant: Heh, I did http://pastebin.com/NJRPq53G and now "llc -O3 -f -o hello.s hello.bc" took 1 minute 14 seconds of 100 % CPU-use time to finish. :p
22:59:14 -!- Sgeo_ has quit (Read error: Connection reset by peer).
22:59:19 <fizzie> Deewiant: Also "wc -l hello.s" => 30193; it contains: "movb $0, 29999(%rsp); movb $0, 29998(%rsp); movb $0, 29997(%rsp); ...".
23:00:27 <Deewiant> fizzie: Which is why making it a constant might be a better idea ;-)
23:01:19 <fizzie> Deewiant: I was hoping to get just a sequence of putchar() calls with constant-folded arguments, since the control-flow's so very simple here.
23:03:33 -!- lament has quit (Ping timeout: 240 seconds).
23:03:57 <fizzie> Deewiant: I think the existing optimizing Brainfuck compilers turn hello.bf into puts("Hello World!"). I mean, there's a single loop with a fixed iteration count (that should be at least theoretically speaking possible to see) you'd only need to unroll, and then it'd be a small matter of combining some additions into constant values.
23:04:53 <fizzie> Deewiant: What, me? Am I supposed to do something here? Isn't LLVM supposed to do everything for me.
23:04:55 <Deewiant> fizzie: That's "how did", not "how would"
23:05:05 -!- lament has joined.
23:05:09 <Deewiant> fizzie: Yes, but what optimizer flags did you use :-P
23:05:32 <Deewiant> Or full command lines; whatever
23:05:42 <fizzie> Deewiant: I don't know anything about that stuff; to be honest, I haven't found the documentation very impressive. I just ran the llc command there; I don't think llvm-as has very many flags.
23:05:59 <Deewiant> Right, I figured you might've done that; that's tantamount to no optimization at all
23:06:04 <Deewiant> "opt" is the tool you want to use
23:06:17 <Deewiant> The llc optimizations are only machine-specific stuff like register allocation and instruction scheduling
23:06:35 <fizzie> Oh-kay. That sounds a lot better.
23:06:39 <Deewiant> fizzie: llvm-as < foo.ll | opt -std-compile-opts -std-link-opts | llc -O3 > foo.s
23:07:08 <Deewiant> llvm-as < foo.ll | opt -std-compile-opts -std-link-opts | llvm-dis to see what it actually did
23:08:39 -!- BeholdMyGlory has quit (Remote host closed the connection).
23:12:56 <fizzie> It still doesn't seem to be doing very much, actually. Though at least it can turn the meaty part of [>+++++++>++++++++++>+++>+<<<<-] into: addb $7, 9(%rsp); addb $10, 10(%rsp); addb $3, 11(%rsp); incb 12(%rsp); so it's not completely confused by my pointer math.
23:14:34 <fizzie> But it still includes those 30k stores of zero into rsp, even though it only uses fixed-K references of style K(%rsp) for some very low values of K and never actually alters %rsp in the function at all (except an addq $30008, %rsp in the end).
23:15:08 <Deewiant> If your array is local it has to zero it somehow
23:15:36 <fizzie> Why does it need to zero those parts that are never referred to?-)
23:16:50 <fizzie> That's like claiming that if I do "a = 42; a = 10;" it needs to set a to 42 first "because I asked to".
23:17:06 <Deewiant> Not really, that's a bit different
23:17:28 -!- Phantom_Hoover has joined.
23:18:08 <fizzie> Deewiant: Okay, so claiming that if I do "int a[2] = {42, 6669}; return a[0];" it needs to set a[1] to 6669 first "because I asked to".
23:18:14 <Phantom_Hoover> Is it worth it to implement a tape-based language with a potentially very long tape?
23:19:37 <fizzie> Deewiant: Right, well, GCC doesn't do that (if I tell it to optimize, anyway). :p
23:20:49 <fizzie> (Unoptimized it does "movl $42, -16(%rbp); movl $6669, -12(%rbp); movl -16(%rbp), %eax;" -- with -O2 it's just "movl $42, %eax".)
23:20:57 <fizzie> Admittedly my case is a little more complicated.
23:21:43 <fizzie> I'm a bit surprised at that assembly output, though I might be using it wrong. It does things like:
23:22:14 <Deewiant> fizzie: This is interesting: with an array of size 128 LLVM optimizes all manner of whatnot but with 129 it doesn't.
23:22:17 -!- charlls has quit (Quit: Saliendo).
23:23:01 <fizzie> I guess the store is a single piece of bitcode and it can't break it up, but on the other hand it doesn't even seem to realize that 8(%rsp) is zero anyway there.
23:24:35 <Deewiant> fizzie: I'm doing that store [128 x i8] zeroinitializer business and it's optimizing a load from the first index into the constant zero, but with array size 129 it doesn't.
23:25:02 <Deewiant> (Or anything else bigger than 128)
23:25:43 <fizzie> That actual [>+++++++>++++++++++>+++>+<<<<-] loop turns into a reasonably sensible bit of assembly, though. http://pastebin.com/YabDwrDG -- though even there I do have to wonder about that looping condition.
23:30:41 <Deewiant> fizzie: clang appears to codegen array initializations as assigning each element separately; that'll likely work better for you too
23:31:20 <fizzie> The loop is especially interesting since it's so clever; in the original LLVM code the loop is: %v1 = load i8* %mem; %v2 = sub i8 %v1, 1; store i8 %v2, i8* %mem; %termc = icmp ne i8 %v2, 0; br i1 %termc, label %Block1, label %Block2;
23:32:05 <Deewiant> LLVM does crazy stuff with "simple" numeric loops
23:32:28 <pikhq> That's rather clever.
23:32:30 <fizzie> So it compares the result of the subtraction against 0; after "opt" it actually compares the before-subtracting value against 1. I guess it might be some sort of instruction-scheduling thing.
23:33:42 <pikhq> Phantom_Hoover: No.
23:33:42 <fizzie> Phantom_Hoover: No, you want calloc for that.
23:34:07 <pikhq> GC_MALLOC will, though.
23:34:28 -!- FireFly has quit (Quit: Leaving).
23:34:32 <fizzie> Also the zeroed memory you get from calloc() or memset() is not guaranteed to be suitable for non-integer types; it might not contain the correct NULL pointer values, for example.
23:35:00 <fizzie> (I've met a lot of people who zero pointer-containing structures with memset and live to tell the tale, though.)
23:35:26 <pikhq> Phantom_Hoover: NULL is not necessarily represented by a 0.
23:35:30 <fizzie> Because the NULL pointer is not necessarily represented by all-bits-zero.
23:35:54 <pikhq> It is merely required that a cast from integer constant 0 to a pointer is NULL.
23:36:46 <pikhq> It is perfectly valid for NULL to actually be 0xDEADBEEF.
23:36:59 <pikhq> No, ((void *) 0) must be NULL.
23:37:03 <Deewiant> 0 in a pointer context is NULL, so (void*)0 == NULL.
23:37:12 <pikhq> However, ((int)NULL) does not necessarily equal 0.
23:37:46 <fizzie> Also, for real-world (for some values of "real", anyway) examples of these cases: http://c-faq.com/null/machexamp.html "Seriously, have any actual machines really used nonzero null pointers, or different representations for pointers to different types?"
23:37:47 <Phantom_Hoover> So if I calloced some memory with pointers in it, the pointers would be null?
23:37:58 <fizzie> Because calloc just sets the bits to zero.
23:38:08 <pikhq> Phantom_Hoover: For most systems, not all of them.
23:38:27 <fizzie> Well, yes, I guess it's fair to say that they have a very good chance of being NULL.
23:38:46 <Deewiant> All machines that have been manufactured in the last 20 years, say
23:38:50 <Phantom_Hoover> How can it set the bits to 0 and not set it to 0, which is NULL when cast to a pointer?
23:39:02 <Deewiant> C guarantees that casting 0 to a pointer gives you NULL
23:39:16 <pikhq> Phantom_Hoover: 0 is not necessarily the actual bit representation of a NULL.
23:39:34 <pikhq> It is merely required that ((void*)0) gets you NULL, *WHATEVER THE HELL IT ACTUALLY IS*.
23:39:55 <Deewiant> Is it required that int x = 0; (void*)x == NULL ?
23:40:07 <Deewiant> Or does it have to be the constant zero
23:40:20 <pikhq> Deewiant: Don't think so.
23:40:38 <pikhq> const int x = 0; // Here, however, (void*)x == NULL.
23:41:32 <Deewiant> fizzie: Did you try the element-by-element initialization business?
23:42:28 <fizzie> Deewiant: Yes, just three seconds ago. It works a lot better; the .ll file initially has ugly 60k lines, but after opt there's actually no explicit zeros at all.
23:44:48 <Deewiant> fizzie: So does it get to puts("Hello world")? ;-)
23:45:17 <fizzie> pikhq: Are you sure about that? It needs to be "an integer constant expression with the value 0", and the C 'const's aren't really constant expressions: "An integer constant expression shall have integer type and shall only have operands that are integer constants, enumeration constants, character constants, sizeof expressions whose results are integer constants, and floating constants that are the immediate operands of casts."
23:47:02 -!- Phantom_Hoover has quit (Remote host closed the connection).
23:50:32 <fizzie> Deewiant: Mwahaha... when I made that explicit "%zN = getelementptr [30000 x i8]* %tape, i32 0, i32 N; store i8 0, i8* %zN;" for all N = 0 .. 29999 in the .ll file, what came out in the assembly was "sub rsp, 30008; lea rdi, [rsp]; xor esi, esi; mov rdx, 30000; call memset;" :D
23:51:09 <fizzie> I didn't even have any sort of memset function declared anywhere or anything. :p
23:51:21 <Deewiant> Yes, they try to optimize common idioms like that
23:51:42 <fizzie> call void @llvm.memset.i64(i8* %z0.i, i8 0, i64 30000, i32 1) nounwind
23:51:50 <fizzie> Actually that's in the opt'd .bc file too, it seems.
23:51:55 <fizzie> It looked messy enough that I missed it.
23:52:02 <Deewiant> I'm just a bit surprised that the zeroinitializer thing didn't do that. Not very, though, since it tends to depend on whether llvm-gcc or Clang output such code. :-P
23:53:55 <fizzie> Deewiant: There's still quite a bit of explicit computation, though: http://pastebin.com/P0vJXANt
23:54:50 <fizzie> Deewiant: Pastebin's syntax highlighting only has a NASM mode. :p
23:55:02 <Deewiant> It seems to depend on that first loop which it can't reduce, evidently.
23:55:05 <fizzie> That's still not exactly nasm-compatible, but close enough.
23:55:20 <fizzie> It does inline the brainfuck function into main, it seems.
23:55:22 <Deewiant> If you have a .ll or .bc, I can run it through LLVM trunk if you want.
23:56:43 <fizzie> Well, hello.ll: http://zem.fi/~fis/hello.ll
23:57:27 <fizzie> 60k lines of zero-initialization. :p
23:57:34 <Deewiant> That .bc would likely have been a bit smaller.
23:57:34 <fizzie> Maybe I should just call memset by myself.
23:58:24 <Deewiant> fizzie: In trunk, it no longer calls memset.
23:58:34 <fizzie> Okay. Does it still have that loop there?
23:58:54 <Deewiant> It has 30000 movb's to start with.
23:59:08 <Deewiant> And yes, a loop, though it looks a bit different.
23:59:36 <Deewiant> Or no, that may have been my fault: I used -regalloc=pbqp instead of the default.
23:59:41 -!- tombom has quit (Quit: Leaving).
23:59:55 <Deewiant> Nah, that doesn't actually matter, it's still a bit different.