←2011-04-03 2011-04-04 2011-04-05→ ↑2011 ↑all
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:28:40 <Sgeo> Gregor, :(:(
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:35:02 <zzo38> Are you sure?
01:38:19 <zzo38> Do you sure?
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:51:42 <zzo38> OK.
01:52:01 <quintopia> who got 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:52:30 <oerjan> cute.
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:18:30 <quintopia> Gregor: halp
03:18:42 <Gregor> ?
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:20:57 <quintopia> yes
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:23 <quintopia> usually
03:22:55 <quintopia> is there an about: page for the dom inspector?
03:23:45 -!- Sgeo__ has joined.
03:24:36 <quintopia> nvm found an add-on
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:35:22 <Vorpal> ah
10:35:26 <Vorpal> I missed that one
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:26 <cheater-> hey guys
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:22 <elliott> did the logbot go down?
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:20 <elliott> err
16:07:21 <elliott> wait
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:48 <Gregor> elliott: Facebook.
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:17 <oerjan> ...what.
16:08:33 <Gregor> If there was raucous celebration, it would have started nowishly :P
16:08:50 <Phantom_Hoover> FWIW, my DNS doesn't realise .so is a TLD yet.
16:09:40 <Gregor> Really? Not your browser?
16:10:17 -!- elliott_ has joined.
16:10:57 <elliott_> http://sprunge.us/JdbJ ;; :D
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:06 <Phantom_Hoover> Gregor, whois fails as well.
16:17:28 <Phantom_Hoover> Actually, I can get to nic.so.
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:08 <elliott> :o
16:18:09 <elliott> that's like
16:18:12 <elliott> the hidden realm
16:18:22 <Phantom_Hoover> The nic.so whois says nothing about libc.so.
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:18:45 <Phantom_Hoover> Who's WINNING
16:19:04 <elliott> Charlie Sheen. He's a real C programmer.
16:19:09 <Gregor> Anonymous bidder #449
16:19:24 <Phantom_Hoover> Remind me which one you are.
16:19:28 <Gregor> #442
16:19:37 <fizzie> Gregor: So close!
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:19:40 <Gregor> AKA libdl.so :P
16:19:40 <elliott> X-D
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:43:21 <elliott> we're mooded
16:44:05 <oerjan> the moody mod of doom
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:40 <elliott> THE END
16:45:42 <elliott> OF THE WOOOOOOOOOOOOOOOOOOOOORLD
16:45:44 <Vorpal> Ilari, how long before the LIRs get into issue?
16:47:35 <Vorpal> issues*
16:47:35 <Vorpal> brb phone
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:47 <Vorpal> Ilari, ah
16:53:59 <elliott> They basically just have a bunch of empty EV records in a domain.
16:54:00 <cheater99> hi elliott
16:54:03 <cheater99> how are you
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:54:39 <Vorpal> hm
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:57:05 <Vorpal> wait, probably
16:57:20 <cheater99> http://sprunge.us/JdbJ < lol
16:58:19 <Ilari> Vorpal: Depends on how tightly China controls it...
16:58:59 <Vorpal> right
17:01:10 -!- azaq23 has quit (Quit: Leaving.).
17:01:33 <elliott> hmm, writing a Magenta parser looks scary
17:05:33 <cheater99> Magento?
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:10:43 <cheater99> ahahahahah
17:10:48 <cheater99> good luck elliott.
17:11:10 <oerjan> magento, part esolang, part supervillain
17:12:41 -!- asiekierka has joined.
17:15:07 -!- ais523 has joined.
17:21:42 <elliott> hi ais523
17:22:20 <ais523> hi elliott
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:13 <Phantom_Hoover> Honestly, V*rpal's not paying attention right now.
17:24:20 <Phantom_Hoover> OH GOD WAIT HE IS
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:41 <Phantom_Hoover> How Welsh I am.
17:24:52 -!- asiekierka has joined.
17:24:55 <elliott> You're Welsh; so?
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:25:11 <Vorpal> ;P
17:25:22 <Phantom_Hoover> elliott, nothing.
17:25:29 <elliott> OK.
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> (loop for i upto 20
17:26:43 <elliott> if (oddp i)
17:26:43 <elliott> collect i into odds
17:26:43 <elliott> else
17:26:43 <elliott> collect i into evens
17:26:43 <elliott> finally (return (values evens odds)))
17:27:03 <Phantom_Hoover> That's not proper if/else.
17:27:10 <Phantom_Hoover> That's loop, so it doesn't count.
17:27:20 <elliott> ...of course it's loop
17:27:26 <elliott> that's why it surprised me
17:27:26 <elliott> sheesh
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:09 <elliott> BF just needs an if :-P
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:53 <elliott> {[...]+}-{...}
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:01 <elliott> works for 0/1 booleans
17:29:03 <elliott> does what you said
17:29:05 <elliott> sort of
17:29:10 <elliott> wait, exactly what you said
17:29:14 <ais523> well, it'd matter in BF Joust because of itming
17:29:16 <ais523> *timing
17:29:18 <elliott> fizzielance lol
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:24 <elliott> ais523: yes
17:31:30 <ais523> perhaps
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:35:46 <Gregor> (Not URL, page)
17:36:17 <ais523> haha
17:36:22 <ais523> probably not, but it's good for a quick laugh
17:36:24 <cheater99> gregor richards?
17:36:31 <cheater99> ok gregor... now i know your powerword
17:36:36 <cheater99> >:D
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:12 <ais523> ;s?
17:37:20 <Gregor> elliott: There was no auction. $10 :P
17:37:21 <cheater99> yes.
17:37:27 <cheater99> your powerword. check it on ED.
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:36 <elliott> all one of them
17:37:37 <ais523> oh, I must have been putting trailing semicolons out out of habit
17:37:40 <elliott> X-D
17:37:50 <ais523> the ()*14 stuff is debug cod
17:37:50 <elliott> Gregor: No, your REAL NAME
17:37:52 <ais523> *code
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:11 <Gregor> elliott: *Richardson
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:08 <elliott> ais523: only /yours/
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:23 <ais523> *anticipation
17:40:31 <elliott> ais523: OK, well, what if we said that ()%0 was debug? :-D
17:40:41 <ais523> ouch
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:15 <Vorpal> ouch
17:41:21 <elliott> precisely :D
17:41:29 <elliott> <ais523> especially as ({a})%0 should semantically run the a
17:41:31 <elliott> we could use this!
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:34 <elliott> (before{...}after)%0
17:41:35 <elliott> USEFUL!
17:41:36 <ais523> juiced deletes comments on load
17:41:40 <ais523> but not ()*n loops
17:41:45 <Vorpal> <elliott> <ais523> especially as ({a})%0 should semantically run the a
17:41:48 <Vorpal> so...
17:41:57 <elliott> ais523: lance's architecture required deleting ()*n, IIRC
17:41:59 <Vorpal> (comment {a} comment)%0
17:42:03 <Vorpal> obvious
17:42:04 <elliott> Vorpal: PRECISELY
17:42:06 <elliott> <elliott> (before{...}after)%0 <elliott> USEFUL!
17:42:14 <elliott> also, not comment
17:42:14 <elliott> debug
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:05 <elliott> no
17:43:06 <Vorpal> oh wait
17:43:11 <Vorpal> %
17:43:11 <Vorpal> right
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:22 <elliott> and whatnot
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:31 <elliott> Vorpal: (a{b}c)%n
17:43:47 <Vorpal> elliott, ah well without the {} I meant
17:44:13 <elliott> that doesn't exist
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:46:00 <elliott> what format?
17:47:49 <Phantom_Hoover> .xls AtM, but I can use Calc to convert it.
17:49:10 <elliott> ew, use Gnumeric :)
17:49:17 <Phantom_Hoover> Well, OK.
17:49:22 <Phantom_Hoover> Same difference/
17:51:09 <elliott> hmm
17:51:10 <elliott> with
17:51:14 <elliott> struct foo { A x; B y; };
17:51:16 <elliott> assuming you have
17:51:21 <elliott> struct foo blah = ...;
17:51:27 <elliott> B *foo = &foo->y;
17:51:27 <elliott> is
17:51:39 <elliott> (struct foo*)(foo - offsetof(struct foo, y))
17:51:46 <elliott> guaranteed to be a pointer to blah?
17:51:48 <elliott> *foo *
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:52:13 <elliott> seems so
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:06 <Vorpal> unless I misremember
17:58:15 <elliott> Vorpal: offsetof is C90
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:14 <elliott> *no first (
17:59:19 <elliott> er wait
17:59:22 <elliott> *((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:15:57 <Vorpal> ouch
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:13 <Vorpal> aren't*
18:16:18 <elliott> ais523: I mean, source code nesting depth
18:16:21 <elliott> () and [] and {} combined
18:16:29 <elliott> *combined
18:16:32 <ais523> 2 more, I think
18:16:38 <ais523> or maybe 3 more
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:26 <elliott> hmm, wasn't it more?
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:53 <Vorpal> aaargh
18:19:58 <Vorpal> 20 lines in half a second
18:20:02 <Vorpal> yet I had no lag elsewhere
18:20:04 <Vorpal> freenode fail
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:20:41 <elliott> Vorpal: k
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:44 <elliott> 4 + 4 + 4 + 4
18:21:48 <elliott> on both 32-bit and 64-bit
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:18 <elliott> duh
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:27 <ais523> *juicd
18:22:31 <ais523> *juiced
18:22:37 <elliott> ais523: it isn't hard, but manual memory management angers me anyway
18:22:40 <elliott> Vorpal: asm or forth
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:16 <elliott> Vorpal: *Ada
18:23:17 <Vorpal> though*
18:23:19 <Vorpal> weird typo
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:28 <elliott> or is it ais523
18:23:48 <Vorpal> elliott, but yeah, C very clearly dominates
18:24:02 <elliott> hmm, when camelcased is opcode Opcode or OpCode?
18:24:10 <elliott> Vorpal: unfortunately.
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:11 <Vorpal> I'm not joking.
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:31 <elliott> no wait
18:26:34 <elliott> multics started in 1964
18:26:35 <elliott> even earlier
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:24 <elliott> (ofc Lisp is even older)
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:27:58 <elliott> <me> no
18:28:02 <Vorpal> assembler? You got to be kidding
18:28:02 <elliott> <Vorpal> GO DO OLD THINGS
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:42 <Vorpal> come on.
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:02 <Vorpal> (I would!)
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:27 <Vorpal> elliott, har har
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:05 <elliott> ouch
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:23 <ais523> 100k
18:32:31 <ais523> is the normally agreed-upon value nowadays
18:33:43 <elliott> ais523: err, no
18:33:48 <elliott> ais523: I don't think
18:33:51 <elliott> ais523: that was a bug in egojoust, IIRC
18:33:56 <elliott> 's repetition code
18:33:59 <ais523> no, the bug made it interpret -1 as 10k
18:34:00 <ais523> rather than 10k
18:34:03 <ais523> *rather than 100k
18:34:41 <elliott> hmm, okay
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:21 <elliott> or
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:03 <elliott> and a pain to code
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:39 <elliott> because malloc is slow
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:43 <Vorpal> XD
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:01 <elliott> and I like it to be fast
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:41 <Vorpal> ah
18:40:51 <Vorpal> elliott, so do it in ASM!
18:40:57 <Vorpal> total freedom
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:39 <elliott> ais523: heh, howso?
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:33 <ais523> I don't understand b)
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:42:59 <ais523> ah
18:43:06 <elliott> yep
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:20 <elliott> ais523: so the former :)
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> ah UK
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:00 <elliott> Vorpal: YAY LAG
18:46:04 <elliott> all those mesages just came at once
18:46:05 <Vorpal> elliott, what?
18:46:10 <Vorpal> elliott, oh
18:46:16 <elliott> <Vorpal> a saner voting system would be good for UK. But it needs to be saner.
18:46:19 <elliott> than what, AV?
18:46:22 <elliott> AV is perfectly sane
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:29 <elliott> it's just instant-runoff
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:00 <Vorpal> ais523, hm
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:17 <olsner> the swedish what?
18:48:18 <Phantom_Hoover> Stochastic!
18:48:23 <Phantom_Hoover> I was just about to say that.
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:56 <elliott> ais523: it's much saner
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:38 <coppro> no it does not
18:50:41 <elliott> yes, it does
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:48 <coppro> elliott: parties
18:51:57 <elliott> coppro: that's not an answer, let alone a proof
18:52:02 <variable> elliott:
18:52:08 <elliott> variable: ?
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:52:51 <coppro> elliott: this is true
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:32 <variable> elliott: see the link
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:54 <elliott> this is for local seats
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:13 <elliott> r area
18:54:17 <elliott> variable: i did
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:54:59 <coppro> elliott: yes it does
18:55:01 <elliott> it's not random
18:55:02 <variable> relevance = talking about voting + voting system
18:55:02 <elliott> it's weighted
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:50 <ais523> Vorpal: indeed
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:45 <elliott> >>> import random
18:56:50 <elliott> >>> random.choice(list_of_candidates)
18:56:52 <elliott> no wait
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:30 <coppro> no
18:57:33 <coppro> you got it wrong
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:48 <Vorpal> good
18:57:53 <elliott> coppro: that's not true at all
18:58:00 <elliott> Vorpal: what
18:58:01 <elliott> Vorpal: ?
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:34 <elliott> YOU CAN VERY IT MORE
18:58:37 <elliott> BUT IT'S STILL THE SAME SYSTEM!!!!!
18:58:40 <elliott> ALL VOTING SYSTEMS ARE UNFAIR
18:58:48 <elliott> coppro: you ^
18:58:52 <elliott> *VARY
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:24 <elliott> YESSSSSSSSSSSSSS
19:02:33 <variable> elliott: ++
19:02:33 -!- augur has quit (Remote host closed the connection).
19:02:39 <variable> or rather coppro ++
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:13 <variable> :-p
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:53 <ais523> actually, no
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:05:49 <elliott> Vorpal: A fun BAD IDEA.
19:06:04 <Vorpal> variable, you mean like in Switzerland and the Minaret ban?
19:06:22 <coppro> ais523: yes, exactly
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:29 * tswett waits.
19:09:34 <ais523> which is a really interesting combo
19:09:38 <Vorpal> hrrm
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:47 <Vorpal> hm
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:21 <Vorpal> variable, right
19:10:22 <elliott> the tweaking part being the thing that breaks a different criterion, obviously
19:10:28 <elliott> hmm
19:10:33 <ais523> like ranked pairs
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:11:59 <quintopia> gregor!
19:11:59 <elliott> ais523: yes it does
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:23 <elliott> ais523: wrong
19:12:38 <elliott> ais523: create a mapping of candidate->popularity, where popularity = sum1/ranking for all votes for candidate
19:12:43 <variable> <quintopia> gregor! ???????
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:04 <elliott> then repeat
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:29 <quintopia> Gregor: i sent you pm.
19:13:30 <Vorpal> Gregor, I have no clue
19:13:32 <elliott> ais523: AND?
19:13:32 <ais523> so how do you define "least popularity"?
19:13:35 <elliott> ais523: I TOLD YOU
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:40 <elliott> not condorcet's output
19:13:43 <ais523> elliott: ah, OK
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:30 <elliott> tswettbot: oh dear
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:16:58 <pumpkin> oh shit, it's a tswettbot
19:17:01 <elliott> tswett: what language?
19:17:03 * pumpkin runs
19:17:05 <tswett> Smalltalk.
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:24:24 <elliott> out
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:36 <elliott> or RISC OS I guess
19:25:38 <elliott> or ROX
19:25:50 <tswett> Alas, this file is CR-delimited.
19:28:13 <olsner> 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:40 <cheater99> hello
19:29:48 <Vorpal> I thought OS X didn't use CR any more
19:29:49 <elliott> I can never spell EBCDIC
19:29:50 <elliott> it's always
19:29:51 <elliott> ebidibic
19:29:54 <elliott> ebidbidbdicbd
19:29:56 <ais523> btw, do you know the original reason both LF and CR were created?
19:29:56 <elliott> beidbeidbebibeic
19:29:58 <elliott> ebdiebdciebdeibcidebciebdiebcidbeicbiecicd
19:30:05 <elliott> beiber
19:30:08 <Vorpal> ais523, what did NL do?
19:30:12 <ais523> Vorpal: newline, of course
19:30:19 <Vorpal> elliott, same!
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:29 <Vorpal> ais523, well duh
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:36 <ais523> Vorpal: I don't know
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:30:40 <Vorpal> ah
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:32:31 <elliott> ;D
19:32:55 <tswett> Yup.
19:33:06 <Vorpal> hah
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:38 <elliott> try 8
19:35:55 <elliott> also classify your methods >:()
19:35:57 <elliott> *>:)
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:40 <elliott> no, that's in the old RFC
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:21 * tswett nods.
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:27 <tswett> So yeah.
19:38:30 <elliott> Ouch.
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:24 <tswett> :P
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:04 <tswett> I MUST HAVE TWO!
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:29 <elliott> PROGRAMMING
19:41:30 <elliott> LANGUAGE
19:41:31 <elliott> EVER.
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:47 <elliott> No.
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:13 <tswett> A moomic.
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:54 <tswett> It is, yes.
19:42:58 <elliott> erm.
19:42:59 <elliott> Mostly because Smalltalk is pretty well suited to writing MOOs.
19:43:04 <tswett> It is, yes.
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:35 <elliott> Which is Satanic.
19:43:40 <tswett> Oh. Nope.
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:40 <elliott> Like "sleep 5 &"!
19:44:44 <tswett> Precisely.
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:45:50 <elliott> Does it exist?
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:09 <elliott> I think.
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:47:01 <elliott> Huh.
19:48:45 <tswett> Huh, there are these things called ProcessSpecificVariables.
19:48:56 <elliott> tswett: Ew.
19:48:58 <tswett> I guess which process you're in sometimes matters.
19:49:00 <tswett> And yes, ew.
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:19 <elliott> Vorpal: Again, ew.
19:49:22 <elliott> What's wrong with using an object
19:49:27 <elliott> [Foo new doThings] fork
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:07 <elliott> So, ew.
19:50:25 <Vorpal> I don't know smalltalk :P
19:50:31 <Vorpal> well I know a few basic things
19:50:33 <Vorpal> but that is all
19:50:52 <elliott> grr, the worst thing with the
19:50:53 -!- Mannerisky has quit (Ping timeout: 246 seconds).
19:50:57 <elliott> foo stack[constant];
19:50:59 <elliott> int stack_ptr = -1;
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:23 <elliott> Vorpal: what?
19:51:25 <elliott> Vorpal: ...
19:51:27 <Vorpal> or even better unsigned long
19:51:38 <Vorpal> probably ssize_t
19:51:40 <elliott> tswett: surely the bot should do that itself
19:51:47 <Vorpal> or size_t
19:51:58 <elliott> Vorpal: why, it's size-limited
19:52:10 <Vorpal> elliott, by how much?
19:52:12 <elliott> 100k
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:37 <Vorpal> elliott, unsigned one
19:52:47 <elliott> Vorpal: 100k > 65536
19:52:52 <Vorpal> oh hm
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:05 <elliott> even with 0 = no stack
19:53:06 <elliott> you can't do
19:53:14 <elliott> if (--n >= 0) ...
19:53:19 <elliott> Vorpal: aka int
19:53:25 <Vorpal> elliott, anyway I have worked on system where int was 16-bit
19:53:28 <Vorpal> elliott, so no
19:53:33 <elliott> not C90
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:10 <elliott> in C89 draft
19:55:16 <elliott> let me check c99
19:55:31 <Vorpal> — maximum value for an object of type int
19:55:31 <Vorpal> INT_MAX
19:55:31 <Vorpal> +32767 // 215 − 1
19:55:31 <Vorpal> elliott, this is from C99
19:55:35 <Vorpal> but I doubt it would change it radically from C90
19:55:41 <elliott> very well then
19:55:45 <elliott> 215 - 1? what?)
19:56:57 <Vorpal> elliott, long must be at least 32 bits
19:56:57 <Vorpal> elliott, int must not
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:11 <Vorpal> but copy paste
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:35 <elliott> i guess it does
19:57:37 <elliott> since it can take a value
19:57:40 <Vorpal> elliott, because I have <0.1s lag to server
19:57:40 <elliott> but without an L suffix
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:57:54 <elliott> how strange!
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:21 <elliott> they're so kind
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:58:58 <Vorpal> elliott, atm yes
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:44 <elliott> yadda yadda
19:59:46 <olsner> Vorpal: stop whining about who's whining
19:59:53 <Vorpal> olsner, hah
20:00:02 <Vorpal> elliott, no. Because I saw that mentioned in another channel
20:00:07 <Vorpal> by a former staff.
20:00:14 <elliott> FORMER staff! golly gosh!
20:00:18 <elliott> so authoritative
20:00:25 <Vorpal> elliott, yep. I trust that guy more than current staff.
20:00:27 <Vorpal> :P
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:00:48 <Vorpal> elliott, yes quite.
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:24 <Vorpal> ouch
20:01:25 <ais523> lilo the bootloader?
20:01:27 <elliott> ooh, netclock looks like fun
20:01:31 <Vorpal> ais523, ...
20:01:40 <elliott> ais523: yes. definitely.
20:01:43 <Vorpal> ais523, lilo the founder of freenode
20:01:46 <ais523> Vorpal: ah
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:34 <elliott> not even exaggerating
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:21 <ais523> Vorpal: hit-and-run?
20:03:56 <Vorpal> ais523, ah yes that's it
20:04:18 <Vorpal> elliott, he was a pedestrian.
20:04:22 <elliott> Vorpal: um no
20:04:24 <elliott> he was on a bicycle.
20:04:26 <Vorpal> oh?
20:04:30 <Vorpal> was it bicycle?
20:04:32 <Vorpal> hm
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:05:00 <Vorpal> night →
20:06:02 <elliott> ais523: I wonder if anyone's just used C with Templates
20:06:03 <elliott> apart from CUDA
20:06:04 <elliott> :D
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:07:11 <ais523> probably most of them
20:08:09 <elliott> heh
20:08:13 <elliott> C with Lambdas
20:08:15 <elliott> C with Auto
20:08:19 <elliott> (the different auto)
20:08:23 <elliott> C with Different Casting Rules
20:08:29 <elliott> C with Protected
20:08:37 <ais523> C with More Specific Casts?
20:08:40 <elliott> yes!
20:08:41 <ais523> is what you mean?
20:08:44 <elliott> no
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:41 <Gregor> X-D
20:09:47 <tswett> C with Hindley-Milner type inference and implicit closures.
20:09:52 <Gregor> QCC: Now with LCT!
20:10:05 <elliott> tswett: C++ has that?
20:10:13 <tswett> elliott: ...really?
20:10:18 <elliott> tswett: Thus "?"
20:10:27 <elliott> it has type inference, not H-M though :)
20:10:29 <elliott> well afaik
20:10:33 * tswett nods.
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:45 <elliott> so yeah
20:10:54 <elliott> gah, why isn't there a type that can hold any other type in C :-D
20:10:58 <elliott> clearly it should be void
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:49 <elliott> well
20:11:53 <elliott> they can't be TC in the sense that objects can be infinite
20:11:59 <elliott> or arbitrarily-sized
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:22 <elliott> struct infinite_array {
20:13:24 <elliott> bit value;
20:13:27 <elliott> struct infinite_array rest;
20:13:28 <elliott> };
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:13:58 <elliott> err
20:13:59 <elliott> *.value
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:53 <elliott> nuh uh
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:19 <elliott> tswett: ...true
20:15:22 <elliott> DRAT
20:15:27 <elliott> sizeof should return a float
20:15:28 <tswett> Hence.
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:44 <elliott> NO
20:15:44 <elliott> FLOAT
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:36 <elliott> it just returns +inf * 2!
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:43 <elliott> :-D
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:53 <elliott> also, sizeof is in char
20:17:56 <elliott> so you should have char value;
20:18:10 <tswett> I was just copying you. You copycat.
20:18:22 <elliott> ur mom
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:21 <elliott> tswett: What, your mom?
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:49 <elliott> tswett: Go further.
20:21:51 <elliott> Reach out to humans.
20:21:54 <elliott> Be humanistically synergised.
20:21:57 <tswett> Precisely, yes.
20:22:06 <elliott> (What is even the going on.)
20:22:41 <elliott> yay, cola has been modified recently
20:22:44 <elliott> (they added babies)
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:24:09 <tswett> Ooh, nextLine.
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:16 <elliott> that's haskell talk :D
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:03 <elliott> Fancies.
20:26:22 <Gregor> Well that's scary.
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:15 <tswett> What's cola?
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:34 <elliott> (In a very real sense.)
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:54 <elliott> tswett: Basically it:
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:24 <elliott> Yes.
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:41 <elliott> Gregor: Obviously.
20:29:47 <elliott> right, there's only ppc and i386 and arm code generators
20:29:50 * elliott make clean
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:18 <elliott> X-D
20:30:18 <tswett> Well, yes.
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:31:45 <elliott> I cannot possibly advise.
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:29 <elliott> tswett: What.
20:34:30 <Gregor> But yeah, speed, bleh
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:28 <elliott> tswett: Compiling.
20:35:35 <tswett> Okay. Whew.
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:44 <elliott> Also its object model.
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:47 <Gregor> GOD DAMN IT SUN
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:37:26 <elliott> (And therefore OOP :P)
20:38:33 <elliott> aha
20:38:35 <elliott> I just need x86_32
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:39:57 <elliott> Gregor: wat :P
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:42 <elliott> Just sayin'
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:11 <Gregor> SO UPDATED
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:22 <elliott> Maybe it's more like
20:43:24 <Gregor> That's because it is.
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:43:56 <elliott> Best COMPLETE SET, maybe.
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:44:49 <elliott> Plz fix.
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:12 <elliott> ffff
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:08 <tswett> I r typing master.
20:47:14 <elliott> Wow :P
20:47:20 <elliott> Are you really that terrible?
20:47:58 <Gregor> Can mount --bind be -o ro?
20:48:17 <elliott> TIAS?
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:48:56 <elliott> Gregor: No.
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:08 <elliott> [~/gregorsucks]% cat a/b
20:49:08 <elliott> hello
20:49:10 <elliott> Gregor: Doubly no.
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:31 * Gregor hmmms some more.
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:50:25 * tswett nods.
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:30 * tswett nods.
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:32 <elliott> olsner: Yes.
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:52:51 <elliott> In which case, I agree
20:52:59 * tswett nods.
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:07 * tswett nods.
20:54:08 <elliott> tswett: OTOH, that may break the common idiom:
20:54:09 <tswett> How do I do that.
20:54:14 <elliott> foo := AClass new
20:54:23 <elliott> <tab>foo: initialisationStuff;
20:54:24 <tswett> s///
20:54:25 <elliott> <tab>bar: yupyup;
20:54:26 <elliott> <tab>yourself.
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:17 <elliott> Duh.
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:04 <elliott> tswett:
20:56:10 <elliott> conn := IRCConnection new
20:56:15 <elliott> host: 'irc.freenode.net';
20:56:21 <elliott> port: 666;
20:56:23 <elliott> yourself.
20:56:24 <elliott> conn connect.
20:56:24 * tswett nods.
20:56:25 <elliott> [...]
20:56:41 <tswett> Is that better than connectTo:host:port:et:cetera:?
20:56:50 <elliott> Mmmm, no.
20:56:53 * tswett nods.
20:56:55 <elliott> Because you shouldn't be able to set them afterwards.
20:57:02 <elliott> tswett: OTOH, make it
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:06 <elliott> connectTo:
20:57:07 <elliott> connectTo:onPort:
20:57:23 <elliott> With connectTo: using the reasonable default.
20:57:26 <elliott> (194, obviously!)
20:57:29 <elliott> (Or 6667 :P)
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:57:59 <tswett> :P
20:58:11 <elliott> tswett: Ewwww.
20:58:18 <tswett> connectTo:withThePortConnectedToBeingThePortNumbered:
20:58:24 <elliott> conn := IRCConnection new.
20:58:29 <elliott> conn nickname: 'MyBot'.
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:55 <elliott> Thus avoiding TEH UGLY.
20:58:59 <elliott> tswett: And of course join: and part:
20:59:04 <elliott> So
20:59:08 <elliott> conn := IRCConnection new
20:59:11 <elliott> nickname: 'MyBot';
20:59:19 <elliott> connectTo: 'irc.freenode.net' onPort: secret;
20:59:23 <elliott> join: '#esoteric';
20:59:24 <elliott> yourself.
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:18 <tswett> Yes.
21:04:25 <tswett> Specifically, one of the former two.
21:04:29 <tswett> Specifically, Pharo.
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:10:57 <elliott> tswett: The latter :P
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:12 <elliott> by magic
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:16 <elliott> ah
21:15:27 <ais523> that was a bad typo
21:15:32 <elliott> OK, I thnk you can write a generic stack_push, but only in C99
21:15:49 <elliott> unless you can't say
21:15:53 <elliott> va_arg(ap, char[8])
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:19 <elliott> {
21:17:19 <elliott> va_list ap;
21:17:19 <elliott> char *data;
21:17:19 <elliott> va_start(ap, obj_size);
21:17:20 <elliott> data = va_arg(ap, char[obj_size]);
21:17:22 <elliott> (*ptr)++;
21:17:24 <elliott> memcpy(stack + ptr, data, obj_size);
21:17:26 <elliott> va_end(ap);
21:17:28 <elliott> }
21:17:30 <elliott> ais523: behold the probably-invalid Cthulian horror
21:18:29 <elliott> hmm
21:18:31 <elliott> is char foo[a->b] valid?
21:18:32 <elliott> in C99
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:22:36 <elliott> this is impossible
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:26:52 <elliott> C should be Lisp, dammit.
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:29:55 <elliott> tswett: use ifNotNil.
21:30:02 <tswett> Okay.
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:23 <elliott> But them's the breaks.
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:30:42 <elliott> *M
21:30:45 <elliott> (*Maybe)
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:31 <elliott> fizzie: True.
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:34:56 <elliott> Ouch.
21:35:08 <fizzie> So maybe your macro could wrap "x" to &(struct { typeof(x) field; }){ .field = x }.
21:35:15 <fizzie> (Still needs typeof.)
21:35:53 <elliott> fizzie: Not if the declarer thing included a dummy
21:35:58 <elliott> struct dummy { type field; };
21:36:04 <elliott> :p
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:38:47 <tswett> Yes, it probably is.
21:39:11 <tswett> Then again, maybe not.
21:40:13 <tswett> elliott: halp
21:40:18 <elliott> tswett: wat
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:44:54 <elliott> Your MOM supernitialises.
21:45:05 <elliott> More like SuperLAMEISES!!!!!!~!!!!!!!!\
21:45:31 -!- pumpkin has joined.
21:46:07 <elliott> <tswett> I'M SO LAME
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:24 * tswett runs it.
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:03 <elliott> *connectTo: ...
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:53:01 <elliott> Oh.
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:02:28 * tswett arrives.
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:18 <tswett> Sgeo: what isn't?
23:49:28 <Sgeo> #esoteric
23:49:31 * tswett nods.
23:49:36 <Sgeo> Erm, hmm
23:49:54 <Sgeo> It's not a dungeon. Although I think myndzi would disagree \m/ \m/
23:49:55 <myndzi> `\o/´
23:49:55 <myndzi> |
23:49:55 <myndzi> /´\
23:49:55 <myndzi> (_| |_)
23:52:58 <tswett> Ahh, myndzi.
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:09 <tswett> Aww.
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:28 <tswett> Yeah, no?
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:48 * tswett shrugs.
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:11 <Sgeo> aww
23:54:20 <Sgeo> \m/ \m/ \m/
23:54:22 <tswett> Well, maybe myndzi's \o/ limit is two \o/ s or something.
23:54:23 <myndzi> | |
23:54:23 <myndzi> /| /|
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: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
←2011-04-03 2011-04-04 2011-04-05→ ↑2011 ↑all