00:04:04 -!- lambdabot has quit (Ping timeout: 250 seconds).
00:04:07 -!- coppro has quit (Ping timeout: 252 seconds).
00:04:18 -!- coppro has joined.
00:07:39 -!- SimonRC has quit (Remote host closed the connection).
00:07:40 -!- BeholdMyGlory has quit (Remote host closed the connection).
00:07:47 -!- SimonRC has joined.
00:16:31 -!- augur has quit (Remote host closed the connection).
00:21:47 -!- azaq23 has quit (Ping timeout: 276 seconds).
00:22:00 -!- azaq23 has joined.
00:36:34 <Sgeo> I feel guilty for not donating now
00:38:39 -!- javawizard has joined.
00:38:45 -!- jcp has quit (Ping timeout: 240 seconds).
00:38:47 -!- EgoBot has quit (Ping timeout: 240 seconds).
00:38:47 -!- javawizard has changed nick to jcp.
00:38:53 -!- Zuu has quit (Ping timeout: 240 seconds).
00:38:54 -!- pingveno has quit (Ping timeout: 240 seconds).
00:38:57 -!- Zuu_ has joined.
00:39:23 -!- EgoBot has joined.
00:40:54 -!- Guest26140 has quit (Quit: /dev/io failed).
00:40:58 -!- pingveno has joined.
00:41:14 -!- variable has joined.
00:42:33 -!- augur has joined.
00:53:33 -!- zzo38 has joined.
00:53:47 <zzo38> Let's 'patamagic. And also 'pataprogramming.
00:54:34 -!- quintopia has quit (Ping timeout: 250 seconds).
00:54:40 -!- quintopia has joined.
00:54:40 -!- quintopia has quit (Changing host).
00:54:40 -!- quintopia has joined.
00:54:43 -!- olsner has quit (Ping timeout: 252 seconds).
00:57:00 -!- olsner has joined.
00:58:41 <zzo38> Hay! I did not receive NickServ and ChanServ notices immediately, it took a few seconds after I joined, and then those notices are on.
00:58:45 -!- Mannerisky has quit (Ping timeout: 252 seconds).
01:01:56 -!- SimonRC has quit (Ping timeout: 250 seconds).
01:12:09 -!- SimonRC has joined.
01:28:04 <zzo38> I added all of the spell/feats in gopher too, now it is not limited to HTTP only.
01:28:13 <zzo38> (You can still access on HTTP as well)
01:31:15 -!- pumpkin has changed nick to hypnotoad.
01:31:23 -!- hypnotoad has changed nick to copumpkin.
01:32:11 <zzo38> Do you like this spell?
01:49:10 <zzo38> I want to cast the spell called "Break Into Debugger" (Sor/Wiz 9)
01:49:19 <Gregor> Welp, looks like I'll be taking dlsym@libdl.so as second prize :P
01:50:40 -!- iconmaster has quit (Quit: I wish I had something witty to put here...).
01:50:58 <zzo38> Gregor: Did you lose libc.so so you put libdl.so instead? Or, is something else?
01:51:09 <Gregor> I already had libdl.so
01:51:18 <Gregor> But yes, I will not be getting libc.
01:52:03 <zzo38> Now are you going to sue everyone on this channel because you did not get libc?
02:07:30 -!- zzo38 has quit (Quit: create a file in your home directory called "README"--and have the file contain the words: README: No such file or directory).
02:15:52 -!- oerjan has joined.
02:21:25 <oerjan> <elliott> why is this not working
02:22:38 <oerjan> yeah `quote is buggy with actual regexes. i've known for a while but i have nowhere near enough understanding of shell escaping to fix it.
02:23:08 <oerjan> (i assume the passing through shell breaks it.)
02:23:48 <oerjan> or i vaguely recall, it may be that test for a number which did something screwy
02:24:20 <oerjan> delving into even more obscure shell details.
02:26:14 <oerjan> in other news, i should learn to read the rest of log before commenting.
02:26:33 <oerjan> (WHAT DO YOU MEAN THAT'S NOT NEWS)
02:27:25 -!- augur has quit (Remote host closed the connection).
02:27:27 -!- azaq23 has quit (Ping timeout: 240 seconds).
02:30:15 -!- azaq23 has joined.
02:34:35 <oerjan> <olsner> elliott: "borkelde"?
02:34:44 <oerjan> ancient norse goddess of mayhem
02:35:36 <Sgeo> Just received IM Spam
02:35:45 <Sgeo> It used the praise.hm URL shortener...
02:51:41 <oerjan> <zzo38> Now are you going to sue everyone on this channel because you did not get libc?
02:51:59 <oerjan> no use suing people who are too poor to contribute, is there.
02:52:27 <oerjan> -!- zzo38 has quit (Quit: create a file in your home directory called "README"--and have the file contain the words: README: No such file or directory).
02:53:14 -!- augur has joined.
02:55:25 -!- augur has quit (*.net *.split).
02:55:28 -!- nooga has quit (*.net *.split).
03:01:05 -!- oerjan has quit (*.net *.split).
03:01:06 -!- variable has quit (*.net *.split).
03:01:08 -!- copumpkin has quit (*.net *.split).
03:01:10 -!- Vorpal has quit (*.net *.split).
03:01:11 -!- Ilari_antrcomp has quit (*.net *.split).
03:01:14 -!- fungot has quit (*.net *.split).
03:01:14 -!- mycroftiv has quit (*.net *.split).
03:04:48 -!- augur has joined.
03:04:51 -!- augur has changed nick to Guest20296.
03:05:07 -!- oerjan has joined.
03:05:07 -!- variable has joined.
03:05:07 -!- copumpkin has joined.
03:05:07 -!- Vorpal has joined.
03:05:07 -!- Ilari_antrcomp has joined.
03:05:07 -!- fungot has joined.
03:05:07 -!- mycroftiv has joined.
03:05:13 -!- Sgeo_ has joined.
03:05:15 -!- nooga has joined.
03:06:37 -!- Sgeo has quit (Ping timeout: 251 seconds).
03:19:18 <quintopia> how do i break the select method form all input objects in the DOM on all webpages via greasemonkey?
03:19:37 <quintopia> HMTLInputElement.prototype.select = empty function doesn't work
03:19:46 <quintopia> i think because it gets run after the page is loaded maybe?
03:20:15 <quintopia> do i need to loop over dom and break them all individually?
03:20:51 <Gregor> You're only trying to break it from JS' perspective, right?
03:21:26 <quintopia> i don't want a page to be able to do auto-highlighting on mouseovers and such
03:21:40 <Gregor> In principle that should work. But it could just be unconfigurable. Have you checked if HTMLInputElement.prototype.select actually changed?
03:22:18 <quintopia> ah, no...interwebs tell me that works though
03:22:55 <quintopia> is there an about: page for the dom inspector?
03:23:45 -!- Sgeo__ has joined.
03:31:51 -!- Gregor` has joined.
03:32:57 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
03:32:59 -!- Gregor has quit (Ping timeout: 246 seconds).
03:34:57 -!- azaq23 has quit (Ping timeout: 276 seconds).
03:36:22 <quintopia> DOM inspector does not let me see the contents of "prototype"
03:40:09 -!- azaq23 has joined.
03:55:25 -!- Guest20296 has changed nick to augur.
03:55:42 -!- Sgeo__ has quit (Read error: Connection reset by peer).
03:55:42 -!- Sgeo__ has joined.
03:55:43 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
03:59:59 -!- wareya has quit (Read error: Connection reset by peer).
04:00:42 -!- wareya has joined.
04:06:48 -!- wareya_ has joined.
04:08:00 -!- mycrofti1 has joined.
04:09:07 -!- wareya has quit (*.net *.split).
04:09:09 -!- oerjan has quit (*.net *.split).
04:09:09 -!- variable has quit (*.net *.split).
04:09:14 -!- Vorpal has quit (*.net *.split).
04:09:15 -!- Ilari_antrcomp has quit (*.net *.split).
04:09:18 -!- fungot has quit (*.net *.split).
04:09:18 -!- mycroftiv has quit (*.net *.split).
04:09:20 -!- oerjan has joined.
04:14:39 -!- Vorpal has joined.
04:14:39 -!- Ilari_antrcomp has joined.
04:19:12 -!- copumpkin has joined.
04:21:49 -!- oerjan has quit (Quit: leaving).
04:40:59 -!- asiekierka has joined.
04:47:12 -!- asiekierka has quit (Read error: Connection reset by peer).
04:47:19 -!- asiekierka has joined.
05:01:05 -!- Gregor` has changed nick to Gregor.
05:02:06 -!- augur has quit (Remote host closed the connection).
05:07:35 -!- asiekierka has quit (Ping timeout: 255 seconds).
05:26:39 -!- augur has joined.
05:41:36 -!- azaq23 has quit (Quit: Leaving.).
06:32:31 -!- copumpkin has quit (Ping timeout: 246 seconds).
06:32:57 -!- copumpkin has joined.
07:02:47 -!- lament has quit (Ping timeout: 255 seconds).
07:43:20 -!- mtve has joined.
08:20:20 -!- lifthras1ir has joined.
08:20:39 -!- shachaf_ has joined.
08:21:26 -!- nottwo_ has joined.
08:21:34 -!- shachaf has quit (Disconnected by services).
08:21:41 -!- shachaf_ has changed nick to shachaf.
08:23:10 -!- rodgort has quit (*.net *.split).
08:23:10 -!- cheater00 has quit (*.net *.split).
08:23:15 -!- clog has quit (*.net *.split).
08:23:16 -!- lifthrasiir has quit (*.net *.split).
08:23:17 -!- nottwo has quit (*.net *.split).
08:23:23 -!- jcp has quit (*.net *.split).
08:23:25 -!- Leonidas has quit (*.net *.split).
08:23:26 -!- Lymia has quit (*.net *.split).
08:23:28 -!- jcp has joined.
08:23:29 -!- Leonidas has joined.
08:23:29 -!- Lymia has joined.
08:30:06 -!- rodgort has joined.
08:32:36 -!- cheater00 has joined.
09:11:30 -!- Zuu has joined.
09:11:30 -!- Zuu has quit (Changing host).
09:11:30 -!- Zuu has joined.
09:12:30 -!- coppro_ has joined.
09:12:41 -!- Zuu_ has quit (*.net *.split).
09:12:41 -!- coppro has quit (*.net *.split).
09:12:42 -!- Ilari has quit (*.net *.split).
09:13:36 -!- Ilari has joined.
09:40:16 -!- sebbu has joined.
09:40:16 -!- sebbu has quit (Changing host).
09:40:16 -!- sebbu has joined.
09:40:43 -!- copumpkin has quit (*.net *.split).
09:40:45 -!- olsner has quit (*.net *.split).
09:40:47 -!- Deewiant_ has quit (*.net *.split).
09:40:47 -!- sebbu2 has quit (*.net *.split).
09:40:54 -!- yiyus has quit (*.net *.split).
09:42:27 -!- Ilari has quit (Ping timeout: 260 seconds).
09:43:40 -!- Ilari has joined.
09:45:17 -!- copumpkin has joined.
09:45:17 -!- olsner has joined.
09:45:17 -!- yiyus has joined.
09:52:09 -!- Deewiant has joined.
10:19:07 -!- mycroftiv has joined.
10:20:19 -!- Gregor` has joined.
10:20:39 -!- mycrofti1 has quit (Ping timeout: 240 seconds).
10:20:42 -!- Gregor has quit (Ping timeout: 240 seconds).
10:29:53 <Vorpal> freenode seems somewhat unstable today
10:29:53 -!- clog has joined.
10:34:25 <fizzie> Perhaps they're still patching.
10:34:28 -!- SimonRC has quit (Ping timeout: 252 seconds).
10:34:51 <fizzie> (Re "[Global Notice] Hi folks! As you'll have noticed, we've been having some connectivity problems tonight. We're working on patching things together just now." about seven hours ago.)
10:35:04 -!- SimonRC has joined.
10:44:08 -!- cheater- has joined.
10:46:16 -!- cheater00 has quit (Ping timeout: 246 seconds).
10:49:38 -!- Slereah has quit (Ping timeout: 248 seconds).
10:56:08 -!- Slereah has joined.
11:00:28 -!- shachaf has quit (Ping timeout: 258 seconds).
11:00:58 -!- shachaf has joined.
11:09:53 -!- Sgeo_ has joined.
11:12:29 -!- wareya has joined.
11:12:53 -!- wareya_ has quit (Ping timeout: 246 seconds).
11:12:54 -!- Gregor` has quit (Ping timeout: 246 seconds).
11:13:00 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
11:14:37 -!- Gregor has joined.
11:15:03 -!- Gregor has changed nick to Guest79498.
11:37:48 -!- Guest79498 has quit (Ping timeout: 246 seconds).
11:37:49 -!- cheater- has quit (Ping timeout: 246 seconds).
11:38:35 -!- Gregor has joined.
11:39:01 -!- Gregor has changed nick to Guest96426.
11:39:28 -!- cheater- has joined.
11:55:33 <cheater-> are there any markov bot plugins for xchat?
11:56:54 <cheater-> there's another channel where people speak german and they keep on accusing me of being a markov bot
11:57:04 <cheater-> so i thought i should actually set up a markov bot that could chat for me every now and then
12:00:57 -!- cheater00 has joined.
12:02:55 -!- cheater- has quit (Ping timeout: 246 seconds).
12:24:52 -!- sftp has joined.
12:25:40 -!- Guest96426 has changed nick to Gregor.
12:37:58 -!- variable has joined.
12:55:21 -!- coppro_ has changed nick to coppro.
13:07:00 -!- Sgeo_ has quit (Read error: Connection reset by peer).
13:07:03 -!- FireFly has joined.
13:33:01 -!- augur has quit (Remote host closed the connection).
13:39:02 -!- BeholdMyGlory has joined.
13:41:08 -!- MigoMipo has joined.
13:43:19 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:05:17 -!- augur has joined.
14:06:00 -!- copumpkin has joined.
14:06:57 -!- FireFly has quit (*.net *.split).
14:06:57 -!- variable has quit (*.net *.split).
14:07:00 -!- Ilari has quit (*.net *.split).
14:07:00 -!- sebbu has quit (*.net *.split).
14:07:06 -!- Vorpal has quit (*.net *.split).
14:07:07 -!- Ilari_antrcomp has quit (*.net *.split).
14:08:13 -!- FireFly has joined.
14:08:13 -!- variable has joined.
14:08:13 -!- Ilari has joined.
14:08:13 -!- sebbu has joined.
14:08:13 -!- Vorpal has joined.
14:08:13 -!- Ilari_antrcomp has joined.
14:20:09 -!- FireFly has quit (*.net *.split).
14:20:09 -!- variable has quit (*.net *.split).
14:20:13 -!- Ilari has quit (*.net *.split).
14:20:13 -!- sebbu has quit (*.net *.split).
14:20:19 -!- Vorpal has quit (*.net *.split).
14:20:19 -!- Ilari_antrcomp has quit (*.net *.split).
14:20:40 -!- FireFly has joined.
14:20:41 -!- variable has joined.
14:20:41 -!- Ilari has joined.
14:20:41 -!- sebbu has joined.
14:20:41 -!- Vorpal has joined.
14:20:41 -!- Ilari_antrcomp has joined.
14:29:19 -!- augur has quit (Remote host closed the connection).
14:32:55 -!- augur has joined.
14:47:57 -!- oerjan has joined.
14:49:59 -!- copumpkin has quit (Ping timeout: 252 seconds).
14:51:57 -!- copumpkin has joined.
14:52:50 -!- lambdabot has joined.
14:54:38 -!- asiekierka has joined.
14:56:02 -!- pumpkin has joined.
14:57:24 -!- copumpkin has quit (Ping timeout: 246 seconds).
15:01:22 -!- Phantom_Hoover has joined.
15:17:45 -!- sftp has quit (Remote host closed the connection).
15:26:28 -!- azaq23 has joined.
15:32:26 <Ilari> APNIC down 0.03: 128k+32k+16k+2x1k+256+/32+2x/48 to Australia, 64k to China, 512 to Indonesia, /32 to India, /48 to Norfolk Island, /48 to New Zealand, /32 to Singapore, 64k to Thailand.
15:34:12 <Ilari> Well, at least APNIC is now under 12Mi addresses. :-)
15:37:13 -!- asiekierka has quit (Ping timeout: 258 seconds).
15:37:26 <Gregor> When did you project APNIC depletion? Mid-April?
15:38:20 <Ilari> 614.5k addresses in a day.
15:38:25 <Ilari> I'll compute new projection...
15:38:32 -!- lament has joined.
15:41:19 <Ilari> I got Thursday 14th April this time.
15:42:16 <Ilari> (that date is next week!)
15:43:13 <Gregor> How 'bout for North America?
15:43:20 <Gregor> (Or is "the Americas" the region? I forget)
15:48:57 <Ilari> 3.64 blocks (58Mi) or so seemingly.
15:49:48 <Ilari> (Free, don't know about the allocation rate, it is much much lower than APNIC rate).
15:51:45 <Gregor> So we could cruise at least through 2012.
15:52:08 <Ilari> Heh, in the last 30 days lists, the only allocation bigger than 256k not from APNIC is one 1M allocation from AfriNIC.
15:53:43 <oerjan> perhaps when APNIC runs out the run will spread to other regions...
15:54:34 <oerjan> unless they have rules to prevent asian companies from allocating IPs from elsewhere
15:56:54 <Ilari> Yeah, that's the worry.
15:58:06 <Ilari> The demand might spread to ARIN and RIPE NCC, quickly depleting those. Then after those have been sucked dry, LACNIC and AfriNIC.
15:59:38 <Ilari> 1 block of demand (combined) per month would suck ARIN and RIPE NCC out completely in about 6.5 months.
16:02:08 <Ilari> Hmm... The default option in Lagerholm's tool previously was "RIR shopping allowed", now that option is no longer the default.
16:04:13 <Ilari> If Asian operators don't shift demand to other regions and if ARIN and RIPE don't suffer similar run-on-the-bank scenarios as APNIC (both fairly dubious assumptions), RIPE would run out late next year (even RIPE itself isn't that optimistic!) and ARIN in early year after that.
16:05:36 -!- lament has quit (Ping timeout: 260 seconds).
16:05:39 -!- elliott has joined.
16:05:45 <elliott> 23:37:58: <Gregor> quintopia: But he ping-timeout'd, not quit.
16:05:46 <elliott> 23:38:51: <quintopia> i don't think it's a problem with his connection
16:05:46 <elliott> 23:39:15: <quintopia> i bet he just unplugged his computer because he was fed up with us
16:05:46 <elliott> my client can do that sometimes
16:05:48 <Ilari> Full demand shifting would cause everything to run out early next year.
16:06:11 <elliott> 00:28:40: <Sgeo> Gregor, :(:(
16:06:12 <elliott> 00:36:34: <Sgeo> I feel guilty for not donating now
16:06:18 <elliott> i don't see Gregor saying anything beforehand?
16:06:50 <Gregor> elliott: I shall not discuss libc.so in-channel, but that doesn't stop other people from doing so :P
16:07:03 <Phantom_Hoover> Gregor, can you at least confirm that you didn't get it?
16:07:15 <Gregor> 'twas not meant to be.
16:07:25 <elliott> what made people suspect that he didn't get it
16:07:36 <elliott> sgeo just seems to have decided that out of the blue
16:07:44 <oerjan> elliott: he changed his nick back?
16:07:54 <elliott> um his nick had been back five years ago
16:08:15 <fizzie> Or the lack of raucous celebration?
16:08:33 <Gregor> If there was raucous celebration, it would have started nowishly :P
16:09:40 <Gregor> Really? Not your browser?
16:10:17 -!- elliott_ has joined.
16:11:03 -!- elliott has quit (Disconnected by services).
16:11:04 -!- elliott_ has changed nick to elliott.
16:11:07 -!- elliott has quit (Changing host).
16:11:08 -!- elliott has joined.
16:13:55 <Ilari> Wonder if IPv6 allocation rates in Asia-Pacific will take some rocket fuel when APNIC IPv4 pool depletes.
16:14:48 -!- sftp has joined.
16:16:21 <Ilari> ... The primary worry with that is if APNIC is fast enough to handle the demand, not that it would deplete APNIC pool (there's over 30 bilion /48s to allocate until half-block threshold is reached, and then there's IANA with 506 blocks).
16:17:33 <Gregor> Phantom_Hoover: whois would fail because it doesn't know how to whois .so in particular.
16:17:55 <Gregor> Plus I don't think they provide a whois-protocol whois server...
16:18:04 <Gregor> Is your browser Chrome, perchance?
16:18:06 <elliott> This TLD has no whois server.
16:18:24 <Gregor> It has a web-accessible captchawhois :P
16:18:36 <Gregor> Phantom_Hoover: The auction isn't over yet, and even if it was it wouldn't be allocated yet.
16:19:04 <elliott> Charlie Sheen. He's a real C programmer.
16:19:39 <Ilari> Oops, calculated that estimate wrong: I get Wednesday 13th April using the current pool size (not pool size after Friday).
16:20:21 <Gregor> I had an earlier number than the others because I was in the ld-linux.so auction, although I made no bids there.
16:22:21 <Ilari> But for some reason Huston site has APNIC having extra 0.2 free blocks (which would push depletion to ~Friday 15th April).
16:22:26 <elliott> Oh, not #whatever in the auction, just in general :P
16:22:31 <elliott> I was thinking dayum, you had no chance.
16:22:39 <elliott> Also ld-linux was actually fought over at all? X-D
16:26:53 <elliott> fizzie: YOU'RE a Forthy kind of person aren't you?! DO YOU WANT TO TRY THE FRTH DEVELOPER PRELEASE
16:28:12 <fizzie> I'm not that frothy; I'm really actually quite stale.
16:29:03 <Ilari> What? Graph on APNIC site is showing only down 0.01, but values for numerious previous days have gone down 0.02 (retroactively!).
16:29:28 <elliott> fizzie: Well, yeah, being almost 30 and all.
16:29:54 <oerjan> Ilari: the ip depletion is causing disruptions in the timestream. we are doomed!
16:45:32 <Vorpal> <Ilari> But for some reason Huston site has APNIC having extra 0.2 free blocks (which would push depletion to ~Friday 15th April). <-- and what happens then
16:45:42 <elliott> OF THE WOOOOOOOOOOOOOOOOOOOOORLD
16:45:44 <Vorpal> Ilari, how long before the LIRs get into issue?
16:48:44 <Ilari> No idea how long LIRs have to go. There's certain allocation period (but I don't recall what current APNIC policies about that are).
16:48:49 <oerjan> it's the phone call of DOOM
16:49:46 <Ilari> Uh, oh: "CNNIC, the Chinese Registrar and CA have been EV enabled. As part of this, a new EV-enabled Root was added (the old is not EV-enabled)." (opera). Let's just say that certain persons don't trust CNNIC _at_ _all_.
16:49:56 <elliott> hmm, aria2c is being a bit slower than usual :/
16:50:01 -!- cheater99 has joined.
16:51:20 -!- cheater00 has quit (Ping timeout: 246 seconds).
16:52:07 <elliott> In December 2010 some users requested that the Unity launcher (or dock) be movable from the left to other sides of the screen, but Mark Shuttleworth stated in reply, “I'm afraid that won't work with our broader design goals, so we won't implement that. We want the launcher always close to the Ubuntu button.”[11]
16:52:16 <elliott> It SUPPLIES THE CONCEPTUAL ENERGY
16:53:16 <Vorpal> Ilari, EV? Is that DNSSEC-related?
16:53:29 <Ilari> Extended Validation (related to SSL certificates).
16:53:37 <elliott> No. It's Evisceration Vacancies.
16:53:40 <Ilari> Nothing to do with DNSSEC.
16:53:45 <elliott> The Chinese government can now execute people OVER DNS
16:53:59 <elliott> They basically just have a bunch of empty EV records in a domain.
16:54:07 <elliott> When you do a DNS lookup, you get trapped in one and eviscerated.
16:54:09 <Ilari> ... Which .cn apparently doesn't have enabled.
16:56:28 <Ilari> DNSSEC-enabling .cn would only make .cn vulernable to CNNIC. Giving them EV cert perms in browsers makes everything vulernable to them.
16:56:57 <Vorpal> Ilari, hm. Is CNNIC bad?
16:58:19 <Ilari> Vorpal: Depends on how tightly China controls it...
17:01:10 -!- azaq23 has quit (Quit: Leaving.).
17:01:33 <elliott> hmm, writing a Magenta parser looks scary
17:06:26 * cheater99 hates the "opensores" web app/store called Magento.
17:10:41 <cheater99> First, I don't have a damn clue what any of this means anymore. The design was such a twisted mess that there was no way I could go back and add anymore to it. I sure as hell wouldn't want to be the poor sap trying to turn this disaster into a LALR(1) grammar for yacc. That said, I'd love to see someone try.
17:11:10 <oerjan> magento, part esolang, part supervillain
17:12:41 -!- asiekierka has joined.
17:15:07 -!- ais523 has joined.
17:22:31 <Phantom_Hoover> Hmm, HP Lovecraft was appalled when he discovered his great-great-grandmother was Welsh.
17:23:10 <elliott> You're HP Lovecraft's great-great-grandmother?
17:24:22 -!- asiekierka has quit (Read error: Connection reset by peer).
17:24:26 <elliott> I know not what you talk about.
17:24:52 -!- asiekierka has joined.
17:25:01 -!- asiekierka has quit (Read error: Connection reset by peer).
17:25:08 <Vorpal> <Phantom_Hoover> OH GOD WAIT HE IS <-- just back
17:26:07 -!- asiekierka has joined.
17:26:07 <elliott> wow, Common Lisp actually has if/else
17:26:09 <Vorpal> btw, I think I might do some sort of fuzzy-matching on highlighting. Would be fun
17:26:11 <elliott> that is, with explicit else
17:26:43 <elliott> finally (return (values evens odds)))
17:27:26 <elliott> that's why it surprised me
17:27:39 <elliott> (i wouldn't have expected it to pronounce it in quite that way)
17:27:58 <ais523> BF really needs a while/else
17:28:14 <ais523> e.g. if (*p) while (*p) {} else {}
17:28:24 <ais523> it'd let me abbreviate my huge BF Joust program much better
17:28:44 <ais523> I think I finally got it within fizzielance's nesting constraints, by examining the other programs and adding only the cases that actually ran
17:28:57 <ais523> which is a bit like constant tweaking, but I don't care as it's working around an intepreter failure
17:29:10 <elliott> wait, exactly what you said
17:29:14 <ais523> well, it'd matter in BF Joust because of itming
17:30:04 <ais523> !bfjoust anticipation http://sprunge.us/CNiW
17:30:15 <EgoBot> Score for ais523_anticipation: 40.2
17:30:37 <ais523> ^ defence program that beats slowpoke
17:30:49 <elliott> that made me think Culture ship names, then I tried to think why, then I realised that an (IIRC obnoxious) Wikipedian used that Culture ship name as a username for a while
17:30:51 <ais523> unfortunately, I figured out how to adapt slowpoke's strategy in a way which probably is completely fatal to defence
17:30:56 <elliott> then I regretted my auto-thinking
17:31:03 <elliott> ais523: you said that /last/ time too
17:31:14 <ais523> what, that slowpoke was fatal?
17:31:15 <elliott> (Culture ship in question is Anticipation Of A New Lover's Arrival, The)
17:31:22 <elliott> (Let's just pretend I've memorised every Culture ship name without ever reading the novels)
17:31:54 <ais523> but anticipation-style strategies can only work by assuming the program in question uses consistent timings
17:32:06 <ais523> and I worked out how to make slowpoke vary its attack timing
17:33:04 <elliott> ok, the person who used that name has /way/ too many pseudonyms
17:35:37 <Gregor> http://libdl.so/ <-- best web page ever?
17:36:22 <ais523> probably not, but it's good for a quick laugh
17:36:31 <cheater99> ok gregor... now i know your powerword
17:36:39 <elliott> SO HOW MANY THOUSANDS DID THAT ONE COST MR. GREGOR "MONEYBAGS" RICHARDS [U+PRBLM TROLL FACE]
17:37:03 <elliott> ais523: what's the ;s in anticipation?
17:37:11 <Gregor> cheater99: ... my ... name?
17:37:20 <Gregor> elliott: There was no auction. $10 :P
17:37:34 <elliott> >>>(-)*20<(-)*20<(-)*20<(+)*108;
17:37:34 <Gregor> cheater99: My name isn't a secret. My real name is on my /whois .
17:37:37 <ais523> oh, I must have been putting trailing semicolons out out of habit
17:37:50 <ais523> the ()*14 stuff is debug cod
17:37:50 <elliott> Gregor: No, your REAL NAME
17:37:56 <cheater99> http://encyclopediadramatica.com/Powerword
17:38:00 <elliott> Gregor: Mrs. Mary Gregor Richards
17:38:02 <ais523> juiced currently notices loops like that and prints them to stderr whenever they execute
17:38:15 <ais523> which is really helpful when debugging
17:38:22 <ais523> and other interps ignore them
17:38:41 <elliott> ais523: we decided on ()*0 as the comment format; IMO that would be a far superior method
17:38:52 <elliott> because printing all comments in a debug mode is a pretty good idea in bf joust
17:39:01 <ais523> elliott: perhaps, but comments are sometimes really long
17:39:04 <elliott> since comments (at least for me) tend to just denote when the warrior starts doing something interesting
17:39:04 <cheater99> Revealing to your victim that you know their Powerword: Real Name will cause them to panic, as they suddenly confront the possibility that their Furaffinity posts or the Eagle-Fox hybrid voraphile porn on their DeviantArt account could be sent to their IRL co-workers and friends. Their typical reaction will be to DELETE FUCKING EVERYTHING - fortunately, most good trolls take screenshots.
17:39:07 <ais523> comments and debug tags are inherently different things
17:39:20 <ais523> what if someone puts the entire code generator in a comment?
17:39:29 <elliott> ais523: Gregor tried that, the syntax rules made it impossible :)
17:39:36 <elliott> [( They're on our flag; time to attack )*0
17:39:41 <ais523> or uses comments to explain their decoy setups?
17:39:47 <elliott> [-] ( They're gone! Or are they? )*0 [(Nope)*0 ...] ...]
17:39:59 <elliott> ais523: that's acceptable to print out, IMO
17:40:03 <elliott> it's easy enough to skip over such things
17:40:05 <ais523> not if it's several lines long
17:40:10 <elliott> ais523: it only happens once
17:40:19 <ais523> the code generator for anticipator has huge paragraphs explaining which timings are used by which other programs
17:40:31 <elliott> ais523: OK, well, what if we said that ()%0 was debug? :-D
17:40:54 <ais523> especially as ({a})%0 should semantically run the a
17:41:01 <ais523> (juiced screws up on that case, though, IIRC)
17:41:03 <elliott> ais523: Don't go ouch, my other idea was ((debug)*0)*-1
17:41:29 <elliott> <ais523> especially as ({a})%0 should semantically run the a
17:41:33 <ais523> the other advantage of ()*n is that it doesn't need to store any information the interp isn't already storing
17:41:36 <ais523> juiced deletes comments on load
17:41:45 <Vorpal> <elliott> <ais523> especially as ({a})%0 should semantically run the a
17:41:57 <elliott> ais523: lance's architecture required deleting ()*n, IIRC
17:41:59 <Vorpal> (comment {a} comment)%0
17:42:06 <elliott> <elliott> (before{...}after)%0 <elliott> USEFUL!
17:42:19 <elliott> for which a before/after pair might actually be useful :)
17:42:42 <Vorpal> elliott, so what about proper code comments?
17:42:52 <elliott> we've already agreed those are ()*0
17:43:00 <Vorpal> elliott, I thought that was debug?
17:43:17 <elliott> although they're more dead code than comments, because they still have to have balanced (), [], etc.
17:43:21 <elliott> and can't have {} in them without a ()% in them
17:43:26 <Vorpal> elliott, I wasn't aware of that ()%n existed
17:43:28 <elliott> and ()s in them still have to be followed by * or %, etc. etc. etc.
17:43:47 <Vorpal> elliott, ah well without the {} I meant
17:45:36 * elliott opens a lance directory to start coding
17:45:45 <elliott> no deadline, before anyone asks :P
17:45:54 <Phantom_Hoover> Anyone have a way to convert a spreadsheet into a LaTeX table?
17:51:39 <elliott> (struct foo*)(foo - offsetof(struct foo, y))
17:51:46 <elliott> guaranteed to be a pointer to blah?
17:52:10 <elliott> It is useful when implementing generic data structures in C. For example, the Linux kernel uses offsetof() to implement container_of(), which allows something like a Mixin type to find the structure that contains it:[3]
17:52:11 <elliott> #define container_of(ptr, type, member) ({ \
17:52:11 <elliott> const typeof( ((type *)0)->member ) *__mptr = (ptr); \
17:52:11 <elliott> (type *)( (char *)__mptr - offsetof(type,member) );})
17:52:11 <elliott> This macro is used to retrieve an enclosing structure from a pointer to a nested element, such as this iteration of a linked list of my_struct objects:
17:56:26 <Vorpal> Phantom_Hoover, convert it to csv, then a fairly simple sed script should be able to do the rest
17:57:10 <Phantom_Hoover> <Vorpal> Of course, everyone has time to make a sed script to do tasks which should be routine enough for preëxisting automation.
17:57:11 <Vorpal> might need some manual adjustment for header
17:57:11 <Vorpal> still should be easy to automate it
17:57:44 <elliott> Phantom_Hoover: You have time to whine on IRC, you have time to write a tiny sed script.
17:57:47 <Vorpal> elliott, that looks cool
17:57:56 <Vorpal> pitty is is not portable
17:58:18 <elliott> that container_of is nonportable, though
17:58:25 <Vorpal> or is it typeof that isn't
17:58:33 <Vorpal> either typeof or offsetof is non-portable
17:59:06 <elliott> typeof is nonportable, but container_of is nonportable also because of ((type *0)->
17:59:43 <Vorpal> Phantom_Hoover, uh, you mean you hate coding? And I was trying to be helpful. I know of no such tool but suggested a somewhat easy way to convert very large tables
18:05:39 -!- oerjan has quit (Quit: Good night).
18:05:53 <elliott> ais523: how much did your original huge program nest?
18:09:18 -!- asiekierka has quit (Ping timeout: 260 seconds).
18:11:00 <elliott> hmm, C could really do with generics
18:12:07 <Vorpal> elliott, you could do "C with templates" to simulate this ;)
18:12:18 <Vorpal> elliott, but more seriously. Have a look at the C99 header tgmath.h
18:12:48 <Vorpal> funnily there is no pure C way to implement tgmath.h
18:13:28 <elliott> hmm, I'm not even sure that's true
18:13:32 <elliott> it would be really ugly though :)
18:13:59 <elliott> Vorpal: well, if you knew certain things about sizeof...
18:14:13 <elliott> so it can be implemented _for almost any given implementation_ in pure C
18:14:30 <elliott> since the vast majority of implementations I would guess have different sizes of all of the relevant types
18:16:07 <Vorpal> elliott, not true. Few embedded things do.
18:16:11 <ais523> elliott: it nests 1 per cycle it waits
18:16:13 <Vorpal> and isn't embedded systems something like 80%-90% of the computers in the world? Read that somewhere..
18:16:18 <elliott> ais523: I mean, source code nesting depth
18:16:40 <elliott> Vorpal: yeah, but i hope most embedded systems don't run C
18:16:44 <elliott> (they probably do, but I hope they don't)
18:16:47 <ais523> the code is pretty simple, just doesn't compress well
18:16:49 <elliott> ais523: that's not an answer, the answer is constant
18:16:58 <elliott> I know it broke fizziewhateverlance's limit
18:17:13 <ais523> elliott: indeed, 1 per cycle it waits, which is a value I set when writing the code
18:17:18 <ais523> I think I originally had it at 1600
18:17:51 <elliott> (I'm wondering how high to set the stack limit, or alternatively, whether I really must dynamically allocate)
18:19:05 <ais523> I'd happily put it all the way up at 100000 if I thought it would help, although it'd make the program much longer
18:19:17 <ais523> -rw-r--r-- 1 ais523 ais523 204754 2011-04-04 05:18 anticipation.bj
18:19:26 <ais523> I doubt I'd go much above 2000 or so without exceeding the 1MB limit
18:19:58 <Vorpal> 20 lines in half a second
18:20:02 <Vorpal> yet I had no lag elsewhere
18:20:24 <elliott> ais523: there is no 1 meg limit
18:20:29 <elliott> unless fizzielance has one
18:20:36 <Vorpal> "<ais523> elliott: it nests 1 per cycle it waits" to "<ais523> I doubt I'd go much above 2000 or so without exceeding the 1MB limit" arrived in a single second
18:21:04 <ais523> actually, I think it might be interesting to do BF Joust with a nesting restriction on expanded []
18:21:08 <ais523> a really small one, say 16
18:21:13 <elliott> ais523: yes, but that's not the language we're using :)
18:21:19 <ais523> it'd probably make ()% redundant
18:21:26 <ais523> but it'd get rid of slowpoke and improved-slowpoke-style things
18:21:28 <elliott> ais523: I'll probably just malloc a 1,048,576 structures big thing for the nesting stack
18:21:34 <elliott> or maybe smaller, a struct seems to be...
18:21:37 <ais523> (I'll hold off on improved-slowpoke in case it truly is impossible to defend against)
18:21:59 <elliott> so that would be 16 megabytes :)
18:22:07 <elliott> otoh, 16 megabytes isn't much to allocate
18:22:13 <ais523> doing it dynamically should be easy
18:22:14 <elliott> otooh, nobody is going to nest _that_ much
18:22:17 <Vorpal> <elliott> Vorpal: yeah, but i hope most embedded systems don't run C <-- what do you expect them to run
18:22:18 <elliott> wait, I can just use the cycle limit
18:22:23 <ais523> in case you're wondering, joust allocates the stack during the parser
18:22:24 <elliott> that's a literal hard limit
18:22:37 <elliott> ais523: it isn't hard, but manual memory management angers me anyway
18:22:46 <ais523> in fact, the nesting stack's stored in the same structs that the program is
18:22:59 <Vorpal> elliott, C is the majority as far as I know. Then there is a bit of ADA and asm. And a few thiny other languages including forth.
18:23:04 <elliott> ais523: it doesn't even compile to jumps? lol
18:23:14 <Vorpal> elliott, do ada is getting a lot more rare very quickly
18:23:22 <elliott> you've made that typo like 48734953948593475893745793845793459837598345 times
18:23:25 <ais523> elliott: it effectively does
18:23:27 <ais523> but it's more structured
18:23:48 <Vorpal> elliott, but yeah, C very clearly dominates
18:24:02 <elliott> hmm, when camelcased is opcode Opcode or OpCode?
18:25:00 <Vorpal> elliott, and in embedded the ISA bus isn't still quite dead yet. Sadly.
18:25:04 <Vorpal> It is dying, but not there yet.
18:25:47 <elliott> oh noes? isa isn't that old
18:26:05 <Vorpal> elliott, ISA was quite horrible
18:26:22 <elliott> (before objecting that it was invented in 1981, remember that i've been reading about Multics and identifying with a lot of the design goals and implementation, and that was in 1969)
18:26:57 <Vorpal> elliott, does that mean you think everything old was better?
18:27:07 <elliott> no, it just means that i've looked a lot further back than most people :)
18:27:18 <elliott> oh, and I seem to like ALGOL 60 quite well, based on what ais523's said and some other things
18:27:46 <Vorpal> elliott, you should go write machine code on punch cards
18:27:57 <elliott> <Vorpal> UR JUST A MINDLESS OLDIE CONSERVATIVE
18:28:02 <Vorpal> assembler? You got to be kidding
18:28:22 <elliott> been practising your reading comprehension i see :)
18:28:33 <Vorpal> elliott, no I didn't say that :P
18:28:33 <Vorpal> elliott, I agree multics had some good points
18:28:54 <elliott> ais523: does your hardware pass the man or boy test?
18:28:59 <Vorpal> elliott, also I never said I wouldn't want to play with punch cards myself!
18:29:15 <ais523> elliott: I haven't looked at it yet
18:29:18 <elliott> Vorpal: that kind of fetish will get you in hospital with papercuts all over
18:29:24 <elliott> ais523: it's basically a set of the insanity of call by name
18:29:29 <ais523> it should do, because it's harder for it to happen incorrectly than correctly
18:29:40 <ais523> (I know the test exists, and more or less what it tests)
18:29:40 <elliott> ais523: (the answer is -67, but Knuth thought it was -121 in the original paper, that's how hard it is :D)
18:30:09 <Vorpal> elliott, what is this test you are talking about?
18:30:11 <ais523> what's difficult in hardware is very different from what's difficult in software
18:30:11 <elliott> ais523: so does your compiler work on ICA code or ALGOL 60 code?
18:30:14 <elliott> Vorpal: http://en.wikipedia.org/wiki/Man_or_boy_test
18:30:58 <ais523> elliott: it works on ICA parsetrees, atm
18:31:11 <ais523> also, that program doesn't compile into hardware, it uses an illegal sort of recursion
18:32:08 <elliott> what's the max cycles? 1 M? 100 k?
18:32:15 <ais523> (hardware has to be finite-state; that means restricting what's allowed)
18:32:17 <elliott> in jouoouououououououost, i mean
18:32:31 <ais523> is the normally agreed-upon value nowadays
18:33:51 <elliott> ais523: that was a bug in egojoust, IIRC
18:33:59 <ais523> no, the bug made it interpret -1 as 10k
18:36:37 <elliott> still, C needs generics :)
18:36:46 <elliott> you can't even define a stack in C!
18:37:08 <elliott> either you have (1) ugly (void *) munging requiring extraneous allocation with stacks of structures,
18:37:15 <Vorpal> elliott, you can with macros
18:37:20 <elliott> (2) both an array and an index variable that are separate,
18:37:29 <elliott> (3) a macro that defines a bunch of types and functions for working on a specific type
18:37:39 <elliott> such a macro is hideously ugly and causes binary bloat
18:37:41 <Vorpal> elliott, it can take a type as parameter to the macro
18:38:02 <elliott> there's actually a final option, a bunch of functions that take sizeofs and a bunch of macros that call them with the appropriate sizes, but that's insanely ugly too.
18:38:19 <Vorpal> elliott, you could do it as a linked list
18:38:31 <elliott> duh, that's what the function solutions were
18:38:37 <elliott> OTOH, a linked list is pretty inefficient for a stack in C
18:38:48 <Vorpal> elliott, oh, I though the functions operated on an array of some sort
18:38:49 <elliott> a growing away is much better, but even more work to code
18:39:05 <Vorpal> elliott, so stop coding C
18:39:16 -!- Wamanuz4 has joined.
18:39:25 <elliott> I'd still have to write my own growing array in Haskell I think :-D
18:39:29 <elliott> or maybe the vector package has that
18:39:39 -!- Wamanuz3 has quit (Ping timeout: 246 seconds).
18:39:41 <Vorpal> elliott, surely perl has this?
18:39:50 <elliott> anyway C is more useful, since EgoBot's Haskell environment is uncertain
18:39:57 <elliott> and also, because BF Joust execution is quite intensive
18:40:00 <ais523> coppro: I think the Alternative Vote campaining's starting to start in earnest; the government sent out leaflets explaining what the vote was about, and links to the campaign websites: http://www.yestofairervotes.org/ http://www.no2av.org/
18:40:04 <Vorpal> elliott, anyway it would be trivial to do in scheme
18:40:14 <ais523> I love how the "no" campaign indirectly calls the US a third world country
18:40:15 <elliott> ais523: it started a while ago
18:40:28 <Vorpal> elliott, use lambdabot?
18:40:35 <ais523> elliott: well, yesterday's when all the leafleting, etc, reached my house
18:40:51 <Vorpal> elliott, so do it in ASM!
18:41:02 <elliott> Vorpal: not portable, even more work to code generic things
18:41:27 <coppro> ais523: are opinion polls out yet?
18:41:37 <ais523> coppro: I don't think so
18:41:42 <ais523> but I haven't really looked
18:41:43 <elliott> ais523: I'd expect the yes campaign to do that
18:41:49 <elliott> "all first-world countries have a sane voting system!"
18:42:23 <elliott> ais523: ugh @ the yes site, just because bad people vote no on AV doesn't mean it's a good idea (it is, but for better reasons altogether)
18:42:25 <ais523> well, the no campaign seems to be based on two points: a) it's expensive, b) it means that the winner will be chosen by back-room deals between politicians rather than who people actually voted for
18:42:30 <elliott> interestingly, Java-style generics would actually be a good fit for C, but they won't work because sizeof
18:42:41 <elliott> ais523: you forgot c) ONE PERSON ONE VOTE LOL I AM RETARDED
18:42:43 <ais523> as in, do they have a point, or are they just lying in order to try to confuse people?
18:42:47 <ais523> elliott: they didn't list that
18:42:56 <elliott> ais523: that's the "slogan" on their website, IIRC
18:43:12 <elliott> see top-right corner image of http://www.no2av.org/
18:43:32 <ais523> one thing I note about the No campaign is that there's a very strong indication, if not spelt out, of "all sane politicians oppose AV, AV is a Lib Dem conspiracy to let Nick Clegg become dictator!"
18:43:33 <elliott> "The Alternative Vote will be wrong for BRitain and wrong for the Labour Party."
18:43:40 <elliott> hmm, no2av looks like it might get people to actually vote yes :-D
18:44:11 <ais523> it looks strongly targeted at Labour voters, to me
18:44:19 <ais523> and people who voted Lib Dem but regretted the decision
18:44:25 <ais523> unfortunately, that may well be > 50% of the country
18:44:26 <elliott> ais523: I suppose the Tories have already made up their minds
18:44:39 <ais523> I'm not certain they have
18:44:55 <ais523> people who have looked into the maths think that AV would probably be good for the Tories short-term, and bad long-term
18:44:58 <elliott> also, I wonder if most people regret voting for the Lib Dems because they've been spineless, or because they've decided that the current government is TOO LEFT WING?
18:45:04 <elliott> the former is the sane reason, but I fear it might be the latter
18:45:15 <ais523> elliott: because they threw in with the Conservatives
18:45:42 <elliott> (I wouldn't have minded the Coalition if it wasn't effectively the Conservatives governing with the name of the Lib Dems)
18:45:52 <ais523> I'm the other way round, I didn't manage to vote Lib Dem due to a mixup (despite trying), but don't regret the result of the election
18:45:53 <Vorpal> <ais523> coppro: I think the Alternative Vote campaining's starting to start in earnest; the government sent out leaflets explaining what the vote was about, and links to the campaign websites: http://www.yestofairervotes.org/ http://www.no2av.org/ <-- which country?
18:45:53 <Vorpal> ais523, so what is this change really about?
18:45:53 <Vorpal> elliott, ais523: what is the actual suggested change here?
18:45:53 <Vorpal> a saner voting system would be good for UK. But it needs to be saner.
18:46:04 <elliott> all those mesages just came at once
18:46:16 <elliott> <Vorpal> a saner voting system would be good for UK. But it needs to be saner.
18:46:24 <ais523> Vorpal: the suggested change is to replace a first-past-the-post voting system with alternative-vote
18:46:25 <Vorpal> elliott, than your old one
18:46:32 <ais523> AV is definitely saner than FPTP
18:46:34 <Vorpal> elliott, I got your messages in bursts btw
18:46:36 <ais523> because most things are saner than FPTP
18:47:03 <ais523> also, in all the AV elections I've participated in so far (at university), it's been pretty sane for one-person-elected results
18:47:27 <Vorpal> one person elected stuff is where you get into issues
18:47:28 <ais523> I know from personal experience that STV (the generalised version to select more than one seat) is mostly sane, but gets extremely insane in edge cases
18:47:37 <elliott> ROI use IRV for presidential elections
18:47:40 <ais523> never ever try to elect fourteen candidates to twelve places like that
18:47:42 <elliott> quick, let's start the propaganda machine!
18:47:44 <Vorpal> I'm not saying that the Swedish one very good, but it is quite okay
18:48:12 <elliott> ais523: yay for Stochastic votes, the only mathematically sane voting system!
18:48:24 -!- calamari has joined.
18:48:34 <elliott> I hereby propose all 0 #esoteric elections be held with stochastic voting
18:48:42 <elliott> (I'm not sure stochastic voting is quite sane on such a small scale, though :))
18:48:54 <Vorpal> olsner, voting system. It is saner than the old UK one. And than the US one.
18:49:09 <variable> by definition no voting system is good
18:49:09 <ais523> elliott: how does that work? everyone votes, then you choose a result at random?
18:49:20 <elliott> ais523: that's brilliant, but no, and I have definitely told you about it before
18:49:27 <olsner> it's pretty sane I think, everything is excessively sane in sweden... except the government, of course
18:49:39 <elliott> ais523: "In each riding, ballots cast are counted. A random candidate is selected with a distribution proportional to the number of votes for each candidate. The selected candidate wins the seat."
18:49:52 <ais523> ah, that's slightly saner
18:49:55 <ais523> but people will still hate it
18:49:58 <elliott> ais523: this is the only voting system in which the only rational choice is to vote for your preference
18:50:07 <elliott> ais523: people will hate it and it'll never be implemented, but there is no logical reason to hate it
18:50:17 <elliott> it completely eliminates tactical voting and other such nonsense
18:50:25 <coppro> elliott: no it does not
18:50:33 <elliott> coppro: it eliminates tactical voting being _rational_
18:50:42 <variable> elliott: but that doesn't mean the winner we be reflective of the group
18:50:54 <coppro> elliott: no, no it does not
18:50:56 <ais523> coppro: it seems to get around Arrow's Theorem by having a nondeterministic result
18:51:04 <elliott> coppro: are you going to answer why, or are you just going to say it's not?
18:51:23 <coppro> ais523: yes, that I know
18:51:30 <Vorpal> <olsner> it's pretty sane I think, everything is excessively sane in sweden... except the government, of course <-- :D
18:51:35 <ais523> elliott: what about this: /everyone/ voted for is elected, and they make collective decisions by voting themselves, with voting power proportional to the number of people who voted for them
18:51:42 <ais523> actually, that's just Liquid Democracy, isn't it?
18:51:57 <elliott> coppro: that's not an answer, let alone a proof
18:52:11 <variable> http://blog.computationalcomplexity.org/2011/03/unusual-voting-scheme.html
18:52:19 <coppro> any constituency system has the fundamental flaw that a voter may want to vote for a less preferred person in order to get a more preferred overall outcome
18:52:34 <elliott> coppro: all the _individual_ elections are completely fair
18:52:43 <elliott> if you want candidate A in the seat, there is no reason not to vote for candidate A
18:52:48 <elliott> coppro: in this case, you _don't_ want candidate A in the seat
18:53:02 <elliott> your ideal world has candidate A in the seat, but the current world except candidate A in the seat is not a world you want
18:53:18 <elliott> variable: er, that isn't stochastic voting, just so you know
18:53:33 <Vorpal> wait a second. Don't you vote for a party over there?
18:53:36 <Vorpal> do you vote for individuals?
18:53:43 <Vorpal> in Sweden we vote for a party, and then state the preference of a candidate in that party
18:53:50 <elliott> Vorpal: you vote for an individual who's part of a party
18:53:51 <coppro> Vorpal: no, mmp is stupid
18:53:57 <coppro> ais523: and while arrow's theorem doesn't apply due to nondeterminism, it doesn't actually get around it
18:53:58 <Vorpal> which seems to make a lot more sense, than voting for a given person
18:54:09 <elliott> voting for a person is perfectly logical, it's not electing a president or anything
18:54:11 <elliott> it's picking who will represent you
18:54:23 <elliott> variable: what is the relevance
18:54:39 <coppro> ais523: since the algorithm effectively works by picking a dictator at random
18:54:48 <variable> elliott: I know. I just wanted to point out an interesting type of Real Life voting system
18:54:54 <elliott> coppro: ???? no it doesn't
18:55:02 <variable> relevance = talking about voting + voting system
18:55:07 <ais523> Vorpal: current UK voting system: everyone lives in a constituency; you vote for one person who represents the constituency; whoever gets the most votes in a constituency is elected to government
18:55:11 <elliott> you're using the unweighted sense of "random" to make it sound bad
18:55:11 <coppro> elliott: based on vote proportions
18:55:13 <elliott> you're using the unweighted sense of "random" to make it sound bad
18:55:21 <Vorpal> <elliott> Vorpal: you vote for an individual who's part of a party <-- no. We vote for a party. The party has made an ordered list of candidates in the given voting area. You can check one to alter your preference from the top one to that one. Enough checks on a candidate can re-arrange the order of the list.
18:55:32 <ais523> parties don't exist in theory at all, but in practice, each major party suggests someone in each constituency who's more or less forced to toe the party line
18:55:35 <coppro> i.e. picking someone at random and going with their preference
18:55:37 <elliott> Vorpal: no, WE vote for that
18:55:41 <elliott> you as in you-in-our-scheme
18:55:42 <ais523> although occasionally you get "rebellions" where they disobey the party line anyway
18:55:45 <Vorpal> ais523, not at all like the Swedish one then
18:55:52 <elliott> coppro: again, using the different sense of random to make it sound bad
18:56:21 <coppro> elliott: now, you can weight the selection process by, say, square root of votes received
18:56:31 <Vorpal> quoting http://en.wikipedia.org/wiki/Elections_in_Sweden#Voting: "Unlike in many countries where voters chose from a list of candidates or parties, each party in Sweden has separate ballot papers." (and then read on)
18:56:39 <elliott> <coppro> ais523: since the algorithm effectively works by picking a dictator at random
18:56:43 <elliott> all this does is make it sound like the system is
18:56:50 <elliott> >>> random.choice(list_of_candidates)
18:56:55 <elliott> >>> DICTATOR = random.choice(list_of_candidates)
18:57:15 <elliott> both "dictator" and "at random" give the sentence way more emotional content than it should have and makes it read completely wrongly
18:57:18 <ais523> wow, this no-to-AV site contradicts itself
18:57:28 <Vorpal> "The candidates chosen from each party are determined by two factors: the candidate's ranking by their party and the number of preference votes from the voters. Though the parties still entirely control the names on their own party lists, the system gives the voters a degree of power in choosing candidates from the list."
18:57:35 <elliott> ais523: I should start a yes-to-stochastic site, just to make everyone vote for AV
18:57:39 <coppro> >>> DICTATOR = random.choice(list_of_voters)
18:57:46 <Vorpal> elliott, you mean this is the system you aim for?
18:57:47 <coppro> >>> WINNER = DICTATOR.choice
18:57:53 <elliott> coppro: that's not true at all
18:58:08 <coppro> elliott: in the simplest stochastic system, it is
18:58:13 <coppro> as I said, you can ery it more
18:58:14 <Vorpal> <elliott> Vorpal: no, WE vote for that <-- what?
18:58:17 <elliott> coppro: that's not a stochastic system _anyone_ is proposing
18:58:22 <elliott> HERE'S MY VOTING SYSTEMS GUYS HURP DURP
18:58:26 <elliott> >>> WINNER = CANDIDATES[0]
18:58:32 <elliott> THIS IS IDENTICAL TO FIRST-PAST-THE-POST AND ALSO ALL SYSTEMS
18:58:37 <elliott> BUT IT'S STILL THE SAME SYSTEM!!!!!
18:58:40 <elliott> ALL VOTING SYSTEMS ARE UNFAIR
18:59:15 <coppro> elliott: in any case, the system /does/ violate a fundamental tenet of democracy that I feel should be maintained
18:59:40 <coppro> namely, that a sufficiently large majority should get to choose
19:00:07 <ais523> most voting systems violate that in practice
19:00:13 <elliott> coppro: that's incredibly vague
19:00:25 <elliott> and it doesn't violate that tenet at all
19:00:31 <elliott> coppro: what YOU'RE arguing for is literal direct democracy
19:00:41 <elliott> because, if you have representatives, they could vote for something the large majority doesn't want!
19:00:46 <elliott> VIOLATES A FUNDAMENTAL TENET OF DEMOCRACY
19:00:54 <variable> coppro: and one which is fundamentally impossible to have along with the other "democratic" principles (see arrows theorem which has been mentioned before)
19:00:56 <elliott> so if you're proposing completely pure direct democracy...
19:01:00 <elliott> uhh, have fun, I won't be joining you
19:01:00 <ais523> gah, this yes-to-AV site suggests that AV eliminates tactical voting
19:01:15 <ais523> which it doesn't, although it makes it both risky and confusing, which means it'll likely drop in practice to a level low enough to not be significant
19:01:45 <coppro> The ability to successfully vote tactically in practice is very reduced and requires some serious mathematics and accurate opinion polls to work out
19:02:21 <elliott> which means that only geeks will vote tactically and thus control the system!
19:02:33 -!- augur has quit (Remote host closed the connection).
19:02:49 <ais523> coppro: indeed; the correct way to vote tactically under AV is to vote for a party with more extreme views than the party you think is most likely to win but don't want to win first, keeping your other preferences in order, with small probability
19:03:00 <variable> elliott: I just prefer a dictatorship with myself at the helm
19:03:00 <ais523> and I wouldn't want to take that risk
19:03:08 <ais523> also, the situations in which it comes up are kind-of rare
19:03:22 <elliott> dictatorship sounds like too much work
19:03:22 <coppro> variable: yes, I'm familiar with Arrow's theorem, however, there are voting systems that can maintain a majority criterion provided, of course, that you drop the independence of irrelevant alternatives
19:03:29 <elliott> i'd just have people use a mind reading device on me
19:03:35 <elliott> and implement whatever i think is good
19:03:42 <ais523> independence of irrelevant alternatives is pretty useful
19:04:00 <ais523> hmm, which of the criteria does AV fail? it meets IIA, doesn't it?
19:04:08 <coppro> but impossible in any deterministic voting system
19:04:12 <Vorpal> variable, a direct democracy would surely work?
19:04:13 <elliott> ais523: Wikipedia probably has the answers :-P
19:04:19 <coppro> ais523: no, it doesn't meet IIA
19:04:19 <ais523> elliott: indeed, but I'm being lazy
19:04:22 <coppro> in practice, no sane voting system does
19:04:23 <elliott> Vorpal: Uhhhhhhh, define work
19:04:29 <elliott> Direct democracy so does not work in practice
19:04:29 <coppro> because violating the other two are worse
19:04:39 <elliott> Direct democracy gives you a country with no taxes and infinite public services :P
19:04:50 <ais523> coppro: oh right, because an irrelevant alternative could get more first-place votes than the party that eventually wins, and yet more or less no support elsewhere?
19:04:57 <elliott> <ais523> elliott: indeed, but I'm being lazy
19:04:59 <elliott> by trying to think it out yourself?
19:05:12 <ais523> oh, because it can split the vote for the eventual best party in half, causing it to lose in the first round
19:05:18 -!- augur has joined.
19:05:26 <Vorpal> in fact, a direct democracy would be fun
19:05:30 <ais523> elliott: hey, thinking's easier than using the Internet
19:05:34 <Vorpal> time consuming however
19:05:37 <variable> Vorpal: you end up with rational ignorance and tyranny of the majority (ok - not a necc. a mathematical argument - but an important one to)
19:05:43 <elliott> `addquote <ais523> elliott: hey, thinking's easier than using the Internet
19:05:47 <HackEgo> 350) <ais523> elliott: hey, thinking's easier than using the Internet
19:06:04 <Vorpal> variable, you mean like in Switzerland and the Minaret ban?
19:06:24 <elliott> Switzerland isn't totally direct-democracy.
19:06:42 <variable> Vorpal: I only read about that in passing - but yeah
19:07:25 <coppro> ais523: the alternatives to failing IIA are failing the unanimity criterion or a dictator
19:08:46 <ais523> aren't there four criteria, any one of which can be broken?
19:08:50 <ais523> oh, the other one's always producing a result
19:09:23 <ais523> I think Condorcet fails that one, and meets the other three
19:09:34 <ais523> which is a really interesting combo
19:09:40 <variable> Vorpal: ToM is roughly: "when the controlling members of a voting system vote against the non-controlling members in a way which affords no positive to either side" some would extend that to "in a way which affords to positive to the non-controlling side"
19:09:41 <ais523> especially as it often does produce a result
19:09:43 <Vorpal> variable, you risk that with too anyway. Weather-wane politics to keep the power.
19:09:43 <Vorpal> Less likely yes but still a risk
19:09:43 <variable> Rational Ignorance is: "I don't care about this issue either way - so I won't vote" and thus leads to a minority controlling
19:09:55 <variable> Vorpal: imagine a law giving $100 to every person in new york and taking that from idaho's budget. all the people outside of those two states would not vote (they are rationally ignorant) and NY would win with a bad law (taking money from other people without reason) because of a minority of a total voters)
19:10:04 <elliott> ais523: hmm, I bet there are voting systems like "Condorcet, and if it doesn't work, tweak and repeat"
19:10:20 <ais523> there are quite a few condorcet-and-tiebreak systems
19:10:22 <elliott> the tweaking part being the thing that breaks a different criterion, obviously
19:10:41 <ais523> tweak-and-repeat's an interesting way to do things, though
19:11:02 <Vorpal> <elliott> Switzerland isn't totally direct-democracy. <-- indeed. But in this specific case, that was the aspect that mattered.
19:11:15 <variable> elliott: some ideas I have seen are basically threshold + rotate: everyone votes one person from a pool of nominies. If they get at least X% of the vote they get to be in charge for L amount of time after which the next one takes over
19:11:24 <variable> once they all rotate - new elections
19:11:25 <elliott> ais523: Condorcet, and if it produces no result, remove the least popular candidate, and reassign all votes for that candidate to the candidate just above it in poopularity (where popularity is measured by the sum of 1/ranking over all votes for them, or something), then repeat
19:11:50 <ais523> elliott: Condorcet takes rankings as an input
19:11:58 <elliott> ais523: oh, and this does mean that if you vote (3, X) and (4, Y) and Y gets knocked off, then you'll vote (3, X) and (4, X) which is impossible normally
19:12:01 <elliott> ais523: I accounted for that
19:12:15 <elliott> ais523: that system i just invented probably already exists, anyway :)
19:12:16 <ais523> but it only compares pairwise
19:12:38 <elliott> ais523: create a mapping of candidate->popularity, where popularity = sum1/ranking for all votes for candidate
19:12:44 <elliott> where ranking is the ranking the candidate was at
19:13:03 <elliott> ais523: pick the candidate with the least popularity; change all votes for (ranking,candidate) into (ranking,candidate2), where candidate2 is the second-least candidate by popularity
19:13:12 <ais523> no, the way Condorcet works is for any two candidates, a > b if more people put a above b than put b above a, now tsort the results and see who ends up first
19:13:13 <Vorpal> <variable> <quintopia> gregor! ???????
19:13:20 <ais523> it doesn't produce a result because sometimes you have cycles
19:13:21 <Gregor> quintopia, variable, Vorpal: ???
19:13:22 <quintopia> variable: that is how i go about getting people's attention
19:13:26 <elliott> ais523: note: if you have (3,X) and (4,Y) and Y gets knocked off and X is candidate2, this turns into (3,X) and (4,X), but that's okay
19:13:30 <Vorpal> Gregor, I have no clue
19:13:32 <ais523> so how do you define "least popularity"?
19:13:37 <variable> quintopia: typically prefixed with a "ping" on IRC :-\
19:13:38 <elliott> ais523: you use the ranking pairs directly
19:13:47 <ais523> I think that probably does have a name
19:14:02 <quintopia> variable: maybe that is a freenode tradition, but i shun and eschew tradition
19:14:30 <elliott> ais523: yes; possibly it doesn't make the decision to turn (3,worst-candidate-but-one) and (4,worst-candidate) into (3,worst-candidate-but-one) and (3,worst-candidate-but-one)
19:14:35 <elliott> ais523: (I imagine it might just drop the latter vote)
19:16:15 -!- tswettbot has joined.
19:16:24 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
19:16:52 <tswett> Okay, I think I know what's going on. I'm telling it to connect, but the object holding the connection is instantly garbage collected, since I'm not doing anything with it.
19:16:52 <elliott> ais523: aargh, one day I'm going to kill G. for introducing "moron in a hurry"
19:17:17 <pumpkin> oh shit, is it going to talk to us about the weather then?
19:17:18 <elliott> tswett: are you using the destructor to close the connection or something?
19:17:24 <elliott> if so, that's probably a bad idea :)
19:17:31 <elliott> and I think smalltalks are mark-and-sweep usually, not refcounted
19:17:36 <elliott> so I very much doubt it's freed instantly
19:17:40 <elliott> or, rather, they're anything but refcounting
19:17:49 -!- Phantom_Hoover has joined.
19:17:54 <tswett> I'm not telling it to close the connection at all.
19:18:15 <ais523> is source available? or is it written in the sort of Smalltalk where source doesn't really exist, only objects?
19:18:19 <tswett> All I know is that if I don't do something with the object, tswettbot doesn't show up here.
19:18:32 <tswett> ais523: I could "file out" the package, which might produce readable source code.
19:19:31 <elliott> ais523: You could have just asked "Is it written in GNU Smalltalk?"
19:19:40 <elliott> Anyway, Smalltalk projects are usually shared with Monticello, the language-aware VCS.
19:19:51 <elliott> In Squeak, at least, and IIRC it runs on the popular commercial systems too.
19:20:12 <tswett> Anyway, Smalltalk's GUI and expressions you evaluate manually apparently do not use separate threads automatically. So, since this expression will continue evaluating until tswettbot disconnects, I don't get to use the GUI for a while. :P
19:20:15 <ais523> elliott: I think I went to some effort to make sure that in Feather, source really did always exist
19:20:36 -!- tswettbot has quit (Ping timeout: 252 seconds).
19:20:38 <tswett> tswettbot should be out of here in just a mom--yep.
19:24:20 <tswett> The file-out was successful, but I have no idea where the file is. :P
19:25:12 <tswett> Here it is. It's inside the application package.
19:25:32 <elliott> THIS IS WHAT YOU GET FOR USING OS X
19:25:50 <tswett> Alas, this file is CR-delimited.
19:28:42 <tswett> It uses CR to denote a line break.
19:28:47 <tswett> There are no LFs anywhere.
19:28:58 <Vorpal> is that like comma-separated, with LF between lines and CR between fields?
19:29:08 <Vorpal> which would by the way be a nice file format
19:29:25 <Vorpal> tswett, classic mac os?
19:29:27 <ais523> wouldn't using tabs between fields make more sense?
19:29:36 <ais523> for bonus points, EBCDIC has LF, CR, /and/ NL
19:29:48 <Vorpal> I thought OS X didn't use CR any more
19:29:56 <ais523> btw, do you know the original reason both LF and CR were created?
19:29:58 <elliott> ebdiebdciebdeibcidebciebdiebcidbeicbiecicd
19:30:08 <Vorpal> ais523, what did NL do?
19:30:12 <ais523> Vorpal: newline, of course
19:30:22 <tswett> Vorpal: that's certainly not what I'm *using*. I guess this Smalltalk format just happens to use CR for lines.
19:30:31 <Vorpal> ais523, but how was it used
19:30:33 <ais523> the BCD stands for binary-coded-decimal, it's easier to spell if you know that
19:30:39 <tswett> If OS X still used just CR for line breaks, nothing would work. :)
19:30:40 <Vorpal> ais523, as compared to how CR and LF were used
19:31:12 <elliott> are you implying OS X works, tswett?
19:31:22 <tswett> elliott: no, I'm implying that *some* of it works.
19:31:29 <elliott> hmm well that might be true, mathematically
19:31:33 <elliott> depending on the definition of works
19:31:52 <tswett> For example, I can use the TextEdit application to create a plain text file, open up the Terminal application, cat the file (if I can find it), and boom, it's the file I entered into TextEdit.
19:32:30 <elliott> tswett: doesn't textedit use rtf even if you just type plain text, by default
19:33:17 <elliott> I guess it's the file you entered into TextEdit, i.e. literally the file
19:33:21 <elliott> just not the text you entered into TextEdit :-D
19:33:32 <elliott> although i don't think the terminal distinguishes \n from \r\n
19:33:40 <elliott> and it probably decodes any utf-8 sequences
19:33:41 <tswett> Okay, okay, I have to use some menu options to make that work. :P
19:33:42 <elliott> so it's not even the same file!
19:33:53 <elliott> tswett: that doesn't work if you don't have a mouse!!!
19:33:59 <tswett> Here's what the file-out of my Smalltalk looks like: http://pastebin.com/yi34NaBs
19:34:08 <tswett> elliott: I don't have a mouse. It works just fine.
19:34:29 <elliott> tswett: a pointing device, then
19:34:32 <tswett> You can almost read that file-out.
19:34:45 <elliott> oh dear, wiktionary has lojban
19:34:52 <tswett> It's delimited by exclamation marks, apparently.
19:35:06 <tswett> It's mostly readable, but I have no idea what "]style[(45)f1!" means.
19:35:09 <elliott> apparently zbasu was formed by finding out what the word is in a bunch of other languages, then taking letters at random
19:35:25 <elliott> tswett: "TannerSwett" -- your smalltalk name is meant to be your initials, IIRC
19:35:37 <elliott> nextPutAll: 'USER ', nick, ' * * :', nick; crlf;
19:35:37 <elliott> second parameter is mode, not *
19:35:55 <elliott> also classify your methods >:()
19:35:57 <tswett> No, they weren't taken at random. They used a very sophisticated and specialized PRNG.
19:36:18 <elliott> tswett: also also, you probably don't want an accessor for the stream
19:36:20 <elliott> or at least not a /setter/
19:36:32 <tswett> I thought the second and third parameters were the hostname and server.
19:36:56 <tswett> Oh. So you're saying the second parameter should be the number 8?
19:37:08 <elliott> Or any other mode bitmask (there are only two bits you can set that are RFC-defined)
19:37:10 <tswett> And yeah, I'll classify my methods once I figure out what classification they should go in. :P
19:37:16 <elliott> IIRC that sets invisible and disables wallops
19:37:21 <elliott> invisible is forced on freenode anyway
19:37:24 <elliott> and a bot can't do anything useful with wallops
19:37:38 <tswett> And yeah, I don't want a setter on stream.
19:37:46 <elliott> tswett: Or arguably an accessor.
19:37:53 <tswett> The getter should probably go, too, eventually.
19:37:55 <elliott> Unless there's a reason for arbitrary other classes to be writing to the socket.
19:38:01 <elliott> You could just have a writeIRCLine: method or something.
19:38:19 <tswett> I should be using instVarAt: when I really need to access it manually for some strange reason.
19:38:46 <tswett> Or the object browser. :P
19:38:55 <elliott> tswett: You should write a working SmallNomic to motivate me to go back to mine :-D
19:39:04 <tswett> That's what I'm working on.
19:39:14 <tswett> Step one is obviously to write an IRC bot.
19:39:24 <elliott> tswett: Damn. Then stop so I don't feel pressure when writing mine.
19:39:51 <elliott> tswett: I would totally tell you the one thing something can't be called a Smalltalk nomic without, but you'd just STEAL IT if you haven't already and I CANNOT ABIDE BY THAT.
19:40:40 <tswett> I already have a bunch of ideas. Like, make the nomic scriptable with Lua.
19:40:51 <elliott> tswett: Was... Smalltalk not good enough?
19:41:03 <tswett> NO LANGUAGE IS GOOD ENOUGH!
19:41:21 <elliott> tswett: The Thing It Must Have is the ability to modify any core class, not just "Nomic-owned" ones, so that the nomic can even modify the programming language it's written in.
19:41:24 <tswett> Seriously, I've never found a programming language with both persistence and sandboxing. So I'm using Smalltalk for persistence and Lua for sandboxing.
19:41:28 <elliott> Ostensibly this would produce the GREATEST
19:41:33 <elliott> tswett: You don't NEED sandboxing...
19:41:42 <elliott> Apart from, like, running it in a chroot.
19:41:44 <tswett> Yes, but it makes things much nicer, doesn't it?
19:41:50 <tswett> Imagine a MOO that doesn't have sandboxing.
19:41:51 <elliott> It restricts what the nomic can do.
19:42:01 <elliott> tswett: Is it meant to be a nomic or a MOO?
19:42:05 <tswett> No, not that kind of sandboxing. Allow the nomic to sandbox the code that users put into it.
19:42:13 <elliott> (It can't be both; it can only be a nomic with a MOO subgame.)
19:42:19 <tswett> Okay, a nomic with a MOO subgame.
19:42:19 <elliott> <tswett> No, not that kind of sandboxing. Allow the nomic to sandbox the code that users put into it.
19:42:22 <elliott> That's the kind of sandboxing I meant.
19:42:40 <tswett> That's so well-integrated that it becomes a moomic.
19:42:42 <elliott> tswett: The MOO should obviously be in Smalltalk :)
19:42:48 <elliott> Mostly because Smalltalk is pretty well suited to writing nomics.
19:42:59 <elliott> Mostly because Smalltalk is pretty well suited to writing MOOs.
19:43:05 <elliott> (Because of the message-passing paradigm.)
19:43:21 <tswett> So how does the sandboxing I mentioned restrict what the nomic can do?
19:43:31 <elliott> I thought you meant sandboxing proposals themselves and the like.
19:43:58 <tswett> Let people upload code and run it without asking anyone for permission. Naturally, that requires sandboxing.
19:44:01 <elliott> tswett: Also also, you may not have a JS-based class browser proposal creation interface, because that's SmallNomic patented :P
19:44:26 * tswett writes the most ingenious code ever: [(Delay forSeconds: 5) wait] fork
19:44:36 <elliott> Wow! It does nothing, in the background!
19:44:52 <elliott> tswett: Anyway if you were a REAL programmer you'd do it in Self.
19:45:36 <tswett> I wonder how forkAndWait could possibly be useful. It provides threading, but only allows one thread to run at once.
19:46:00 <tswett> Yep. You can [(Delay forSeconds: 5) wait] forkAndWait.
19:46:00 <elliott> Anyway, it'll only wait on it in the current thread.
19:46:07 <elliott> But you could also just call the block.
19:46:17 <elliott> tswett: Why not check out its code/comments?
19:46:41 <tswett> I did. It says, "Suspend current process and execute self in new process, when it completes resume current process".
19:48:45 <tswett> Huh, there are these things called ProcessSpecificVariables.
19:48:58 <tswett> I guess which process you're in sometimes matters.
19:49:01 <elliott> Just put it in an object :P
19:49:13 <Vorpal> tswett, to protect some sort of thread state perhaps? If smalltalk has anything such
19:49:13 <Vorpal> like thread local variables or whatever.
19:49:22 <elliott> What's wrong with using an object
19:49:58 <Vorpal> elliott, Nothing I assume. I was just trying to give a suggestion for what might be the reason behind it
19:50:25 <Vorpal> I don't know smalltalk :P
19:50:31 <Vorpal> well I know a few basic things
19:50:52 <elliott> grr, the worst thing with the
19:50:53 -!- Mannerisky has quit (Ping timeout: 246 seconds).
19:51:05 <elliott> thing is that you can't have functions that operate on the stack
19:51:12 <elliott> without passing two params)
19:51:19 <Vorpal> <elliott> int stack_ptr = -1; <-- aieee!
19:51:19 <tswett> Now to ponder how things are going to send and receive IRC messages.
19:51:22 <Vorpal> elliott, needs to be long
19:51:27 <Vorpal> or even better unsigned long
19:51:40 <elliott> tswett: surely the bot should do that itself
19:51:58 <elliott> Vorpal: why, it's size-limited
19:52:19 <Vorpal> elliott, they why not a short?
19:52:19 <elliott> which i believe always fits in an int.
19:52:29 <elliott> Vorpal: oh eff off... and a signed short can't store that
19:52:55 <elliott> and -1 is to denote "empty stack"
19:53:04 <Vorpal> elliott, use int_least32_t or whatever the type is
19:53:25 <Vorpal> elliott, anyway I have worked on system where int was 16-bit
19:53:33 -!- pumpkin has quit (Ping timeout: 250 seconds).
19:54:18 <Vorpal> elliott, yes it is. It was freestanding however.
19:54:28 <Vorpal> elliott, but please point me to the paragraph that says int must be at least 32 bits
19:55:04 <elliott> hmm, seems int has to store at least +-32767
19:55:31 <Vorpal> — maximum value for an object of type int
19:55:31 <Vorpal> elliott, this is from C99
19:55:35 <Vorpal> but I doubt it would change it radically from C90
19:56:57 <Vorpal> elliott, long must be at least 32 bits
19:56:57 <Vorpal> elliott, this is in 5.2.4.2.1 §1
19:57:04 <elliott> Vorpal: i'm not talking to you until you stop lagging
19:57:09 <Vorpal> elliott, that was 2^15
19:57:09 <elliott> anyway there is only one solution
19:57:16 <elliott> char ptr[sizeof(STACK_SIZE)];
19:57:24 <Vorpal> elliott, and it is you who is lagging from my POV
19:57:30 <Vorpal> elliott, I think freenode is under attack
19:57:33 <elliott> actually i dunno if sizeof(234234) works
19:57:40 <Vorpal> elliott, because I have <0.1s lag to server
19:57:43 <elliott> it might sizeof the overflowed int
19:57:50 <elliott> Vorpal: under attack AND YET
19:57:53 <elliott> nobody but you is having troubles!
19:58:07 <Vorpal> elliott, I have no problems on other irc networks
19:58:18 <elliott> yes. clearly freenode's problem just for you.
19:58:25 <Vorpal> I could try reconnecting to another server except it would be a PITA
19:58:32 <elliott> yes, it would take whole keystrokes
19:58:37 <Vorpal> elliott, have you looked in larger channels
19:58:45 <Vorpal> elliott, no it would take minutes to rejoin channels :P
19:58:53 <elliott> #ubuntu looks perfectly fine to me
19:59:01 <Vorpal> elliott, there are lag spikes
19:59:12 <elliott> and also, nobody else in here is whining but that's likely more a result of you being whiny than everyone else not having problems
19:59:20 -!- copumpkin has joined.
19:59:23 <elliott> now if you'll excuse me, I'll go back to whining about C
19:59:26 -!- copumpkin has quit (Changing host).
19:59:26 -!- copumpkin has joined.
19:59:27 <Vorpal> elliott, I'm not whining. You are.
19:59:39 <elliott> freenode fail, i think freenode is under attack
19:59:42 <elliott> because i have no problems with other servers
19:59:46 <olsner> Vorpal: stop whining about who's whining
20:00:02 <Vorpal> elliott, no. Because I saw that mentioned in another channel
20:00:25 <Vorpal> elliott, yep. I trust that guy more than current staff.
20:00:28 <elliott> anyway since freenode are incompetent i don't see why they'd get the facts right
20:00:33 <elliott> presumably his sources are inside freenode
20:01:00 <elliott> it's strange, you'd expect competence to go UP after lilo [REST OF SENTENCE REDACTED DUE TO EXTREME BAD TASTE]
20:01:27 <elliott> ooh, netclock looks like fun
20:01:43 <Vorpal> ais523, lilo the founder of freenode
20:02:16 <elliott> i think the biggest channel i've ever seen was the "say the same RIP that everyone else has already said five times about lilo" channel
20:02:31 <elliott> they turned on +m every now and then and when it came off about 100 messages a second came in
20:02:50 <Vorpal> ais523, died in a car accident. The driver did a runaway or whatever the English word is.
20:03:06 <elliott> specifically a car/bicycle accident
20:03:12 <elliott> a car accident to me implies he was in a car
20:03:20 <elliott> and doesn't actually implicate another car at all necessarily
20:03:56 <Vorpal> ais523, ah yes that's it
20:04:18 <Vorpal> elliott, he was a pedestrian.
20:04:33 <elliott> On September 12, 2006, he was struck by a car while riding a bicycle at night in Houston, Texas in a hit-and-run collision. After the collision, it was reported that he was hospitalized for several days. He died on September 16.
20:04:42 <elliott> went into a coma, I believe
20:06:02 <elliott> ais523: I wonder if anyone's just used C with Templates
20:06:59 <ais523> if for each C++ feature, there was a C-like language which was identical for C except with that feature
20:07:09 <ais523> I wonder how many of the resulting languages would be used?
20:08:23 <elliott> C with Different Casting Rules
20:08:37 <ais523> C with More Specific Casts?
20:08:52 <elliott> f(x); /* x won't be casted to (void *) in C++ */
20:08:54 <elliott> you have to do it explicitly
20:09:02 <olsner> C with Templates sounds pretty neat
20:09:03 <elliott> (no matter what the signature of f or x is)
20:09:11 <elliott> C with Long Compilation Times
20:09:47 <tswett> C with Hindley-Milner type inference and implicit closures.
20:10:27 <elliott> it has type inference, not H-M though :)
20:10:33 <elliott> maybe the lambdas end up mandating it :-D
20:10:45 <elliott> although you can't declare a function with auto params
20:10:54 <elliott> gah, why isn't there a type that can hold any other type in C :-D
20:11:05 <elliott> because (void *) can point to anything
20:11:33 <tswett> Because nobody would know how big it is.
20:11:46 <elliott> sure you would, there's a limit because C implementations can't be TC by the standard
20:11:53 <elliott> they can't be TC in the sense that objects can be infinite
20:12:10 <tswett> How many senses of TC are there?
20:12:26 <elliott> I mean that hosted C89 is probably TC
20:12:31 <elliott> but it still can't have arbitrarily-sized objects
20:12:49 <elliott> it is probably TC with file IO, etc.
20:13:03 <tswett> Just use a recursive struct. That will obviously solve the problem.
20:13:16 <elliott> that would be awesome if you could do it :D
20:13:27 <elliott> struct infinite_array rest;
20:13:35 <elliott> can only be fully addressed in unary
20:13:44 <tswett> Yeah. There are no problems with that.
20:13:54 <elliott> (array N ->value) accesses the Nth value
20:13:57 <tswett> Eh, just use pointer arithmetic.
20:14:08 <elliott> where zero is the null string, and SN is .valueN
20:14:16 <elliott> tswett: pointers can only be of finite size
20:14:20 <elliott> so that can't address the thing fully
20:14:29 <elliott> in fact, you can't even do &infarray
20:14:33 <elliott> because pigeonhole principle
20:14:46 <tswett> If infinite_array is viable, so are arbitrarily large pointers. :P
20:14:57 <elliott> sizeof(ptr) has to be finite
20:15:14 <tswett> Yes, but so does sizeof(infinite_array), no?
20:15:15 <elliott> because char has to be finitely-sized in hosted implementations because of CHAR_BIT
20:15:27 <elliott> sizeof should return a float
20:15:30 <elliott> so you can just return +inf
20:15:38 <tswett> sizeof should return a cardinal number, so you can just return aleph_0.
20:15:49 <elliott> then you could implement turkey bomb too
20:16:23 <tswett> Now, suppose you have a type like this: struct infinite_tree { bit value; struct infinite_tree left; struct infinite_array right; };
20:16:51 <tswett> The pointers required to address all of those things will have the order type x where x = 1 + x + x.
20:17:12 <tswett> Rational numbers work perfectly well for that.
20:17:51 <tswett> tree is at position 1. tree.left and tree.right are at positions 2 and 3. tree.left.left and tree.left.right are at positions 2 1/2 and 2 2/3.
20:17:56 <elliott> so you should have char value;
20:18:10 <tswett> I was just copying you. You copycat.
20:18:31 <elliott> hey maybe i should write an irc bot in idst
20:19:05 <tswett> elliott, I think we have the potential to develop a great synergy. We can really leverage this.
20:19:28 <elliott> Yeah, she can really be leveraged hur hur
20:20:04 <tswett> No, the synergy. We can leverage the synergy to develop solutions.
20:20:57 <elliott> tswett: But can we do the needful?
20:21:26 <tswett> elliott: think outside the box. Push the envelope.
20:21:54 <elliott> Be humanistically synergised.
20:22:06 <elliott> (What is even the going on.)
20:22:41 <elliott> yay, cola has been modified recently
20:23:03 <tswett> With our humanistically collaborative synergy utilized, we can open new windows to... I have no idea what I'm talking about, so I'll talk about something else.
20:23:14 <tswett> What I want to do, I guess, is take this stream of characters and turn it into a stream of lines.
20:23:53 <cheater99> http://www.youtube.com/watch?v=VxidKnDXwd4
20:25:13 <elliott> <tswett> What I want to do, I guess, is take this stream of characters and turn it into a stream of lines.
20:25:55 <tswett> What I want is nextLine. :P
20:26:02 <elliott> /home/elliott/idst/object/st80/_object.st:50: WARNING: redefining _sizeof can break object allocation; check _sizeof carefully in all subtypes
20:26:29 <elliott> Gregor: It's part of the primitive object code :P
20:26:48 <elliott> I think that messages implies that EVERY OBJECT should check _sizeof carefully, though, which is hilarious :P
20:27:05 <elliott> tswett: You see, cola is also a better choice for a nomic because you can even edit the structure of a very object from inside!
20:27:11 <elliott> NOMICS WILL WANT TO DO THAT
20:27:27 <tswett> I've heard of cola bottle babies, but I don't know that.
20:27:27 <Gregor> Competition for Plof :P
20:27:28 <elliott> http://piumarta.com/software/cola/ The successor to Smalltalk :P
20:27:42 <elliott> In that Alan Kay runs the VPRI, and cola is the VPRI's project.
20:27:48 <elliott> Gregor: Competition to @ too, it just isn't at that stage yet :P
20:27:59 <elliott> tswett: (1) Completely describes itself in itself.
20:27:59 <tswett> "cola (aka Idst, Jolt, the SODA languages, &c.) is an ongoing project to create a springboard for investigating new computing paradigms." Drat, I should have used "springboard" and "paradigm" up there.
20:28:03 <elliott> tswett: (2) Is completely implemented in itself.
20:28:11 <elliott> tswett: (3) Late-binds, and therefore lets you change, EVERYTHING.
20:28:20 <elliott> Including how objects look in memory.
20:28:20 <tswett> elliott: do you think we can leverage our synergy to create springboards for new solution paradigms?
20:28:37 <elliott> ais523: Can I pay you to bring back PerlNomic?
20:28:54 <elliott> rm -f CodeGenerator-local.st
20:28:55 <elliott> cp -p CodeGenerator-x86_64.st CodeGenerator-local.st
20:28:55 <elliott> cp: cannot stat `CodeGenerator-x86_64.st': No such file or directory
20:28:58 <elliott> THIS ARCHITECTURE DOES NOT FEEL SUPPORTED
20:29:05 <ais523> elliott: if you pay me rent for an appropriate VPS, perhaps
20:29:13 <elliott> No wait, there's no CodeGenerator anything.
20:29:18 <Gregor> C nomic in the form of a self-compiling C compiler: Best idea?
20:29:18 <elliott> ais523: I already have a VPS X-D
20:29:26 <elliott> Gregor: Either that, or worst idea :P
20:29:35 <Gregor> elliott: Aren't they the same?
20:29:47 <elliott> right, there's only ppc and i386 and arm code generators
20:30:00 <tswett> Dudes, sandboxing is the most important possible codenomic feature.
20:30:12 <elliott> tswett: No, it's the most important possible MOO feature :P
20:30:15 <tswett> Self-modification is utterly unimportant compared to sandboxing.
20:30:37 <elliott> Let's turn Agora into a game of Chess.
20:30:47 <elliott> "This proposal removes proposals."
20:30:51 <tswett> "Checkmate." "Okay, I... uh..."
20:30:52 -!- augur has quit (Read error: Connection reset by peer).
20:30:57 <Gregor> elliott: BTW, do you know any reason why LXC (lxc.sf.net) plus a non-shitty FUSE unionFS wouldn't be a complete replacement for plash, but more maintainable?
20:31:07 <tswett> "I call for judgement on the statement 'It is possible to call for judgements.'" "FALSE." "Drat."
20:31:10 <Gregor> The observation makes me almost want to write a non-shitty FUSE union FS ...
20:31:10 -!- augur_ has joined.
20:31:15 <elliott> Gregor: lxc depends on cgroups, which I don't like.
20:31:19 <elliott> And I don't think BFS supports.
20:31:26 <elliott> OTOH, I like the idea of cunionfs.
20:31:40 <elliott> So on one hand, I don't want you to switch to that system, but on another, I want cunionfs.
20:32:09 <tswett> elliott: would you happen to know if it's possible to take a stream in Smalltalk and split it into two streams, each producing the same data when read?
20:32:18 <elliott> tswett: Why do you want to do that ...
20:32:29 <Gregor> elliott: Well, the alternative is to carve out the part of plash that depends on glibc and swap it out for a FUSE union FS.
20:32:34 <tswett> So that if something wants to listen to the stream, you can just hand it a stream.
20:32:38 <tswett> Maybe that's not the way to do this.
20:32:47 <elliott> Gregor: That would work, but also sounds fairly pointless :P
20:32:53 <elliott> Gregor: But it would give me what I want :P
20:33:04 <elliott> Gregor: I would suggest writing it as an actual kernel module for lower latency though >_>
20:33:51 <elliott> cola totally needs to use a build system written in cola.
20:34:03 <tswett> Ooh, I just got the BEST IDEA.
20:34:15 <Gregor> elliott: The advantages of FUSE are: 1) The only root part is still just a program to do the chroot/setuid, and 2) I don't have to worry about enforcing permissions other than the ones requested :P
20:34:36 <tswett> We should have a bunch of codenomics in Smalltalk. Each codenomic should periodically pick a random class name, and copy that class out from another codenomic to itself.
20:34:42 <elliott> Gregor: Well, Kitten would kinda want to use a cunionfs / :P
20:35:02 <Gregor> elliott: Yeah, SPS wanted a cunionfs /usr :P
20:35:17 <tswett> So, Cola is completely self-describing. Does that mean that from the inside, the system looks as if it's interpreting itself?
20:35:26 <elliott> Gregor: And FUSE for that sounds ... un-nice.
20:35:35 <elliott> tswett: And it doesn't just LOOK like it, it IS.
20:35:40 <elliott> Cola's compiler is written in Cola :P
20:35:45 <Gregor> Sun Microsystems introduced the first implementation of a stacked, layered file system with copy-on-write, whiteouts (hiding files in lower layers from higher layers), etc. as the Translucent File Service in SunOS 3, circa 1986.[4]
20:35:59 <elliott> I believe there's still a "runtime" in C, but as described in their paper,
20:36:05 <elliott> the runtime doesn't define or control the object model.
20:36:11 <tswett> elliott: okay, so... it's a lot like Smalltalk, isn't it.
20:36:11 <elliott> http://piumarta.com/software/cola/objmodel2.pdf
20:36:22 <elliott> tswett: It's like Smalltalk, except not failing at its goals.
20:36:40 <elliott> tswett: Remember, this project is by Alan Kay's company, and I'm assuming you know who he is :P
20:36:41 * tswett opens up a typing practice program, and is asked to type "anesthetist house distensions nooned unstated outsets standouts nineteenths . . ."
20:36:54 <elliott> Smalltalk defines a rigid in-memory layout to all its objects.
20:36:56 <tswett> I think this program's estimate of my typing speed is going to be... inaccurate.
20:37:00 <elliott> That cannot be changed at all.
20:37:05 <tswett> Alan Kay. He's that guy who sounds like LNK.
20:37:12 <elliott> tswett: He's the guy who invented Smalltalk >_<
20:38:38 <elliott> stupidest named target ever
20:38:46 <elliott> hmm, there looks to be 64-bit support too but i guess it sucks
20:38:54 <Gregor> Maybe the builtin UnionFS is actually sufficient by now ...
20:39:15 <Gregor> OHWAITNOBLEH the whole issue is that I need to make sure it has /host user/ permissions, not /guest user/ permissions
20:39:32 <elliott> tswett: Also "However, I am no big fan of Smalltalk either, even though it compares very favourably with most programming systems today (I don’t like any of them, and I don’t think any of them are suitable for the real programming problems of today, whether for systems or for end-users)." --Alan Kay :P
20:39:43 <elliott> cola is basically meant to fix the fact that Smalltalk doesn't late-bind EVERYTHING.
20:39:53 <elliott> By doing so, it ends up being completely self-reflective and self-implemented.
20:40:30 <elliott> Gregor: I think FreeBSD jails might work for you, btw
20:40:35 <elliott> Gregor: (prgmr can do BSD :P)
20:40:36 <Gregor> elliott: Yes, they would.
20:40:48 <Gregor> elliott: prgmr can do NET
20:40:55 <Gregor> They might be Freeable but Idonno.
20:40:57 <elliott> Gregor: It can do anything Xen can.
20:41:11 <elliott> Gregor: There are sites with loads of howto-do-OS-blah-on-Xen things.
20:41:24 <Gregor> Well, what I mean is that there exist instructions on how to install NetBSD within an existing Linux without momentarily breaking out of Xen to start an install :P
20:41:43 <tswett> "Testates"? What does that word mean?
20:41:45 <elliott> Gregor: You could use the updated depenguinator :P
20:42:03 <elliott> Gregor: http://www.daemonology.net/blog/2008-01-29-depenguinator-2.0.html
20:42:11 <elliott> But it doesn't have Xen-specific things :P
20:42:33 <elliott> Gregor: 2008-01, updated enough for me
20:42:39 <Gregor> Frankly if I switched to FreeBSD, it would be Debian GNU/kFreeBSD. My experience with the FreeBSD userland has been "OH GOD WHY"
20:43:11 <elliott> Gregor sees a nasty userland and thinks "hey, GNU would be so much nicer" :-P
20:43:25 <elliott> FreeBSD is all "OH GOD WHY"
20:43:30 <elliott> But with GNU it's all "OH GOD WHY STOP BURNING MY CHILDREN"
20:43:33 <elliott> and I'm an extreme masochist.
20:43:41 <Gregor> No matter what your silly opinion is, GNU currently has the best console tools that exist.
20:43:56 <Gregor> (My silly opinion :P )
20:44:12 <elliott> There are plenty of tools better than GNU's, they're just not in convenient packages :P
20:44:26 <Gregor> OK, let me make a more concrete statement:
20:44:38 <elliott> "Every non-GNU program sux"
20:44:39 <Gregor> Nearly every GNU userland tool is better than its FreeBSD equivalent.
20:44:48 <elliott> What? I can't troll that statement.
20:45:05 <elliott> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libreadline.so when searching for -lreadline
20:45:05 <elliott> /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libreadline.a when searching for -lreadline
20:45:31 <elliott> I wish distros had competent multiple-architecture support that used qemu.
20:45:43 <elliott> Then a sane 32-bit environment would just be s/qemu-x86_64/linux32/
20:47:04 <tswett> "Done with lesson 2! You typed 100 words in approximately 10 minutes."
20:47:20 <elliott> Are you really that terrible?
20:47:58 <Gregor> Can mount --bind be -o ro?
20:48:41 <tswett> elliott: only with Dvorak.
20:48:52 <elliott> [~/gregorsucks]% sudo mount --bind -o ro a b 1
20:48:52 <elliott> mount: warning: b seems to be mounted read-write.
20:49:00 <tswett> I'm using ten letters of the alphabet to type words that are, on average, ten letters long. Double that to get my actual typing speed with those ten letters.
20:49:08 <elliott> [~/gregorsucks]% echo hello >b/b
20:49:21 <Gregor> My usual plash setup isn't actually unioning anything :P
20:49:22 <tswett> Assuming that a word is actually five letters long on average and spaces take no time to type.
20:49:44 <tswett> elliott: how would you have lots of things listening to one stream?
20:49:51 <elliott> tswett: Why would you have that?
20:50:02 <elliott> I would have the bot read each line, then give it to everyone who's said they want to listen to lines. Possibly in threads.
20:51:13 <elliott> tswett: Rule of thumb: Objects should be the only point of access to their members'... "features" :P
20:51:26 <elliott> In this case, "getting lines from IRC".
20:51:32 <elliott> And the object is the bot connection object.
20:51:54 <elliott> "I have some ideas for a website but I don't have any skills in the realm of web development. Is there a site I can submit an idea to that will uphold my potential rights and ensure that no one implements my idea without consulting me first?"
20:52:04 <elliott> And I thought copyright couldn't get any worse.
20:52:14 <tswett> elliott: yes, the United States Patent and Trademark Office.
20:52:26 <elliott> tswett: You can't copyright the idea for something, only an implementation.
20:52:26 <olsner> is elliott trying to say that uncle tswett has accessed his privates?
20:52:30 <elliott> He readily admits he can't implement it.
20:52:43 <tswett> elliott: really? Don't software companies patent ideas all the time?
20:52:49 <elliott> tswett: Or do you mean "you can do it in practice, just you shouldn't be able to"
20:53:02 <elliott> I thought you were saying that it was a proper avenue to do it :p
20:53:27 <tswett> What do you think of overriding #new so that it throws an error, and using a keyword message to create new objects?
20:53:30 <elliott> "I meant that it would be quite depressing for someone else to create a website with the same idea, that's all." ;; I wonder if this guy is trolling
20:53:38 <elliott> It would be really sad if someone did this thing that I can't, so it should be made illegal!
20:53:45 <elliott> It's wrooooooooong for people to think things that I've thought!
20:53:57 <elliott> tswett: Make #new private instead.
20:54:08 <elliott> tswett: OTOH, that may break the common idiom:
20:54:23 <elliott> <tab>foo: initialisationStuff;
20:54:27 <Gregor> elliott: http://sprunge.us/TSfJ LINUX: ONLY THE FINEST IN LOGIC
20:54:36 <tswett> (Replace something with something; I'm too lazy to tell you what.)
20:54:43 <elliott> Gregor: Uhhhhhhhhhhhh, wow.
20:55:00 <elliott> tswett: Why'd you want to do it?
20:55:07 <elliott> I mean, I think it's as simple as actually I have no idea.
20:55:11 <elliott> Wait, you can't have private methods in Smalltalk.
20:55:30 <elliott> tswett: But yeah, what does your keyword initialiser do that makes you want to ban plain new?
20:55:59 <tswett> elliott: well, I'd like this object to represent a connection to IRC, and... hm.
20:56:41 <tswett> Is that better than connectTo:host:port:et:cetera:?
20:56:55 <elliott> Because you shouldn't be able to set them afterwards.
20:57:02 <Gregor> elliott: HALP, I'm starting to become convinced that bind mounts + chroot/setuid are all I need X-D
20:57:05 <tswett> So how I'm currently doing things is perfect. Excellent.
20:57:23 <elliott> With connectTo: using the reasonable default.
20:57:43 <elliott> tswett: Just nicer naming IMO
20:57:48 <elliott> conn := IRCConnection new.
20:57:54 <elliott> conn connectTo: 'irc.freenode.net' onPort: secret.
20:57:58 <tswett> withPort:withNick:withChannel:
20:58:18 <tswett> connectTo:withThePortConnectedToBeingThePortNumbered:
20:58:24 <elliott> conn := IRCConnection new.
20:58:30 <elliott> conn connectTo: 'irc.freenode.net' onPort: secret.
20:58:37 <elliott> nickname: should automatically decide whether it's connected or not :P
20:58:42 <tswett> Ooh, a nickname: message. I definitely need that.
20:58:45 <elliott> And send a NICK message if it is.
20:58:50 <elliott> If not, connectTo:onPort: will send it.
20:58:59 <elliott> tswett: And of course join: and part:
20:59:19 <elliott> connectTo: 'irc.freenode.net' onPort: secret;
20:59:38 -!- calamari has quit (*.net *.split).
20:59:40 -!- FireFly has quit (*.net *.split).
20:59:40 -!- variable has quit (*.net *.split).
20:59:42 -!- Ilari has quit (*.net *.split).
20:59:42 -!- sebbu has quit (*.net *.split).
20:59:47 -!- Vorpal has quit (*.net *.split).
20:59:47 -!- Ilari_antrcomp has quit (*.net *.split).
20:59:53 -!- olsner has quit (*.net *.split).
20:59:56 -!- yiyus has quit (*.net *.split).
20:59:57 -!- augur_ has quit (*.net *.split).
21:00:05 -!- lifthras1ir has quit (*.net *.split).
21:00:08 -!- quintopia has quit (*.net *.split).
21:00:14 <elliott> Also connectTo should probably return immediately, rather than waiting for the network to reply or whatever.
21:01:10 <tswett> It doesn't wait for any replies, I think. So we're good.
21:01:59 <elliott> Are you using Squeak or Pharo or what?
21:02:25 -!- calamari has joined.
21:02:26 -!- Ilari_antrcomp has joined.
21:02:26 -!- Vorpal has joined.
21:02:26 -!- sebbu has joined.
21:02:26 -!- Ilari has joined.
21:02:26 -!- variable has joined.
21:02:26 -!- FireFly has joined.
21:02:26 -!- yiyus has joined.
21:02:26 -!- olsner has joined.
21:02:26 -!- lifthras1ir has joined.
21:02:26 -!- quintopia has joined.
21:02:51 <elliott> <elliott> Are you using Squeak or Pharo or what?
21:04:25 <tswett> Specifically, one of the former two.
21:05:01 <tswett> What should join: do when we're not connected? Throw an error?
21:05:07 <tswett> Add it to the list of channels we should be in?
21:06:14 -!- augur has joined.
21:11:26 <elliott> tswett: And part: should remove it... technically I think basically everything should work before you connect, including PRIVMSG.
21:11:33 <elliott> So you could say what you want to happen immediately after connect, then tell it to actually connect.
21:11:54 -!- augur has quit (Remote host closed the connection).
21:13:28 <elliott> ais523: hmm, you can't pass a structure to a varargs function, can you?
21:13:35 <elliott> or can you, if you also pass its size?
21:13:57 <ais523> in va_arg, you have to specify what type the arg is
21:14:10 <elliott> yes, but let's assume that you specify the right type
21:14:10 <ais523> and it could calculate the size from that
21:14:21 <elliott> ais523: but e.g. you can't pass a float to a variadic function
21:14:24 <elliott> because it gets upconverted to double
21:14:34 <ais523> I don't think floats get upconverted to anything
21:14:46 <elliott> ais523: um, yes, they do, for varargs
21:14:57 <elliott> http://c-faq.com/varargs/float.html
21:15:03 <elliott> A: In the variable-length part of variable-length argument lists, the old ``default argument promotions'' apply: arguments of type float are always promoted (widened) to type double, and types char and short int are promoted to int. Therefore, it is never correct to invoke va_arg(argp, float); instead you should always use va_arg(argp, double). Similarly, use va_arg(argp, int) to retrieve arguments which were originally char, short, or int. (For an
21:15:03 <elliott> us reasons, the last ``fixed'' argument, as handed to va_start, should not be widenable, either.) See also questions 11.3 and 15.2.
21:15:07 <ais523> *structs get upconverted
21:15:13 <ais523> I know floats get upconverted, just typoed that they didn't
21:15:32 <elliott> OK, I thnk you can write a generic stack_push, but only in C99
21:15:57 <elliott> or even if you can, it might be illegal to say
21:16:01 <elliott> va_arg(ap, char[obj_size])
21:17:19 <elliott> void stack_push_(void *stack, ssize_t *ptr, size_t obj_size, ...)
21:17:20 <elliott> data = va_arg(ap, char[obj_size]);
21:17:24 <elliott> memcpy(stack + ptr, data, obj_size);
21:17:30 <elliott> ais523: behold the probably-invalid Cthulian horror
21:18:36 <elliott> Gregor knows these things!
21:18:48 -!- augur has joined.
21:20:39 <fizzie> Looks like a valid VLA in general.
21:21:44 <elliott> hmm, darn, I think this will fail if a pointer to an element is smaller than (void *)
21:22:35 <elliott> and I need a typeof too! oh woe!
21:23:01 <elliott> otoh i could re-evaluate stack
21:23:36 <elliott> and wait, stack_push could just be a macro in general...
21:24:42 <elliott> http://sprunge.us/hRjV ;; an exercise in pointless
21:25:36 <fizzie> In any case you can only portably call va_arg when the specified type is compatible with the actual type of the corresponding provided argument (after the default argument promotions); and "compatible type" is a rather strict requirement.
21:25:40 -!- MigoMipo has quit (Read error: Connection reset by peer).
21:25:41 <tswett> I just realized that in Smalltalk, you can save the world.
21:26:40 <elliott> fizzie: Unfortunately types aren't values you can pass around :P
21:27:38 <tswett> Does Smalltalk have a nice way to denote a throwaway argument, like Haskell?
21:27:58 <elliott> tswett: You shouldn't have them. Why do you have them?
21:28:06 <elliott> (I realise I'm being annoyingly X-Y-problem here.)
21:28:20 <fizzie> Also the type in va_arg needs to be named such that simply postfixing a * makes a pointer to that type, and "char[obj_size]*" doesn't seem to be anything sensible.
21:28:35 <elliott> fizzie: WELL YOU MAKE IT WORK THEN :P
21:29:11 <tswett> elliott: because ifNotNilDo: takes a block that accepts one argument.
21:29:12 <fizzie> I have a feeling making it work completely portably is just not possible. (You need not have a general sort of stack to have a C, after all.)
21:29:23 <elliott> tswett: Does [foo] not work as a block?
21:29:33 <tswett> elliott: it doesn't work as a block that accepts one argument.
21:29:37 <elliott> tswett: Also, it seems ifNotNilDo was removed from Pharo.
21:29:50 <tswett> That's strange, because I'm using it.
21:29:53 <elliott> In Pharo it’s been fixed long ago, and today somebody removed all sends of ifNotNilDo:, so the era of one of my “major small Squeak annoyances” finally completely ends today and ifNotNilDo: is history, at least in Pharo.
21:30:05 <elliott> anObject ifNotNil: [:obj | obj doThing].
21:30:08 <elliott> tswett: Don't throw away the argument.
21:30:17 <elliott> I don't know why you're meant to use the parameter.
21:30:24 <tswett> Even though obj is always the same as anObject?
21:30:31 <elliott> fizzie: Err, it's not about the C stack.
21:30:41 <elliott> tswett: maybe it's not guaranteed to be! Who knows.
21:32:03 <fizzie> elliott: Yes, I see (now); but still, you could for example have an argument-passing system where floats and ints go to different stacks, and then va_arg'ing them without knowing the type's not going to be very easy.
21:32:32 <fizzie> If you're okay with only pushing objects you can take & of, you could have your macro provide sizes and pointers-to, but then you couldn't push literals.
21:32:46 <fizzie> Though was it possible to take & of a compound literal?
21:33:20 <elliott> If you could somehow auto-declare a temp variable to use, you could & that. :p
21:34:31 <fizzie> "drawline(&(struct point){.x=1, .y=1}, &(struct point){.x=3, .y=4});" is listed as an example call when drawline expects a pointer to struct point.
21:35:08 <fizzie> So maybe your macro could wrap "x" to &(struct { typeof(x) field; }){ .field = x }.
21:35:53 <elliott> fizzie: Not if the declarer thing included a dummy
21:35:58 <elliott> struct dummy { type field; };
21:36:13 <elliott> And then malloced it to avoid the inevitable initialisation.
21:37:24 <fizzie> I think there was some sort of a rule that offsetof of the first struct member must be 0, so you should be able to then take that pointer and read sizeof(x) bytes out of it. (Though you need to cast it to a known pointer type before passing, either a void * or a char *.)
21:37:49 <elliott> hey, they're maintaining the squeak os again
21:38:25 <elliott> fizzie: The main thing was to avoid reevaluating the arguments. "So yeah."
21:38:42 <tswett> Is initialize supposed to call super initialize?
21:39:11 <tswett> Then again, maybe not.
21:40:38 <tswett> elliott: should the initialize message I define call super initialize?
21:40:55 <elliott> tswett: Look at some subclass' initialize message, see if it does :P
21:40:58 <elliott> I think so but don't recall.
21:44:03 <tswett> Why yes, I do super initialize.
21:45:05 <elliott> More like SuperLAMEISES!!!!!!~!!!!!!!!\
21:45:31 -!- pumpkin has joined.
21:46:14 <elliott> tswett: Is it not joining here any more?
21:47:05 -!- copumpkin has quit (Ping timeout: 246 seconds).
21:47:05 <tswett> I haven't run it yet. :P
21:48:38 <elliott> tswett: Dudes, you totally need to make it so you can MODIFY IT WHILE IT RUNS
21:48:56 <elliott> tswett: Are you still making it hang or are you "[bot connect] fork"ing :P
21:49:06 <Phantom_Hoover> http://www.cracked.com/blog/exploring-the-mysteries-of-the-mind-with-the-sims-3/
21:49:19 <tswett> elliott: I'm still making it hang.
21:49:33 <elliott> tswett: Make the bot die and do that instead :P
21:49:50 <tswett> What do you mean, make the bot die? I haven't run it yet.
21:58:11 -!- elliott has quit (Ping timeout: 248 seconds).
22:06:10 -!- BeholdMyGlory has quit (Remote host closed the connection).
22:06:12 -!- FireFly has quit (Quit: swatted to death).
22:08:22 -!- copumpkin has joined.
22:09:08 -!- pumpkin has quit (Ping timeout: 246 seconds).
22:13:16 -!- Phantom_Hoover has quit (Remote host closed the connection).
22:58:44 -!- Sgeo has joined.
23:36:14 -!- cheater00 has joined.
23:38:13 -!- sebbu has quit (Ping timeout: 264 seconds).
23:39:12 -!- cheater99 has quit (Ping timeout: 258 seconds).
23:40:48 -!- sebbu has joined.
23:40:48 -!- sebbu has quit (Changing host).
23:40:49 -!- sebbu has joined.
23:44:35 -!- augur has quit (Remote host closed the connection).
23:48:29 <Sgeo> tswett, this isn't a MUD
23:49:54 <Sgeo> It's not a dungeon. Although I think myndzi would disagree \m/ \m/
23:53:03 <tswett> \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/
23:53:22 <tswett> \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/
23:53:34 <tswett> \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/ \m/
23:53:38 <Sgeo> \m/ \m/ \m/ \m/
23:53:42 <Sgeo> \m/ \m/ \m/ \m/
23:53:46 <Sgeo> \m/ \m/ \m/ \m/
23:53:50 <Sgeo> \m/ \m/ \m/ \m/
23:53:53 <Sgeo> \m/ \m/ \m/ \m/
23:54:00 <tswett> \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/
23:54:04 <Sgeo> \m/ \m/ \m/ \m/
23:54:22 <tswett> Well, maybe myndzi's \o/ limit is two \o/ s or something.
23:54:59 <tswett> Or \o/ maybe \o/ they \o/ just \o/ have \o/ to \o/ be \o/ well-separated.
23:55:00 <myndzi> /| /´\ /`\ /`\ /´\ ´¸¨ /|
23:55:13 <tswett> What's that sixth one?
23:58:30 * Sgeo suddenly wants to make a four-dimensional maze in LambdaMOO