←2010-12-02 2010-12-03 2010-12-04→ ↑2010 ↑all
00:00:23 <pikhq> (see, this sort of thing is what makes the multiple-ABI directory layout thing not a terrible idea!)
00:00:45 <elliott> pikhq: /lib/{libc.a,crt*.o} is main libc; /lib/otherlibname/* is the other one. :p
00:01:42 <pikhq> elliott: Well, that actually does work for static linking... *shrug*
00:01:50 <elliott> pikhq: (I suppose I don't want to build every lib twice, though, against a different libc...)
00:02:09 <pikhq> Only the libraries that'll actually work against dietlibc.
00:02:17 <pikhq> Which is *not* going to be universal.
00:02:33 <pikhq> Or even incredibly common.
00:03:02 <elliott> pikhq: That's what makes me want to use uClibc.
00:03:13 <elliott> pikhq: But man, nm -a a uClibc'd executable some time. Bloooooat.
00:32:25 <Vorpal> elliott, down?
00:32:39 <elliott> Perhaps. :P
00:32:39 <Vorpal> elliott, the next torch is close to me, there is a chest a bit further along
00:32:50 <elliott> Ah.
00:33:58 <Vorpal> elliott, up
00:38:24 -!- Sasha2 has joined.
00:39:01 -!- Mathnerd314 has quit (Ping timeout: 240 seconds).
00:39:55 -!- augur has joined.
00:40:03 -!- Sasha has quit (Ping timeout: 265 seconds).
00:40:56 <elliott> pikhq: ping
00:41:19 <pikhq> elliott: Gnip
00:41:36 <pikhq> elliott: I'm sad that live-action doesn't compress as well as animation.
00:41:54 <elliott> pikhq: Clearly we should all become animated.
00:41:57 <pikhq> Clearly.
00:44:03 <pikhq> Why, I have to resort to 256 kbps to get tolerable 240p!
00:44:06 <elliott> pikhq: Wait, how do typical C compilers know what start files to link? Do they just go by whatever's at /lib/crt1.o and the like?
00:44:16 <elliott> i.e. filename based?
00:44:58 <pikhq> The path is builtin to the compiler.
00:45:09 <elliott> pikhq: So, path-based.
00:45:10 <pikhq> GCC at least has the courtesy to stick it in the spec file.
00:45:26 <elliott> pikhq: How would one go about making a typical (non-gcc) compiler assume it's statically compiling always?
00:45:28 <elliott> i.e. implicit -static.
00:45:37 <pikhq> Uuuuh. I dunno.
00:45:44 <pikhq> Really easy to do with GCC, though.
00:45:44 -!- GreaseMonkey has quit (Ping timeout: 245 seconds).
00:46:26 -!- GreaseMonkey has joined.
00:47:40 <elliott> pikhq: pcc, so it's probably not configurable without patching :P
00:48:20 <elliott> * Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
00:48:25 <elliott> pikhq: Gotta love any piece of code that starts with that.
00:48:32 <elliott> * This file should be rewritten readable.
00:48:34 <elliott> And then has that.
00:48:41 <pikhq> ... Whaaa?
00:48:47 <elliott> pikhq: It's pcc.
00:48:51 <elliott> pikhq: pcc has... a LOT of authors.
00:49:05 <elliott> pikhq: Caldera happens to be one of them and they stuck that copyright there :P
00:49:28 <elliott> pikhq: ...come to think of it thought, pcc wasn't being maintained then. Whut?
00:49:30 <pikhq> Well, yes. It's got a shaggy dog story about as crazy as your typical genetic UNIX.
00:49:40 <elliott> if (strcmp(argv[i], "-static") == 0) {
00:49:40 <elliott> Bstatic = 1;
00:50:02 <elliott> #ifdef DYNLINKER
00:50:07 <elliott> Nice, I can theoretically disable that :P
00:50:20 <elliott> TODO: figure all that out.
00:50:26 <elliott> pikhq: So, what's your vote for main libc. uClibc or dietlibc?
00:52:09 <pikhq> uClibc, I guess.
00:52:40 <elliott> pikhq: Okay! The people have spoken, and they choose MEDIOCRITY!
00:53:58 <pikhq> XD
00:59:46 <elliott> pikhq: The worst thing about all of this is the kernel configuration.
00:59:59 <elliott> pikhq: It is *so hard* to know what you need to get stuff working, and no matter how much you disable it always seems to end up huge.
01:00:09 <elliott> (At least starting from the stock kernel.)
01:04:20 <pikhq> Hmm. I didn't need to scale that Sintel trailer down to 240p; it turns out fine at 480p.
01:11:10 <elliott> pikhq: I eagerly await "NES live game streaming over telegraph"
01:12:04 <pikhq> elliott: XD
01:17:43 <Vorpal> night
01:19:26 -!- Sasha2 has quit (Ping timeout: 245 seconds).
01:24:32 -!- Sasha has joined.
01:29:32 <elliott> There should be a digital-composey-MIDI-ish-tracker-y thing with a decent interface.
01:30:15 -!- augur has quit (Remote host closed the connection).
01:45:41 <pikhq> Huh. Microsoft has started funding Hercules.
01:45:47 <pikhq> The IBM mainframe emulator.
01:45:58 <pikhq> Why? Beats me.
01:48:07 <Sgeo> Newspeak makes me feel like I can contribute to it
01:48:13 <Sgeo> I like that feeling
01:50:46 <Gregor> pikhq: If it runs on Windows and they suspect people will want it, that's customers.
01:54:05 <pikhq> Well, it does run on Windows.
01:59:54 <Sgeo> Why is newspeaklanguage.org down? :(:(
02:07:22 <elliott> Sgeo: You know what's a good language...?
02:07:24 <elliott> Sgeo: newLISP.
02:11:20 <Sgeo> I like dynamic scoping.. but dynamic scoping by default?
02:11:59 <elliott> Sgeo: Hey, original LISP had it that way!
02:15:25 <elliott> pikhq: More kitten work tomorrow; let's see if I can bootstrap a usable if bare system with X11 by Christmas.
02:15:26 -!- elliott has quit (Quit: Leaving).
02:24:20 <pikhq> elliot: Needs more cowbell.
02:24:40 <Sgeo> Can someone please tell me WHY elliott is trying to push me from Newspeak?
02:25:31 <pikhq> Sgeo: Because all is koneko.
02:25:43 <Sgeo> ???
02:26:00 <pikhq> Kitten.
02:27:34 -!- aloril has quit (Read error: Connection reset by peer).
02:28:09 * pikhq is amused by how extensive the Japanese article on cats is.
02:35:29 -!- aloril has joined.
02:53:47 <Ilari> Sigh... IPv4 addresses are running out and the replacement is quite a Charlie Foxtrot... :-/
02:54:45 <Ilari> Well, at least it has major "last mile" issues, and major routing issues.
03:03:06 <Sgeo> last mile issues?
03:04:19 <pikhq> Both of them are not inherent faults in IPv6, but rather faults in meatware.
03:04:35 -!- Mathnerd314 has joined.
03:04:46 <pikhq> You fucking *idiots*, IPv4 is *basically over*. Get that through your fucking skulls.
03:06:14 <pikhq> Don't "get a transition plan in the coming years". Get a motherfucking time machine and be THROUGH YOUR TRANSITION as of last year. Or else you will HAVE NO INTERNET you fucking apes.
03:06:40 <pikhq> This has been cursing-filled rants from pikhq.
03:06:50 <Quadrescence> you fucking apes.
03:12:56 <Sgeo> How bad can it be to live with not getting IP addresses for a few years? Hurt a few consumers, businesses, etc, not the end of the world, right/
03:13:02 <Sgeo> ?
03:18:39 <pikhq> Sgeo: Try "critically injure all businesses".
03:19:14 <Sgeo> New ones? How often do current businesses need new IPs?
03:19:44 <pikhq> Uh, every time they get new computers that should be publicly accessible.
03:19:56 <pikhq> Imagine a world in which all Internet services cannot grow.
03:20:19 <Sgeo> o.O
03:21:00 <Sgeo> It's still temporary. Unless the economic impact causes irreversible damage to society or something
03:21:12 <pikhq> It's still pretty bad shit.
03:21:33 <pikhq> Because everyone is absolutely, positively *unprepared*.
03:21:53 <pikhq> This is going to sneak up and surprise everyone.
03:22:13 <Sgeo> We should get the media involved somehow
03:22:20 <pikhq> "We can't add that new server." "Why not?" "The Internet is full."
03:23:19 <Sgeo> I don't know if we could do something ourselves, or motivate the people tracking this sort of thing to speak to the media, but
03:23:41 <pikhq> Sgeo: The only way to get the media aware is for IANA to announce the end of allocations.
03:24:04 <pikhq> Which is when the shit hits the fan.
03:24:14 <Sgeo> You don't think the media is interested in "In all liklihood, the Internet fills up around this time"?
03:24:55 <pikhq> I don't think you realise just how soon IPv4 depletion is.
03:25:19 <pikhq> Pessimistic estimates give us until March.
03:26:26 <Sgeo> I'm sure the media would love to hear about it, at the very least. Put pressure on ISPs to start IPv6 adoption now, as opposed to waiting untii, say, March
03:26:27 <pikhq> Even if there was a gigantic push to switch to IPv6 rivaling the space race in effort, we couldn't switch in time.
03:26:37 <Sgeo> pikhq, but surely, the sooner the better?
03:26:50 -!- augur has joined.
03:26:59 <Sgeo> Less time of economic turmoil?
03:27:13 <pikhq> People still have their heads in the sand.
03:27:30 <Sgeo> Again: The media might help fix that
03:27:43 <pikhq> The media?
03:28:05 <pikhq> Those morons are too focused on Justin Beiber to report on anything of merit.
03:29:00 <Sgeo> I thought they love doom and gloom predictions... or make fun of them blah
03:29:34 <pikhq> They also have the intelligence of a gold fish.
03:29:52 <pikhq> Remember: Glenn Beck is taken seriously.
03:29:52 <Sgeo> If IPv4 was a household object that can cause 1 in 6 billion people to die, then they'd care
03:30:00 <pikhq> Remember: Glenn Beck is taken seriously.
03:30:12 * Sgeo has never seen Glenn Beck
03:39:22 <pikhq> Take a completely crazy right-wing conspiracy theorist.
03:39:31 <pikhq> Now give him a radio program and a TV show.
03:39:35 <pikhq> That's Glenn Beck.
03:40:29 <pikhq> By "crazy" I don't mean "has some really bizarrely fascist opinions". I mean "is literally schizophrenic".
03:42:54 <Gregor> Why are people so ridiculously short-sighted w.r.t. what constitutes "life"?
03:43:33 <Gregor> The only reason we're even looking for carbon-rich planets is that we can't formulate a way that life could exist without carbon; this is almost assuredly because we're stupid, not because it's impossible.
03:44:05 <Gregor> So when we find something really exotic, we just expand our search from Space Earth to Space Almost-Earth. Yeehaw.
03:45:29 <pikhq> Gregor: To be fair, we're only searching for carbon-rich planets because it's literally the only selection criteria we have.
03:45:48 <pikhq> Aside from "happens to be sending us a treatise on classical mechanics".
03:45:55 <pikhq> Sadly, no planets meet *that* criteria.
03:46:15 <pikhq> Criterion.
03:46:57 <Gregor> Right now we're so limited, we should be more focused on "things we can get to" than "things that might have life by our narrow definition"
03:49:13 <pikhq> I note that the only planet that was "things that might have life by our narrow definition" so far is just a few light years away.
03:49:14 <pikhq> That is, it's "things we can get to" if you opt for a generation ship.
03:49:15 <pikhq> (which is, of course, the only way we're getting anywhere right now)
03:50:10 -!- augur has quit (Remote host closed the connection).
03:54:03 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
04:03:22 -!- augur has joined.
04:06:59 <Ilari> Pessimistic estimates of IANA depletion are *this year*.
04:09:18 <Ilari> And those "March" estimates are of optimistic category.
04:10:55 <Ilari> And one of those pessimistic (2010) estimates is by some (I don't recall which exactly) RIPE (the euro RIR) executive (who is expected to know this stuff pretty well)...
04:11:33 <Ilari> (but then, RIRs don't know much what each other is doing... Granted, there's NRO, but still...)
04:13:38 -!- augur has quit (Remote host closed the connection).
04:21:27 -!- poiuy_qwert has joined.
04:24:42 -!- augur has joined.
04:24:47 <Sgeo> #esoteric: Home of those watching the IPv4 apocalypse helplessly
04:25:46 <Gregor> I got my Dinosaur Comics neckties! 8-D
04:26:18 <Gregor> #esoteric: Home of those who have not yet realized that humans have an impressive ability to adapt to imperfect situations, albeit reactively.
04:30:58 <Sgeo> http://www.youtube.com/watch?v=_y36fG2Oba0
04:31:20 <Sgeo> I think that's assuming that people actually got to IPv6 in a sensible way :/
04:31:49 <Sgeo> Oh, no it isn't
04:32:22 <Sgeo> It incorrectly talks about TCP thugh
04:32:37 <Sgeo> Er, wait no
04:33:14 -!- augur has quit (Remote host closed the connection).
04:42:33 <Sgeo> If we couldn't respond sensibly to IPv4 depletion, despite having a perfect solution in hand for years
04:42:38 <Sgeo> We knew the problem was solvable
04:42:47 <Sgeo> What hope do we have for Global Warming?
04:42:51 * Sgeo depresses
05:02:55 -!- augur has joined.
05:03:11 -!- Mathnerd314 has quit (Ping timeout: 245 seconds).
05:14:45 <pikhq> Gregor: It's still depressing that humans only adapt in reaction to shit that's already *happened*, rather than being proäctive.
05:15:28 <Ilari> Oh, there are the "converging catastrophes" and Global Warming is just one of them...
05:15:43 <Gregor> pikhq: Hence "reactively" :P
05:15:59 <Gregor> (Pronounced "reek-tively")
05:16:47 <Ilari> And the worst is when predictors of disaster (that will later come to pass) are ridiculed for forecasting ridiculous things...
05:17:38 <pikhq> I'm genuinely surprised that we actually bothered to handle Y2K ahead of time.
05:18:09 <pikhq> And that took spelunking into some of the nastiest code bases out there.
05:20:07 <Sgeo> Maybe the media helped a bit? =P
05:20:24 <Ilari> Perhaps because media took upon really drumming on it?
05:20:36 <Ilari> (Doom... Doom... Doom...)
05:21:21 <Sgeo> Doom interests the media. I still want to get the media to pay attention to IPv4 depletion
05:22:12 <Sgeo> Even if it doesn't help stop the crisis, at least the situation will be helped at least a little
05:22:29 <Sgeo> It might go a bit faster, businesses might be more prepared to withstand it
05:24:43 <Ilari> IIRC, current growth rate of IPv6 is about 70% per year. Not enough, we need at least 700% per year to make it... :-)
05:25:42 <Sgeo> Can we, #esoteric, speak to the media?
05:25:43 -!- Sgeo has left (?).
05:25:48 -!- Sgeo has joined.
05:25:55 <Sgeo> Or pressure some group into doing so?
05:27:41 <Ilari> Best case would be avoiding RIR depletions entierely (because of insufficient demand to deplete RIRs)...
05:28:17 <Ilari> But that's incredibly optimistic...
05:29:12 <Ilari> IANA would still be depleted (essentially nothing can stop that now).
05:30:58 <Ilari> Remember, APNIC could justify allocation at any momemnt. And they might have to in just couple weeks...
05:33:35 <Ilari> And now there's talk about RIR depletion estimates being too optimistic by several months...
05:34:27 <Sgeo> You know what?
05:34:44 <Sgeo> Soonish, I'm going to write something, ask #esoteric to proof it, then send it somewhere
05:36:10 <Ilari> It gets terrifying when the most pessimistic model is the reality...
05:37:04 <Ilari> Okay, lagerholm depletion model was the more pessimistic one... But now it seems hopelessly optimistic...
05:37:18 <Sgeo> What can businesses do to prepare themselves?
06:28:28 -!- Goosey has quit (Ping timeout: 250 seconds).
06:31:38 -!- sebbu2 has joined.
06:33:12 -!- sebbu has quit (Ping timeout: 276 seconds).
07:00:17 -!- perdito has changed nick to perdito|afk.
07:03:02 -!- kar8nga has joined.
07:22:53 -!- wareya has joined.
07:25:09 -!- wareya_ has quit (Ping timeout: 240 seconds).
07:50:41 -!- FireFly has joined.
07:54:46 -!- kar8nga has quit (Remote host closed the connection).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:16:05 -!- MigoMipo has joined.
08:19:47 -!- MigoMipo_ has joined.
08:20:19 -!- MigoMipo has quit (Ping timeout: 245 seconds).
08:49:51 -!- FireFly|n900 has quit (Ping timeout: 245 seconds).
09:10:23 -!- FireFly|n900 has joined.
09:35:14 -!- Sgeo has quit (Read error: Connection reset by peer).
09:53:20 -!- GreaseMonkey has quit (Quit: ilua).
10:13:09 -!- nopseudoidea has joined.
10:20:56 -!- evincar has joined.
10:21:03 <evincar> Hey all.
10:21:28 -!- MigoMipo_ has quit (Read error: Connection reset by peer).
10:24:58 -!- evincar has quit (Client Quit).
10:32:14 -!- FireFly|n900 has quit (Ping timeout: 255 seconds).
10:32:55 -!- oerjan has joined.
10:33:01 -!- oerjan has quit (Client Quit).
10:33:24 -!- oerjan has joined.
10:33:39 <oerjan> /quit
10:33:49 -!- oerjan has quit (Remote host closed the connection).
10:38:03 -!- oerjan has joined.
10:38:03 -!- oerjan has quit (Client Quit).
10:39:15 -!- oerjan has joined.
10:39:43 <oerjan> æøå
10:40:54 <oerjan> !haskell "æ"
10:41:13 <Deewiant> æ
10:42:29 -!- FireFly|n900 has joined.
10:42:32 <oerjan> i discovered that my locale setup that got irssi to work with utf8 last time actually works by having an illegal locale which is reset to C, so some more tweaking is needed :D
10:42:49 <oerjan> !help
10:42:50 <EgoBot> help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
10:42:55 <oerjan> !haskell "æ"
10:42:58 <EgoBot> "\195\166"
10:43:31 <Deewiant> æ
10:43:36 <oerjan> !haskell putStrLn "\195"
10:43:39 <EgoBot>
10:43:47 <oerjan> good, seems it's still working
11:00:17 -!- nopseudoidea has quit (Quit: Quitte).
11:02:46 -!- perdito|afk has quit (Ping timeout: 245 seconds).
11:08:10 <oerjan> xkcd XD
11:17:00 <Vorpal> oerjan, heh
11:20:29 <Vorpal> oerjan, and I noticed the pirate theme of IWC is getting extremely absurd
11:20:34 <Vorpal> more than average for iwc that is
11:24:26 <oerjan> today's square root of minus garfield is rather swedish
11:35:14 -!- perdito|afk has joined.
12:12:40 -!- sebbu has joined.
12:13:05 -!- sebbu2 has quit (Read error: Connection reset by peer).
12:40:22 -!- perdito|afk has quit (Quit: perdito|afk).
12:40:42 -!- perdito|afk has joined.
12:47:40 <nooga> time to buy minecraft
12:47:40 -!- FireFly|n900 has quit (Ping timeout: 255 seconds).
12:49:10 <Slereah> I read that as Microsoft
12:49:14 <Slereah> Let's go buy Microsoft
12:53:00 <nooga> why not
13:10:02 -!- FireFly|n900 has joined.
13:10:02 -!- nopseudoidea has joined.
13:10:02 -!- FireFly|n900 has quit (Changing host).
13:10:02 -!- FireFly|n900 has joined.
13:18:31 -!- perdito|afk has changed nick to perdito.
13:27:03 -!- Phantom_Hoover has joined.
13:29:19 -!- Sasha2 has joined.
13:30:58 -!- Sasha has quit (Ping timeout: 265 seconds).
13:33:38 -!- elliott_ has joined.
13:33:53 <elliott_> Gregor: gcc just ate up your least favourite language.
13:38:28 -!- elliott_ has quit (Ping timeout: 265 seconds).
13:46:43 <Phantom_Hoover> Gregor, what's your least favourite language?
13:48:29 <Deewiant> Presumably Go
13:50:50 -!- elliott_ has joined.
14:04:58 -!- elliott_ has changed nick to elliott.
14:05:01 -!- elliott has quit (Changing host).
14:05:01 -!- elliott has joined.
14:11:52 -!- nopseudoidea has quit (Quit: Quitte).
14:18:30 <elliott> http://esolangs.org/wiki/Talk:INTERCAL#INTERCAL_is_not_Compiler_Language_With_No_Pronouncable_Acronym
14:20:55 <oerjan> ____ ___ __ ___ _ _ _____
14:20:55 <oerjan> ___| / _ \ \ \ / / | | | / \|_ _|
14:20:55 <oerjan> \___ \| | | | \ \ /\ / /| |_| | / _ \ | |
14:20:55 <oerjan> ___) | |_| | \ V V / | _ |/ ___ \| |
14:20:55 <oerjan> |____/ \___/ \_/\_/ |_| |_/_/ \_\_|
14:21:44 <oerjan> wtf happened to the two first lines
14:22:20 <oerjan> oh duh the second line starts with / :D
14:23:28 <quintopia> do better next time
14:24:12 <quintopia> your second "O" in WHOOSH could be better too
14:24:17 <oerjan> ____ ___ __ ___ _ _ _____
14:24:17 <oerjan> / ___| / _ \ \ \ / / | | | / \|_ _|
14:24:17 <oerjan> \___ \| | | | \ \ / /\ / /| |_| | / _ \ | |
14:24:17 <oerjan> ___) | |_| | \ V V / / | _ |/ ___ \| |
14:24:17 <oerjan> |____/ / \___/ \_/\_/ |_| |_/_/ \_\_|
14:24:24 <oerjan> GAH!
14:24:40 <oerjan> sed failure. oh missing the ^ :D
14:24:57 <oerjan> ____ ___ __ ___ _ _ _____
14:24:57 <oerjan> / ___| / _ \ \ \ / / | | | / \|_ _|
14:24:57 <oerjan> \___ \| | | | \ \ /\ / /| |_| | / _ \ | |
14:24:57 <oerjan> ___) | |_| | \ V V / | _ |/ ___ \| |
14:24:57 <oerjan> |____/ \___/ \_/\_/ |_| |_/_/ \_\_|
14:25:29 <quintopia> you should have saved it for when it made sense to the conversation at hand
14:25:34 <oerjan> quintopia: it's just figlet generated
14:25:53 <quintopia> fix the figlet
14:27:57 <oerjan> the second O is just kerned with the S
14:28:27 <quintopia> yes
14:28:33 <quintopia> and it shouldn't be
14:28:38 <quintopia> because it makes it look bad
14:28:55 <oerjan> ____ ___ __ ___ _ _ _____
14:28:55 <oerjan> / ___| / _ \ \ \ / / | | | / \|_ _|
14:28:55 <oerjan> \___ \| | | | \ \ /\ / /| |_| | / _ \ | |
14:28:55 <oerjan> ___) | |_| | \ V V / | _ |/ ___ \| |
14:28:55 <oerjan> |____/ \___/ \_/\_/ |_| |_/_/ \_\_|
14:29:47 <quintopia> i don't understand how i can read the sup-pixel message generator just fine, but i can't see the sub-pixels in your nick when you highlight me
14:31:09 <elliott> because the subpixel message generator is ridiculously hyper-saturated on purpose...
14:31:10 <elliott> duh
14:31:29 <elliott> compare http://www.grc.com/image/cttech2.gif
14:31:45 <quintopia> ah yes
14:31:53 <quintopia> i can see the subpixels quite easily inn that message
14:32:18 <quintopia> say something in magenta
14:32:38 <oerjan> magenta delenda est
14:32:39 <elliott> there's no colours in this channel.
14:32:52 <quintopia> oh right
14:33:06 <elliott> but okay
14:33:07 -!- nopseudoidea has joined.
14:33:10 <elliott> function feedthebear (enum[bear] whichone, enum[food] bearfood)
14:33:10 <elliott> begin
14:33:10 <elliott> bool fed;//if all goes well...
14:33:10 <elliott> whichone[call] ();
14:33:10 <elliott> try{
14:33:11 <elliott> whichone[eat] (bearfood);
14:33:13 <elliott> throw (whichone[eat](armp));//armp is a global indicating
14:33:15 <elliott> }//zookeeper's arm
14:33:17 <elliott>
14:33:19 <elliott> return (fed=TRUE);
14:33:21 <elliott> end;
14:33:23 <elliott> (Am I part of the curse now too?)
14:33:35 <quintopia> what's a magenter?
14:34:18 <oerjan> zook the eeper
14:35:06 <elliott> pikhq: please tell me why xorg is split into 3489573457839445 tarballs
14:35:42 <quintopia> i can see the subpixels a little bit in normal magenta text. i feel better.
14:37:02 <elliott> aargh, not all of Magenta is on reocities
14:41:34 -!- FireFly has quit (Quit: swatted to death).
14:42:55 <elliott> pikhq: Will you have me if I just package xorg as one gigantic package containing everything?
14:42:56 <elliott> *hate
14:43:38 -!- FireFly has joined.
14:44:27 <elliott> # Re-run the last command until a build succeeds.
14:44:30 <elliott> that is so, so reassuring
14:45:45 <elliott> "xserver ... requires ncurses"
14:46:54 -!- MigoMipo has joined.
14:59:20 -!- augur has quit (Remote host closed the connection).
14:59:43 -!- augur has joined.
15:04:21 -!- augur has quit (Ping timeout: 272 seconds).
15:09:45 -!- ais523 has joined.
15:09:46 -!- ais523 has quit (Changing host).
15:09:46 -!- ais523 has joined.
15:15:04 <elliott> Gregor: http://codu.org/imgs/dinosaurComic.php?panels=0,1,5&comics=1544,911,527&strip i made a terrible
15:15:05 <elliott> hi ais523
15:15:43 <elliott> Gregor: http://codu.org/imgs/dinosaurComic.php?panels=0,1,5&comics=1544,911,1252&strip t-rex imagines the upcoming discussion, badly
15:18:49 -!- ais523 has quit (Read error: Connection reset by peer).
15:19:17 -!- ais523 has joined.
15:19:20 <ais523> hi
15:19:35 <oerjan> ho
15:19:45 <pikhq> elliott: Because they decided to split it into multiple packages, and did it *far* too fine-grained.
15:20:04 <elliott> pikhq: yeah and now i am discovering the joy of their build system
15:20:11 <pikhq> (seriously, a package for a *subdirectory* of headers‽)
15:20:20 <elliott> pikhq: it depends on programs written in c++
15:20:22 <elliott> yaaaaaaay.
15:20:39 <elliott> pikhq: anyway there's only going to be one single xorg package in Kitten because to hell with splitting this up
15:20:59 <elliott> pikhq: but um this is kind of painful you should do the xorg package :P
15:21:18 <elliott> oh no, it is disregard my cflags and -O2 instead of -Os, this is the sad
15:21:26 <elliott> sad day
15:21:26 -!- sftp has joined.
15:21:31 <elliott> and it may in fact be building git xorg instead of 7.5
15:21:33 <elliott> which would be bad
15:24:12 <pikhq> elliott: Look at what Gentoo does for the xorg package for inspiration.
15:24:34 <pikhq> (should be fairly easy to grok; Portage runs on simple shell scripts.)
15:25:18 <elliott> pikhq: So, um, I have a Dilemma. This patch: http://marc.info/?l=linux-kernel&m=128978361700898&w=2 is pretty much agreed by everyone to be on the order of, say, sliced bread in AWESOMENESS. There are videos showing before/afters where Linux is being compiled with -j64, 1080p video is playing, webpages are being scrolled and -- LIKE SOME KINDA MAGIC OS FROM THE FUTURE LIKE EVERY COMMERCIAL OS EVER -- everything just goes smoothly. (The before video
15:25:18 <elliott> uh, less astonishing). Apparently -j128 is even more dramatic but makes for a bad demonstration because the "before" video is a static image of frozenness.
15:25:36 <elliott> pikhq: BUT BUT BUT not only is this patch CFS-specific, but it uses cgroups! BFS explicitly does not have cgroups!
15:25:50 <elliott> Thus a DILEMMA! Enhanced desktop performance OR-- enhanced desktop performance??
15:25:54 <elliott> ;____;
15:27:32 <ais523> elliott: do you know what the patch does, specifically?
15:27:53 -!- sftp_ has joined.
15:27:58 -!- sftp has quit (Ping timeout: 255 seconds).
15:27:58 <elliott> ais523: it's summarised in http://marc.info/?l=linux-kernel&m=128978361700898&w=2
15:28:04 <ais523> it improves performance in the case where you run a lot of background processes in a terminal and do something interactive on the GUI or a different terminal
15:28:09 <elliott> ais523: basically it automatically creates cgroups -- not very smartly at the moment, but --
15:28:09 <elliott> right
15:28:17 <elliott> but "supposedly" it's going to be enhanced further
15:28:32 <elliott> ais523: I suppose it does seem a bit niche, but -- I mean -- I do often get sluggishness when compiling stuff.
15:28:34 <elliott> And that's rather irritating.
15:28:50 <elliott> OTOH, it means using CFS, whereas BFS improves desktop performance in, like, every other case.
15:28:54 <ais523> well, I compile at -j1
15:29:33 <elliott> ais523: Mind you, I am going to be compiling stuff a *lot*, thanks to all the Kitten packages :)
15:29:42 <elliott> But yeah, BFS is probably better overall.
15:29:59 <ais523> hmm, according to Slashdot, there's now a mobile phone plan with a 21Mbps speed and a 5GB per month cap
15:30:12 <ais523> conclusion: you can only use it for around half an hour per month
15:30:53 <elliott> ha
15:31:09 -!- yorick has quit (Remote host closed the connection).
15:31:13 <elliott> pikhq: Does such a thing as NON-modular Xorg still exist?
15:31:41 <ais523> elliott: Wayland!
15:31:42 * ais523 runs
15:32:08 <pikhq> elliott: Not any more.
15:32:22 <elliott> ais523: I'm pretty sure the only way to get X running on Wayland is to use Xorg :P
15:32:25 <elliott> or something
15:32:28 <elliott> pikhq: ;_;
15:32:40 <elliott> pikhq: How old is the last non-modular version? How long will I be able to use it before it rots to death? :P
15:32:41 * pikhq should get coffee
15:33:23 <pikhq> elliott: 5 years.
15:33:29 <pikhq> (X11R6.9)
15:33:41 <elliott> pikhq: i think that is totally practical and i should use it, don't you totally agree???
15:33:53 <elliott> :P
15:34:04 <pikhq> elliott: How do you feel about autoconfiguration?
15:34:28 <elliott> pikhq: well since I don't have udev or HAL I don't think I can have that anyway
15:34:36 <elliott> driver support is a rather bigger issue :P
15:34:39 <pikhq> Mdev?
15:35:14 <pikhq> Anyways, it should have 2D acceleration about as good as right now.
15:35:40 <ais523> annoying Firefox feature I just figured out how to turn off: sending what you typed to Google if it isn't a URL
15:35:54 <elliott> pikhq: mdev is vaguely compelling, but it's still udev. But you know what? devfs is back in the kernel. Seriously.
15:36:10 <elliott> pikhq: They snuck it in -- newly-implemented -- under the pretence of being a temporary devfs for initramfses before udev is started.
15:36:18 <elliott> pikhq: It's called devtmpfs, it runs on a tmpfs, and it's fully-featured.
15:36:20 -!- Sasha has joined.
15:36:20 -!- sftp has joined.
15:36:36 -!- sftp_ has quit (Ping timeout: 276 seconds).
15:36:45 -!- Sasha2 has quit (Read error: Connection reset by peer).
15:37:21 -!- augur has joined.
15:37:53 <elliott> pikhq: ...so yeah, I was pretty much just going to use that.
15:38:39 <elliott> wrt mdev, there's also http://code.google.com/p/hotplug2/
15:39:13 <elliott> pikhq: All these things aren't very useful when you don't have modules in your kernel, of course.
15:39:30 <Phantom_Hoover> So devfs is A Bad Thing?
15:39:55 <elliott> Phantom_Hoover: No, devfs is A Good Thing.
15:40:10 <Phantom_Hoover> Is udev A Bad Thing, then?
15:40:37 <elliott> It had some implementation problems, and the kernel idiots decided that rather integrating a proposed new implementation, they should add pointless flexibility (you can make /dev/sda1 be called /dev/frobni1cator instead! USEFUL!) and move everything to userspace (because Linux is a microkernel amirite guyz?).
15:40:46 <elliott> udev isn't necessarily terrible. It has some valid usecases.
15:40:48 <elliott> But it's really overblown.
15:45:45 <coppro> elliott: What was the 08:33 < elliott_> Gregor: gcc just ate up your least favourite language.
15:45:50 <elliott> coppro: Go.
15:45:54 <coppro> elliott: ate up?
15:45:55 <elliott> coppro: gccgo is being merged into gcc.
15:46:00 <coppro> elliott: oh
15:46:01 <coppro> :(
15:46:14 <elliott> coppro: Dude, it also has Fortran and Objective-C.
15:46:17 <elliott> It's not exactly an endorsement.
15:46:19 <elliott> And Ada.
15:46:29 <Gregor> And Java
15:46:32 <Gregor> And C++
15:46:33 <Gregor> And C :P
15:46:59 <elliott> Anyway Go is a perfectly competent language in a certain niche that EVERYONE IS DETERMINED TO PRETEND IT DOES NOT EXIST IN.
15:47:05 <elliott> And with rather bad marketing materials.
15:47:36 <elliott> Nobody uses gccgo anyway, the Plan 9-style compilers are far better :P
15:47:37 <coppro> elliott: what's this about a niche?
15:47:59 <elliott> coppro: systems server programming. nothing else.
15:48:06 <elliott> more or less
15:51:04 <ais523> elliott: *Issue 9
15:51:16 <elliott> ais523: no, that issue was the stupidest thing ever
15:51:33 <ais523> indeed
15:51:45 <ais523> can't you call it Issue 9 just because the name "Go" is stupid. though?
15:51:48 <ais523> s/./,/
15:51:57 <ais523> umm, s/,/c/
15:52:00 <ais523> s/\./,/
15:52:00 <elliott> ais523: (1) yes, you can totally own the name "go", that's not one of the most common words ever; (2) your language is called "Go!" on all your publications, with an exclamation mark, so you can't even claim identicality
15:52:13 <elliott> (3) lol internet bandwagon "because it was done in google 20% time it's google's projects now let's lynch evil google"
15:52:16 <ais523> elliott: I don't think there was trademark infringement
15:52:26 <elliott> ais523: how's the name Go stupid, it's just... not an interesting name
15:52:43 <ais523> too easily confused with the typical word without context
15:52:47 -!- Gregor has set topic: WE ARE SOMEWHAT SPARTA | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
15:53:22 <Gregor> ais523: Even WITH context; it's too general of a word.
15:54:06 <elliott> Gregor: isn't it THIS IS SOMEWHAT SPARTA
15:54:06 <oerjan> s/go/face/
15:54:18 <elliott> s/word/face/
15:54:23 <elliott> Your face is way too general.
15:54:41 <Gregor> elliott: Yes, but WE are somewhat sparta.
15:54:50 <Gregor> elliott: Also, no.
15:54:52 <elliott> Your face is somewhat sparta.
15:54:54 <Gregor> elliott: It's "I AM SOMEWHAT SPARTA"
15:55:02 <elliott> Ah.
15:57:01 <elliott> pikhq: ouch, i just realised something about busybox
15:57:19 <Gregor> Somebody needs to invent descenders; like suspenders, but worn under your pants and keeps your shirt perfectly tucked.
15:57:40 <elliott> No they don't.
15:59:00 <ais523> Gregor: I love that concept
15:59:59 <Gregor> I'm not QUITE sure how they'd work just yet, but suffice it to say I'm tired of having to resort to the Picard Maneuver :P
16:00:34 -!- ais523 has quit (Remote host closed the connection).
16:00:45 <elliott> Picard... Maneuver.
16:01:20 <pikhq> elliott: ?
16:01:35 <elliott> <Gregor> I'm not QUITE sure how they'd work just yet, but suffice it to say I'm tired of having to resort to the Picard Maneuver :P
16:02:57 <pikhq> But, yeah, udev's only failing is that it's a bit overkill.
16:03:14 <pikhq> Which compared to some of the other odd shit done with /dev, makes it genuinely nice. :P
16:03:41 <pikhq> (devfs's organization scheme is, well, WTF.)
16:04:14 <elliott> pikhq: Yeah, but fuck them for not accepting mini-devfs before udev came along.
16:04:20 <Gregor> elliott: In TNG, Patrick Stewart adjusted his shirt whenever he stood up; that adjusting is the Picard Maneuver :P
16:04:45 <elliott> Gregor: So is http://memory-alpha.org/wiki/Picard_Maneuver the spaceship analogue to adjusting your shirt?
16:04:49 <elliott> Say yes.
16:04:54 <Gregor> elliott: Let's go with yes.
16:04:58 <elliott> And oh god why hasn't Memory Alpha switched from Wikia.
16:05:01 <oerjan> very fast adjustment
16:05:01 <Gregor> elliott: However, that name is actually just the source of the JOKE :P
16:05:07 <elliott> Whyyyyyyyyyyyyyyyyy.
16:05:13 <elliott> Gregor: THERE IS NO JOKE ONLY FACTUALS
16:05:24 <elliott> "However, because the release of Star Trek took place nearly simultaneously across the world, the community has taken the decision to lock the English edition of Memory Alpha to editing from 2000 UTC on May 6th until 0400 UTC on May 9th, in order to allow the users of Memory Alpha time to see the film without having to worry about being spoiled before it was (technically) released."
16:06:30 <elliott> This is why TOS sucked: "...that the original version of the script for Star Trek: The Next Generation's "Conspiracy" did not feature alien parasites? The 'conspiracy' in question was simply a military coup within Starfleet, but Gene Roddenberry vehemently opposed such an idea, since he believed Starfleet would never stoop to such methods; thus the alien angle was introduced at his insistence."
16:07:33 <elliott> pikhq: Some parts of BusyBox require suid, like su, passwd, ping, traceroute. Apparently you're meant to make BUSYBOX ITSELF suid. That includes "ls" and "mv".
16:07:40 <elliott> It says it drops permissions if it doesn't need them, but uh.......
16:08:04 <elliott> Selected by: LOGIN || PASSWD || SU || VLOCK || IPCRM || IPCS && PLATFORM_LINUX || CRONTAB
16:08:12 <elliott> TODO: Disable those, disable suid/sgid handling, build separate "busybox-suid".
16:10:37 <elliott> │ │(1024) Maximum length of input (NEW) │ │
16:10:38 <elliott> lol
16:15:58 <Phantom_Hoover> Gregor, soo, is Go your most hated language?
16:17:05 -!- nopseudoidea has quit (Quit: Quitte).
16:18:45 <elliott> pikhq: BusyBox doesn't compile with dietlibc, using pcc or gcc. For fuck's sake.
16:39:44 <Slereah> http://abstrusegoose.com/323
16:41:22 <elliott> lawl
16:45:14 <Phantom_Hoover> Sgeo will still be useful in the 24th century.
16:45:20 <Phantom_Hoover> What a terrifying thought.
16:52:47 -!- nopseudoidea has joined.
17:07:27 <Phantom_Hoover> elliott, when will I get my specs???
17:07:37 <elliott> Phantom_Hoover: wut? oh right
17:07:46 <elliott> Phantom_Hoover: uh, what was your budget again :P
17:07:48 <Phantom_Hoover> Punctuation is a poor replacement for the full range of intonation.
17:07:56 <elliott> also i refuse to do it unless the first os you install on it is kitten
17:08:00 <Phantom_Hoover> elliott, £800 was the absolute upper bound.
17:08:24 <Phantom_Hoover> OK, I'll be the flagship Kitten user.
17:09:38 <elliott> Phantom_Hoover: You crazy.
17:09:54 <Phantom_Hoover> elliott, of course!
17:10:04 <elliott> Phantom_Hoover: (Note that the installation procedure involves an Ubuntu CD and a lot of manual installation :P)
17:10:23 <Phantom_Hoover> elliott, can I install Debian first?
17:10:41 <elliott> Phantom_Hoover: I said first OS! My demands are NON-NEGOTIABLE except under EXTREME circumstances.
17:10:52 <elliott> Phantom_Hoover: (If you only use Debian to install Kitten that is okay.)
17:10:57 <Phantom_Hoover> OK.
17:11:02 <Phantom_Hoover> I shall do that.
17:11:29 <elliott> Phantom_Hoover: I don't actually intend to force you to use Kitten :P
17:11:41 <Phantom_Hoover> elliott, suuuuuure.
17:12:18 <Phantom_Hoover> You know, the suffix "-matic" is underused in hardware names.
17:13:03 <Phantom_Hoover> It would give everything a nice Wallace and Gromit-y feel.
17:13:13 <oerjan> crunchomatic
17:13:40 <Phantom_Hoover> Processomatic.
17:13:49 <Phantom_Hoover> Memory-o-mat.
17:15:12 <Phantom_Hoover> Diskifier.
17:17:05 <fizzie> "Added /kill command. Does 1000 points damage to the player". Well, that's certainly a novel way to solve the lack of /home.
17:17:26 <fizzie> "The join server page now remembers the port as well as the ip", so it's not all bad.
17:18:35 <elliott> fizzie: Yeah, he said he'd add that but seriously fuck that.
17:18:41 <elliott> fizzie: Got lost? HAHA FUCK YOU YOU GET TO LOSE ALL YOUR ITEMS
17:19:11 <fizzie> "Fixed a bug where joining a server on a specific port caused the client to forget all keybindings". This has to be among the most random things ever.
17:19:41 <elliott> fizzie: I think Notch actively tries to intertwine EVERY SINGLE CODE PATH.
17:21:11 -!- nopseudoidea has quit (Quit: Quitte).
17:24:19 -!- Zuu has quit (Ping timeout: 272 seconds).
17:24:58 -!- Zuu has joined.
17:25:54 <elliott> Phantom_Hoover: Athlon II X4, quad core, 3 GHz, £74.78 y/n
17:26:22 <Phantom_Hoover> elliott, I'm not employing you to give me decisions to make!
17:26:36 <elliott> Phantom_Hoover: Oh yes you are!
17:26:58 <Phantom_Hoover> elliott, I can't make decisions! I'm the president!
17:27:02 * oerjan vehemently agrees with Phantom_Hoover on principle
17:27:12 <elliott> 20:21:42 <elliott> /home/elliott/kitten/stage3/include/dietref.h:-21: error: __PCC__ redefined
17:27:12 <elliott> 20:21:43 <elliott> previous define: x.c:-21
17:27:16 <elliott> having this problem again :DDD
17:28:42 <Phantom_Hoover> elliott, more serious reason: for all I know, an Athlon II [...
17:28:51 <Phantom_Hoover> *] could be a block of cheese.
17:29:10 <elliott> Phantom_Hoover: It is.
17:29:37 <Phantom_Hoover> elliott, Is it a good block of cheese for processing?
17:30:23 <elliott> Yes.
17:30:40 <Phantom_Hoover> Then it can go on the list.
17:32:24 <Phantom_Hoover> elliott, also, what kind of cheese?
17:32:53 <elliott> Phantom_Hoover: Athlon.
17:33:07 <Phantom_Hoover> Not one I've heard of.
17:33:22 <elliott> Phantom_Hoover: By the way, I'm not going to help you assemble this thing; don't forget the jumpers and if you fry stuff, you get to buy it again.
17:33:57 <Phantom_Hoover> Yes, this pushes it into thought experiment, but I don't really care.
17:34:12 -!- oerjan has quit (Quit: leaving).
17:34:36 <elliott> Phantom_Hoover: Eh?
17:34:50 <Phantom_Hoover> elliott, CRAZY, REMEMBER
17:35:09 <elliott> Phantom_Hoover: I am experiencing rapidly increasing doubts that I am using my time in a worthwhile manner :P
17:35:18 <Phantom_Hoover> SO AM I
17:37:28 <Phantom_Hoover> PERHAPS THIS IDEA WAS NOT THE BEST
17:39:27 <Phantom_Hoover> That is because the best idea is objectively making a ladder to the moon out of sausages.
17:42:17 <Vorpal> elliott, hm what are you doing then?
17:42:24 <Vorpal> (kitten or mc?)
17:43:03 <elliott> Vorpal: Neither!
17:43:08 <Vorpal> elliott, oh?
17:43:31 <Vorpal> elliott, so what is it that you doubt is a worthwhile use of your time?
17:43:43 <elliott> Long story :P
17:43:49 <elliott> Hey, renicing Xorg to -8 is great.
17:43:58 <Vorpal> elliott, uh uh
17:44:08 <elliott> It totally is.
17:44:29 <Vorpal> elliott, your system must be very heavily loaded with something else then?
17:44:42 <elliott> I just tried this -j64 thing, since it's so popular. :p
17:44:59 <Vorpal> elliott, ah. well that sounds silly
17:45:11 <elliott> Absolutely.
17:45:32 <Vorpal> elliott, also depending on what compiler you use: it will probably be swap trashing
17:45:38 <Vorpal> in which case nice -8 won't help that much
17:46:02 <elliott> It wasn't.
17:46:10 <elliott> I have 4 GiB of RAM and BusyBox probably doesn't require *that* much RAM to build.
17:46:51 -!- oerjan has joined.
17:51:32 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
17:58:11 <Vorpal> hah, this miscompiles on gcc on lucid at -O2 or higher. Works fine on later gcc versions.
17:58:35 <Vorpal> and yes, I need -O2 or higher, the difference is about 3x speedup
17:58:36 <elliott> Vorpal: define this
17:58:46 <elliott> Vorpal: also, tried -Os? :p
17:58:47 <Vorpal> elliott, cython program
17:58:55 <Vorpal> elliott, and no I haven't, willl
17:58:58 <Vorpal> will*
17:59:25 <Vorpal> elliott, -Os also broken
17:59:28 <elliott> Vorpal: (tried statically linking with dietlibc at -Os? that'll be even smaller)
17:59:32 <elliott> I meant as far as speed goes
17:59:38 -!- ais523 has joined.
17:59:38 <Vorpal> elliott, doesn't help since it miscompiles :P
17:59:44 <elliott> so use a newer gcc
17:59:45 <elliott> :p
17:59:52 <Vorpal> elliott, also I go for speed here, not size
18:00:04 <ais523> Vorpal: -Os is often fastest
18:00:06 <ais523> due to fitting in cache better
18:00:19 <elliott> what ais523 said
18:00:24 <ais523> not always, though
18:00:25 <Vorpal> ais523, I tried that now. But this is numerical-intensive and seems to benefit from loop unrolling
18:00:34 <elliott> Vorpal: that's also why i said dietlibc; it doesn't help if glibc is huge
18:00:35 <elliott> erm
18:00:37 <elliott> Vorpal: that's also why i said dietlibc; it doesn't help if your libc is huge
18:01:09 <Vorpal> elliott, also it is long running, so loading time for libc is not important, if large parts are unused: so what
18:01:30 <elliott> Vorpal: i don't think you understand cache
18:01:37 <Vorpal> elliott, anyway -O3 is about 2x faster than -Os
18:01:40 <elliott> also, *individual routines* in glibc are huge
18:01:41 <Vorpal> elliott, I just checked
18:01:42 <elliott> Vorpal: on glibc, perhaps.
18:01:53 <elliott> Currently defined functions:
18:01:54 <elliott> passwd, ping, ping6, su
18:01:55 <elliott> smallest busybox evar
18:02:37 <Vorpal> elliott, also python doesn't support static linking. I checked. At least if you use tkinter.
18:02:47 <elliott> you use tkinter?
18:02:56 <Vorpal> elliott, in one mode yes
18:02:59 <Vorpal> elliott, since it is a game AI
18:03:15 <Vorpal> I need to visualise that.
18:03:18 <elliott> Vorpal: another reason you can't use kitten, then!
18:03:42 <Vorpal> elliott, in fact it doesn't work if you use any sort of extension module in C
18:04:01 <Vorpal> elliott, you are restricted to core python + pure python extensions
18:04:04 <Vorpal> have fun
18:04:09 <Vorpal> no numpy I think for example
18:04:43 -!- Phantom_Hoover has joined.
18:04:43 <elliott> Vorpal: um, or i could just build those in.
18:04:53 <elliott> duh
18:05:07 <Vorpal> elliott, and do you know what I had to add to fix unresolved symbols when linking against libpython2.7.a?
18:05:35 <elliott> no, i'm not psychic
18:05:44 <elliott> -rwxr-xr-x 1 elliott elliott 1.6M Dec 3 17:54 busybox
18:05:44 <elliott> -rwxr-xr-x 1 elliott elliott 770K Dec 3 18:03 busybox-suid
18:05:48 <elliott> now if only they built against non-gcc/glibc
18:05:52 <elliott> well, also /uClibc
18:05:59 <Vorpal> elliott, -lm -lz -lssl -lcrypto -ldl (!) -lutil -lpthreads
18:06:11 <elliott> Vorpal: i can patch, you know.
18:06:25 <Vorpal> elliott, sure. But it will be a lot of work
18:06:30 <elliott> not really
18:06:34 <elliott> most things aren't as stupid as python
18:06:46 <Vorpal> elliott, well for python, perl and other similar languages
18:06:58 <Vorpal> true, not for most C programs
18:07:00 <elliott> and ruby, say
18:07:01 <elliott> ok, 3 programs
18:07:04 <elliott> think i can handle that.
18:07:08 <Vorpal> elliott, yeah probably ruby too
18:07:29 <quintopia> what is the goal of kitten again?
18:08:00 <Vorpal> elliott, lua is probably somewhat "saner" (for some values of "saner") due to it's more limited scope
18:08:13 <elliott> quintopia: to not irritate the fuck out of me
18:08:16 <elliott> that's about it
18:08:35 <quintopia> elliott: and you're doing that by avoiding glibc?
18:08:47 <Vorpal> erlang I know can load native modules, and it is used for some stuff in the standard distribution, but I don't think it is quite as prolific as with python and so on
18:08:56 <Vorpal> hm
18:08:59 <elliott> quintopia: avoiding gcc, glibc, dynamic linking, gnu coreutils
18:09:11 <elliott> and a few other things too, like initramfs.
18:09:15 <elliott> and kernel modules.
18:09:16 <elliott> and /usr.
18:09:34 <Vorpal> elliott, you know that the kernel uses an initramfs always? But the default one doesn't do very much
18:09:49 <Vorpal> it has one that basically does next to nothing by default built in iirc
18:09:56 <elliott> Vorpal: well, you can disable the initramfs code outright
18:10:01 <elliott> and it tries the olde-style "let's find a root partition!" boot.
18:10:08 <Vorpal> hm
18:10:19 <quintopia> elliott: is kitten somewhat sparta?
18:10:41 <elliott> quintopia: it is so sparta that anyone who types sparta into it gets instantly decapitated.
18:12:59 <quintopia> elliott: i am convinced. it is clearly the best distro ever invented.
18:13:35 <elliott> also, everyone who bugs me about it gets a fake package server filled with rootkits
18:13:44 <elliott> be afraid. be very afraid
18:14:01 <oerjan> <elliott> quintopia: to not irritate the fuck out of me <-- i sense someone fighting windmills...
18:14:43 <elliott> oerjan: hey, on the off-chance that they are giants...
18:15:00 <Vorpal> oerjan++
18:15:12 <Vorpal> elliott, any good at reversi?
18:15:35 <quintopia> ah well, in elliott's world there are far more giants than actual windmills. better to just destroy them all than waste time analyzing.
18:15:41 <elliott> Vorpal: no good at it, but i like it
18:16:10 <elliott> quintopia: do you object to someone making their own fortress without a single windmill in it if they like it better?
18:16:19 <quintopia> i do not
18:16:22 <Vorpal> elliott, ah. Could you beet a greedy AI (one that just checks score after one move and goes for the best)
18:16:25 <Vorpal> beat*
18:16:47 <quintopia> especially if the fortress contains a bottomless pit
18:16:50 <elliott> at least i'm in good company, what with the plan 9 team decrying the same things, and among their membership are the people who created Unix...
18:16:58 <quintopia> and is surrounded by barbed wire and magical curses
18:16:59 <elliott> Vorpal: no, but I can sure as hell try and fail to
18:17:12 <elliott> quintopia: actually it's 128x128x128 and made out of glass.
18:17:22 <elliott> LIKE MY HEART
18:17:24 <quintopia> ah yes
18:17:29 <Vorpal> elliott, hm, but it is trivial to beat that, just think one move ahead and make sure it don't get corners.
18:17:36 <quintopia> i will tunnel into your glass heart
18:17:42 <quintopia> and fill it with water
18:17:43 <Vorpal> then you have a decent chance of beating such an AI
18:17:45 <quintopia> mwahahahaha
18:17:47 <elliott> Vorpal: i have been beaten by a moron playing for the first time.
18:17:51 <Vorpal> elliott, heh
18:18:25 <quintopia> elliott: try the positional heuristic. i hear it's surprisingly good for how simple it is.
18:18:58 <elliott> Vorpal: i'm lost in the north!
18:19:09 <Vorpal> elliott, okay. So an alpha-beta-pruning with corner-favouring heuristics with a ply depth of 7 you wouldn't manage to beat I presume? Oh and it also uses number of possible moves in the heuristics. This seems to help quite a bit.
18:20:00 <Vorpal> note: ply = 7 needs cython. With pure python you are stuck at ply = 4 or so
18:20:23 <quintopia> and then add on a neural-net-based action-state heuristic learned by playing the AI against itself 150,000 times and you've got a real winner :P
18:20:36 <Vorpal> quintopia, that would be cool
18:20:51 <Vorpal> quintopia, but I think it is outside the scope of the assignment I wrote this for :P
18:21:05 <quintopia> Vorpal: it beats the positional heuristic 76% of the time!
18:21:14 <quintopia> and that's at 1-ply!
18:22:11 <Vorpal> quintopia, someone made such an AI?
18:22:12 <Vorpal> hm
18:22:28 <Vorpal> quintopia, and I wonder how large the ANN is
18:22:42 <Vorpal> (and how long it takes to evaluate)
18:23:44 <quintopia> Vorpal: 3 layers. the input layer is large enough to accomodate a board and a set of possible actions, and the output is a real value indicating confidence that that is the correct move. one hidden layer.
18:24:12 <fizzie> Reversi/othello is a perennial... well, maybe not quite a favourite, but at least a recurring topic on the AI course.
18:24:25 <quintopia> so, once you've trained it (which would take a very long time since we're using boosting with straight victory-condition-backpropagation) it's essentially instantaneous.
18:25:20 <quintopia> fizzie: my school does a new variation on Isolation every time the course is taught. they make up a new one each year so you can't cheat :P
18:25:41 <quintopia> and it's always in Lisp. the proper AI language.
18:27:00 <fizzie> We used to have a Scheme-based framework for the "if you don't have your own topic" game, for which there is also a tournament between the participants' programs.
18:27:39 <quintopia> yeah that's what isolation was for. mine got second place in the tournament.
18:27:58 <fizzie> Sadly it's Java -- well, JVM, anyway -- now, due to all the complaints after our introduction-to-programming courses switched from Scheme to Java.
18:28:12 <quintopia> lame
18:29:30 <fizzie> The Java version lets the participants do quite a lot more computation, though. (The Scheme one was built on top of the SICP metacircular interpreter for instruction-limits and sandboxing.)
18:30:11 <elliott> <quintopia> and it's always in Lisp. the proper AI language.
18:30:19 <elliott> lisp was never designed for ai and its association with ai is largely accidental
18:30:32 <quintopia> but real
18:30:46 <elliott> perhaps, but largely baseless.
18:30:48 <Vorpal> <fizzie> Reversi/othello is a perennial... well, maybe not quite a favourite, but at least a recurring topic on the AI course. <- yeah it is easier to work on than chess but not as trivial as tic-tac-toe
18:31:05 <quintopia> lisp-likes (and other functional languages i suppose) have some nice properties for AI implementation
18:32:29 <fizzie> Chess is an even more frequent topic, I believe. Of course there's the code-stealing-from-the-webs problem, but on the other hand we don't so much care about the implementations (it's not a programming course), we just grade the reports.
18:33:00 <Vorpal> quintopia, "Isolation"?
18:34:21 <Vorpal> fizzie, at least python is somewhat less painful than java
18:34:29 <elliott> quintopia: lisp was rarely used functionally in ai
18:35:17 <quintopia> elliott: i used it functionally. what's wrong with other people?
18:35:29 <elliott> quintopia: you're talking about people in the 50s, 60s, 70s here
18:35:32 <elliott> LABELS was very common.
18:35:42 <quintopia> elliott: is there a language that doesn't suck but compiles to run as fast as C or fortran?
18:35:43 <elliott> i doubt you would have been significantly more "enlightened" than them at the time
18:35:48 <elliott> quintopia: um, haskell?
18:35:49 <fizzie> Vorpal: Isn't there some sort of Jython? We allow any JVM languages (though we only support Java), after all.
18:36:04 <elliott> Yes, there's Jython.
18:37:27 <fizzie> Our competition runs on http://www.niksula.hut.fi/~svirpioj/hierarkia/ partly due to the moderately higher-than-chess branching factor, partly because it's so unknown.
18:37:42 <Vorpal> fizzie, hm
18:38:14 <Vorpal> fizzie, is that the usual one you show each year?
18:38:17 <fizzie> Not many have done !Java; I think two in the three or so years the Java framework's been there.
18:38:24 <fizzie> Yes, the same.
18:38:41 <Vorpal> fizzie, also no Swedish version? Strange for .fi
18:38:53 <Deewiant> Probably hasn't been requested
18:38:56 <Vorpal> ah
18:39:03 <Deewiant> They're legally obligated to provide one if somebody does request it
18:39:05 <quintopia> Vorpal: http://boardgamegeek.com/boardgame/1875/isolation this is the original
18:39:11 <Vorpal> Deewiant, ah I see.
18:39:23 <fizzie> We're not that serious about the whole "second official language" business. :p
18:39:57 <Deewiant> If you want, I can cause trouble by demanding it in Swedish
18:40:04 <Vorpal> quintopia, that looks like it has a high branching factor
18:40:28 <Deewiant> Although I'm not sure if that implies that I want everything in Swedish, which might screw me over in the exam
18:40:34 <Vorpal> Deewiant, well, I don't see the point of doing that
18:40:39 <fizzie> Deewiant: I'm not sure whose problem it would become. Possible the responsible teacher.
18:40:57 <Deewiant> Who'd delegate it to you, presumably
18:41:13 <quintopia> Vorpal: it's basically a solved game in its original form. probably second player win. branching factor is at most 8.
18:41:14 <Vorpal> fizzie, what is your role in that course btw?
18:41:25 <Vorpal> quintopia, oh? No worse. Hm
18:41:35 <fizzie> Do we even guarantee Swedish on all courses? I don't really think so.
18:42:27 <Deewiant> I think you're supposed to, but nobody really cares
18:42:52 <quintopia> Vorpal: but the tournament gives each player a limited total time for all moves combined, so there's still not enough time for more than five or six plies on your longest turns.
18:43:05 <Vorpal> quintopia, hm reversi has something like 10 as the branching factor right?
18:43:20 <quintopia> max or average?
18:43:24 <Vorpal> quintopia, average
18:43:35 <Vorpal> quintopia, max must be quite a bit higher than that
18:43:36 <fizzie> I think my course-title is "course assistant"; I basically run the tournament and grade the programming assignments (both tournament-participating and custom-topics).
18:44:15 <quintopia> i don't know for sure, but i would guess it's somewhere in the 4-8 range based on the games i've played.
18:45:03 <Vorpal> hm I wonder if memoising would help for reversi. Could speed up the computation at the next turn if it turns out we were right. And possibly during the same turn if we get the same board state down multiple paths. I guess I'll have to test.
18:45:20 <quintopia> Vorpal: the "queen motion" version of isolation has a huge branching factor though. like...more than 10 on average i think.
18:45:41 <Vorpal> quintopia, how does queen motion apply to that game?
18:46:18 <Vorpal> oh wait
18:46:22 <quintopia> the standard isolation uses king motion: move to an adjacent square. queen motion allows you to move as far as you want along a straight unobstructed path.
18:46:34 <Vorpal> you don't refer to the "fit queens on a board" problem
18:46:41 <Vorpal> now it makes sense
18:46:53 -!- myndzi has quit (Read error: Connection reset by peer).
18:47:23 -!- myndzi has joined.
18:47:48 <fizzie> Hierarchy has on average somewhere around 50 valid moves, based on tournament statistics.
18:49:12 <Vorpal> ah
18:50:11 <quintopia> niiiice
18:50:21 <quintopia> what is Go's branching factor?
18:51:05 <Vorpal> quintopia, more than chess iirc
18:51:06 <fizzie> A lot more, I think.
18:51:13 <quintopia> indeed
18:51:30 <Vorpal> hm how painful would a multi-core alpha-beta pruning algorithm be?
18:51:39 <Vorpal> presumably you could just split it at the top node
18:51:40 -!- benuphoenix has joined.
18:51:42 <benuphoenix> hi
18:52:01 <Vorpal> and to n child node at the same time (n being the number of CPU cores)
18:52:22 <benuphoenix> i accidently ordered something online and want to talk about it
18:52:32 <benuphoenix> http://www.amazon.com/Serve-Man-Cookbook-People/dp/1880448823
18:52:45 <benuphoenix> trying to cancel the order
18:53:00 <Vorpal> are you sure you are in the right channel?
18:53:22 <benuphoenix> is this #complain
18:53:24 -!- Vorpal has set topic: WE ARE SOMEWHAT SPARTA no| http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
18:53:27 <fizzie> Arimaa is said to have a branching factor of 17281 on average, but I guess that was one of their deign goals.
18:53:27 <Vorpal> err
18:53:30 -!- Vorpal has set topic: WE ARE SOMEWHAT SPARTA | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
18:53:33 <Vorpal> no it isn't :P
18:53:35 <benuphoenix> sorry
18:53:49 <Vorpal> fizzie, arimaa? never heard of that one
18:54:08 <Vorpal> fizzie, but I guess 2 ply is max there
18:54:12 <Vorpal> or even 1 ply
18:54:14 <fizzie> Uh, it's been talked on this channel several times.
18:54:21 <fizzie> Due to the patentedness.
18:54:27 <fizzie> And weirdo license.
18:55:34 <Vorpal> hm
18:56:34 <benuphoenix> i'm trying to figure out the speed equations for starburst. do you know where i should go?
18:58:23 -!- benuphoenix has quit (Quit: leaving).
19:03:11 -!- cheater99 has quit (Ping timeout: 245 seconds).
19:10:36 -!- Phantom_Hoover has set topic: WE ARE SOMEWHAT SPARTA AND SOMEWHAT ATHENS | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
19:10:48 <oerjan> that's weird, i thought i'd seen the nick benuphoenix here before
19:12:00 <elliott> you have
19:12:04 <elliott> he's a regular offtopicker
19:12:16 <oerjan> oh
19:13:05 <elliott> pikhq: stop me from writing my own coreutils
19:13:53 <oerjan> i guess he'll just have to keep the book then. which means, of course, he'll have to try out the recipes.
19:14:00 * oerjan cackles evilly
19:16:07 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
19:16:18 -!- kar8nga has joined.
19:16:33 <elliott> argv is guaranteed to be null-terminated, right?
19:17:28 <Deewiant> argv[argc] is guaranteed to be a null pointer
19:17:54 <elliott> Right.
19:18:08 -!- cheater99 has joined.
19:18:11 <elliott> Deewiant: And saying argv[argc] = ...; would be an abomination, yes? ;)
19:18:15 <elliott> Oh god I'm horrible.
19:18:18 <elliott> No, elliott, don't do that.
19:18:32 <Deewiant> Why would you? :-P
19:18:39 <elliott> Deewiant: To implement yes(1)!
19:18:48 <elliott> argv[argc] || argv[argc] = "y";
19:18:52 <elliott> Erm.
19:18:54 <elliott> *argv[1]
19:20:02 <Deewiant> That or const char *s = argc ? argv[1] : "y"
19:20:12 <elliott> Deewiant: That's whole BYTES more.
19:20:21 <Deewiant> How many?
19:20:46 <fizzie> One woulf think it just ends up in a register.
19:20:58 <elliott> *argv++||*argv="y";
19:20:58 <elliott> char*s=argc?argv[1]:"y";
19:20:59 <elliott> SEE???
19:21:08 <elliott> A whole FIVE bytes shorter!!!!!!!!!!
19:21:11 <Deewiant> elliott: You have to use it later on
19:21:22 <Deewiant> *argv versus s
19:21:22 -!- evincar has joined.
19:21:32 <elliott> Deewiant: Well then, let's GOLF.
19:21:36 <Deewiant> :-P
19:21:39 <elliott> (You must use write(2), not stdio.)
19:21:56 <fizzie> It doesn't have to be called argv, at least.
19:22:01 <evincar> Hay guaiẓ.
19:22:07 <elliott> z with a dot
19:22:23 <evincar> I fail at typing.
19:22:25 <elliott> Deewiant: int main(int c,char**v){*v++||*v="y";while(write(1,v,strlen(v))+write(1,"\n",1));return 0;}
19:22:27 <elliott> Deewiant: Bring it on.
19:22:47 <elliott> Deewiant: BTW, you don't need "char*s", you can reuse v.
19:23:00 <elliott> (Assuming that sizeof(char *) == sizeof(char **).)
19:23:27 <elliott> *v++||*v="y"
19:23:27 <elliott> v=c?v[1]:"y";
19:23:29 <elliott> Same length :P
19:23:59 <evincar> elliott: char* and char** are guaranteed to be the same length because they're both pointers to POD, I think.
19:24:01 <fizzie> I'd think the *v++ part there is always true, since it tests for argv[0]. Maybe *++v?
19:24:13 <elliott> fizzie: Right, yes, that.
19:24:14 <elliott> Same length.
19:24:15 <Deewiant> main(c,v){while(1)write(1,c>1?v[1]:"y",c>1?strlen(v):1),write(1,"\n",1);}
19:24:24 <fizzie> And pointers to data certainly don't need to have same size.
19:24:28 <elliott> Deewiant: Not valid C89.
19:24:46 <elliott> I think implicit int arguments are OK in C89 though.
19:24:46 <Deewiant> main(c,v)char**v;{while(1)write(1,c>1?v[1]:"y",c>1?strlen(v):1),write(1,"\n",1);}
19:24:54 <elliott> You forgot int at the start.
19:24:57 <Deewiant> No need
19:24:58 <elliott> That's not implicit in C89.
19:25:02 <elliott> No, no need only in C99.
19:25:02 <Deewiant> You sure?
19:25:05 <elliott> Yes.
19:25:08 <elliott> 100%
19:25:15 <elliott> You also need return 0 at the end, of course.
19:25:16 <Deewiant> I'll check anyway
19:25:22 <Deewiant> return 0 is incorrect, you know
19:25:26 <Deewiant> write can fail
19:25:37 <fizzie> At least on some Crays sizeof(char *) > sizeof(int *).
19:25:38 <elliott> Deewiant: Who says that programs have to return error exit status on failure?
19:25:43 <Deewiant> I do :-P
19:25:48 <elliott> Deewiant: Anyway, yours is wrong. You have to stop writing when the writes return 0.
19:25:58 -!- EgoBot has quit (Ping timeout: 240 seconds).
19:26:00 <elliott> Deewiant: yes has to stop writing when it can't write no' mo', and exit successfully.
19:26:05 <Deewiant> Oh, of course
19:26:12 -!- EgoBot has joined.
19:26:14 <elliott> So, in fact, yes should always return 0.
19:27:14 <elliott> Deewiant: int main(c,v)char**v;{v=c>1?v[1]:"y";while(write(1,v,strlen(v))+write(1,"\n",1));return 0;}
19:27:17 <elliott> Good luck beating that :P
19:27:29 <Deewiant> int main(c,char**v){v=c>1?v[1]:"y";while(write(1,v,strlen(v))+write(1,"\n",1));return 0;}
19:27:34 <Deewiant> Two bytes, I think
19:27:40 <elliott> Is "(c,char**v)" kosher?
19:27:43 <Deewiant> Not sure
19:27:58 <elliott> Darn, I almost considered exit(0) but that leaves main trailing off the end
19:28:01 <elliott> Is that valid C89?
19:28:03 <Deewiant> v= isn't
19:28:08 <elliott> Why not?
19:28:20 <fizzie> Anyhow, "for(;;);" is one char shorter than "while(1);".
19:28:21 <elliott> What about c=? :P
19:28:24 <Deewiant> With char**v you can't assign char* to it
19:28:28 <elliott> fizzie: We've abandoned while(1).
19:28:35 <elliott> Deewiant: Can you assign (char *) to int?
19:28:41 <fizzie> I see. I was up in the backscroll.
19:28:46 <elliott> If so,
19:28:47 <elliott> int main(c,char**v){c=c>1?v[1]:"y";while(write(1,c,strlen(c))+write(1,"\n",1));return 0;}
19:28:56 <Deewiant> I'm not sure
19:29:06 <Deewiant> You also have to have int -> char* for that to work
19:29:09 <Gregor> !c int main(c,char**v){v=c>1?v[1]:"y";while(write(1,v,strlen(v))+write(1,"\n",1));return 0;}
19:29:10 <EgoBot> Does not compile.
19:29:16 <Deewiant> Useful error, that
19:29:17 <fizzie> Not portably, int might not be big enough.
19:29:20 <Gregor> !c int main(int c,char**v){v=c>1?v[1]:"y";while(write(1,v,strlen(v))+write(1,"\n",1));return 0;}
19:29:24 <fizzie> In any case it needs a cast.
19:29:28 <Deewiant> fizzie: write(2) isn't portable anyway
19:29:43 <Gregor> Deewiant: Probably running, but you'd only get the response when it (doesn't) finish or in 30 seconds :P
19:29:56 <fizzie> Yes, but stuffing pointers into ints is less portable than write(2).
19:30:01 <elliott> Deewiant: int main(c,char**v){return execv("yes",v);}
19:30:02 <elliott> Deewiant: I win.
19:30:03 <Deewiant> Arguable
19:30:11 <Deewiant> elliott: Even less portable :-P
19:30:21 <elliott> Deewiant: It's portable to all POSIX systems. :p
19:30:26 <evincar> Why are we not omitting "int" before "main"?
19:30:29 <elliott> Deewiant: Good enough for cfunge!
19:30:32 <Deewiant> And I'm more sure that c,char**v isn't portable
19:30:33 <elliott> evincar: Not valid C89, only C99.
19:30:45 <Deewiant> elliott: cfunge isn't portable, it doesn't even run on Windows :-P
19:30:50 <evincar> elliott: I thought implicit int return type was older.
19:30:56 <Deewiant> It is older
19:31:20 <evincar> Well, I'm getting owned in this conversation.
19:31:28 <evincar> Why are we golfing a "yes" implementation, anyway?
19:31:30 <Deewiant> elliott: Implicit int is invalid C99
19:32:06 <elliott> Deewiant: Not for main
19:32:10 <elliott> Deewiant: Main is a special case.
19:32:12 <elliott> (Not joking.)
19:32:20 <elliott> evincar: BECAUSE
19:32:20 <Deewiant> Where does it say that
19:32:35 -!- Phantom_Hoover has joined.
19:32:42 <Deewiant> elliott: Implicit return 0 is a special case, you sure you're not confusing it with that?
19:32:49 <elliott> Deewiant: Oh, seemingly.
19:33:15 <elliott> Deewiant: Anywho, int main(c,v)char**v;{return execv("yes",v);} is both POSIXly correct and perfect :P
19:33:30 <evincar> So I need a name for my most recent language design.
19:34:05 <evincar> I was thinking something to do with light, like Enlight or similar, but I'm uncertain. My roommate suggested Spectrum.
19:34:06 <Gregor> !c printf("Forbleborble")
19:34:26 <Gregor> Gee, it was so responsive five minutes ago >_>
19:34:28 <Deewiant> elliott: Is it guaranteed in POSIX that that stuff is in PATH or just that it exists?
19:34:33 <EgoBot> Forbleborble
19:35:35 <elliott> Deewiant: Good point.
19:35:51 <elliott> int main(c,v)char**v;{return execvp("/usr/bin/yes",v);}
19:35:55 <elliott> I think the locations are specified... maybe.
19:36:02 <elliott> evincar: ZX
19:36:13 <evincar> elliott: Haw haw haw.
19:36:33 <elliott> YOU MOCK ME
19:36:41 <evincar> Alternatively, "Spectre", though I think that's already taken.
19:36:49 <evincar> And I wanted light, not ghosts.
19:38:15 <evincar> And yes, I am just waltzing in here and changing the topic, 'cause I have nothing better to do right now, at least nothing that I want to be doing.
19:39:43 <Gregor> WHY is trac taking up 100% CPU.
19:39:48 <Gregor> If I could figure that out, I would be a happier person.
19:39:58 <fizzie> I sure hope you have, you know, tested those yes-codes of yours, instead of just speculating. At least the plain execv("yes",v) is not likely to work since yes doesn't path-search. (And the commands, I think, are specified to be executable from the shell, and execvp is defined to "duplicate the actions of the shell", so I think execvp("yes",v) would be okay.)
19:40:27 <fizzie> Since execv doesn't path-search, I mean.
19:40:53 <fizzie> Well, I doubt yes looks for any paths either, but that's not very relevant.
19:47:23 <elliott> http://landley.net/code/toybox/ hmm
19:49:16 <Gregor> elliott: Totally GNU-free?
19:49:28 <elliott> Gregor: Presumably.
19:49:41 <elliott> Gregor: But not nearly complete enough. I consider mount quite a useful command.
19:50:02 <elliott> Gregor: busybox mocks me by not being buildable with anything more minimal than gcc/uClibc.
19:52:07 <elliott> Gregor: Sweet, and the pcc/dietlibc toolchain mocks me by making programs segfault if I strip them in any way, even though this halves their size :P
19:52:31 <elliott> It seems it's stripping the something or other.
19:55:17 <elliott> Oh, the segfault may be my mistake.
19:58:36 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
20:03:12 -!- perdito has quit (Quit: perdito).
20:14:32 -!- Phantom_Hoover has joined.
20:15:04 <oerjan> the seg was your fault
20:17:35 <Vorpal> elliott, am I insane if I start manually unrolling fixed python loops in order to speed up the AI by avoiding to construct python tuples (note: it helps. By an order of magnitude)
20:18:04 <elliott> 1975 false/false
20:18:04 <elliott> 1971 true/true
20:18:06 <elliott> How is this possible :P
20:18:09 <elliott> Vorpal: Suuuuuure :P
20:18:19 <Vorpal> like this:
20:18:20 <Vorpal> # Unrolled to avoid constructing a python list.
20:18:20 <Vorpal> voidcnt += self.validate_pos_pair(state, x, y, 0, 1)
20:18:20 <Vorpal> voidcnt += self.validate_pos_pair(state, x, y, 1, 0)
20:18:20 <Vorpal> voidcnt += self.validate_pos_pair(state, x, y, 1, 1)
20:18:20 <Vorpal> voidcnt += self.validate_pos_pair(state, x, y, -1, 1)
20:18:29 <elliott> Vorpal: dude just write the whole thing in cython
20:18:34 <Vorpal> elliott, I am
20:18:39 <elliott> Vorpal: in fact, write the whole thing in C
20:18:43 <elliott> Vorpal: as a python extension
20:18:45 <elliott> Vorpal: and just do
20:18:46 <elliott> import foo
20:18:47 <elliott> foo.run()
20:18:55 <Vorpal> elliott, but for (x,y) in [...] will construct a list even in cython
20:19:20 <Vorpal> elliott, and yeah writing it as C would be nice except the annoying variable length arrays for "possible moves"
20:19:29 <Vorpal> which would mean manual memory management
20:20:07 <pikhq> Just write the whole thing in Haskell as a Python extension.
20:20:09 <pikhq> :)
20:20:34 <elliott> Vorpal: Not really.
20:20:44 <elliott> Vorpal: Is there a maximum you've hit so far?
20:21:05 <elliott> Vorpal: You can basically just allocate as global or local and in the worst cases use mmap(), malloc is totally avoidable.
20:21:16 <elliott> (I know this because I usually refuse to use malloc.)
20:21:33 <elliott> pikhq: So I'm writing my own coreutils because I'm a stupid idiot.
20:21:36 <Vorpal> elliott, well no, it varies of course
20:21:57 <pikhq> elliott: Awesome.
20:22:09 <Vorpal> elliott, theoretically it is probably a few less than the board size
20:22:15 <elliott> 2227 bin/echo
20:22:15 <elliott> 1975 bin/false
20:22:15 <elliott> 1971 bin/true
20:22:18 <elliott> pikhq: Sizes in bytes.
20:22:22 <pikhq> elliott: Would you like a copy of the small portion of coreutils I've already written? It could save you a whole two hours.
20:22:27 <elliott> (No, I have no idea how false is bigger. Perhaps true relies on something being initialised to 0.)
20:22:30 <elliott> pikhq: What portion?
20:22:36 <elliott> pikhq: Bear in mind that I'm not using stdio at all.
20:22:38 <pikhq> base64 basename cal cat chgrp cksum
20:22:47 <Vorpal> elliott, why are you surprised that true is smaller than false?
20:22:50 <pikhq> ... Oh, it uses stdio. Well, never mind!
20:22:54 <elliott> pikhq: Well, I could port them.
20:22:55 <Deewiant> elliott: Those are approximately 2K too large
20:23:04 <Vorpal> elliott, generating a 0 takes fewer bytes than generating a 1
20:23:08 <Vorpal> on x86
20:23:10 <elliott> Vorpal: lawl :P
20:23:14 <elliott> Deewiant: Yes, they can be shell scripts. But /bin/sh is pretty big.
20:23:18 <Vorpal> elliott, and true is 0 in the shell
20:23:21 <pikhq> elliott: My cat is POSIX compliant!
20:23:25 <Vorpal> thus true is smaller
20:23:31 <Vorpal> elliott, it is pretty obvious
20:23:33 <pikhq> elliott: It supports the only option cat is required to have. ;)
20:23:38 <Deewiant> elliott: They can be binaries that are approximately 2K smaller :-P
20:23:43 <elliott> pikhq: But -u is utterly unused :P
20:23:55 <Vorpal> pikhq, what exactly does -u actually do?
20:23:59 <elliott> Deewiant: Well, yes, but I'm not Brian Raiter.
20:24:08 <elliott> Vorpal: Use unbuffered IO!
20:24:23 <Deewiant> Vorpal: It shouldn't be 4 bytes bigger, more like one or two
20:24:24 <elliott> Deewiant: I do use his sstrip, though :P
20:24:29 <elliott> pikhq: BTW, I'm compiling this with pcc.
20:24:34 <elliott> gcc produces larger executables.
20:24:52 <elliott> pikhq: Anyway, I'd appreciate a tarball of your code, since I can port or refer to it.
20:25:09 <elliott> pikhq: What license? Or rather, how permissive can I convince you to make the terms you give it to me under? :P
20:25:27 <Deewiant> If I can write a dobela interpreter in something like 4K, /bin/{false,true} should definitely be around 200 bytes at most :-P
20:25:31 <elliott> I plan on using the WTFPL.
20:25:42 <elliott> Deewiant: Patches written in C welcome :P
20:25:55 <Deewiant> If you're writing in C your compiler limits you
20:25:56 <elliott> Deewiant: Hmm, I could define _start and do _exit(0), couldn't I?
20:25:57 <pikhq> elliott: ISC license.
20:26:02 <elliott> Deewiant: And tell it -nostartfiles.
20:26:05 <elliott> pikhq: But, but, WTFPL.
20:26:12 <elliott> pikhq: The ISC has more restrictions!
20:26:22 <elliott> (It requires including the license with redistributed copies.)
20:26:27 <Deewiant> The ELF headers emitted by most standard compilers are at least a few dozen bytes bigger than necessary
20:26:34 <elliott> pikhq: By using restrictions you are SUPPORTING COPYRIGHT LAW.
20:26:39 <elliott> Deewiant: sstrip strips 'em.
20:26:48 <elliott> * sstrip is a small utility that removes the contents at the end of an
20:26:48 <elliott> * ELF file that are not part of the program's memory image.
20:26:48 <elliott> *
20:26:48 <elliott> * Most ELF executables are built with both a program header table and a
20:26:48 <elliott> * section header table. However, only the former is required in order
20:26:48 <elliott> * for the OS to load, link and execute a program. sstrip attempts to
20:26:50 <elliott> * extract the ELF header, the program header table, and its contents,
20:26:52 <elliott> * leaving everything else in the bit bucket. It can only remove parts of
20:26:54 <elliott> * the file that occur at the end, after the parts to be saved. However,
20:26:56 <elliott> * this almost always includes the section header table, and occasionally
20:26:58 <elliott> * a few random sections that are not used when running a program.
20:27:00 <elliott> Oh, flood.
20:27:02 <elliott> Whatever.
20:27:09 <Deewiant> elliott: Does it rename the sections to something shorter? Presumably not.
20:27:12 <elliott> This, incidentally, makes it impossible to decompile these with objdump.
20:27:30 <elliott> $ strings bin/false
20:27:31 <elliott> t5M9
20:27:31 <elliott> /dev/urandom
20:27:31 <elliott> LD_PRELOAD
20:27:31 <elliott> valgrind
20:27:41 <elliott> Deewiant: It eliminates the names altogether.
20:27:47 <elliott> (Why is LD_PRELOAD in there? There's no dynamic linking going on.)
20:27:57 <Deewiant> (Guess it didn't eliminate that then.)
20:28:12 <Ilari> It should be possible to make true and false good bit less than 200 bytes, without mangling ELF headers...
20:28:14 <Deewiant> At most that first string should be in there :-P
20:28:23 <elliott> NO! t5M9 is the SYMBOL OF BLOAT.
20:28:24 <Deewiant> I can't remember how long the ELF headers are
20:29:39 <elliott> 248 bin/false
20:29:40 <elliott> Deewiant: Happy?
20:29:45 <elliott> void _start(void)
20:29:45 <elliott> {
20:29:45 <elliott> _exit(1);
20:29:45 <elliott> }
20:29:51 <Deewiant> Heh
20:30:01 <elliott> If I made that noreturn, presumably it'd be EVEN SHORTER
20:30:11 <pikhq> elliott: But but true.asm is 45 bytes!
20:30:26 <Deewiant> .asm is easily longer than the exe :-P
20:30:33 <Deewiant> Erm, shorter
20:30:53 <pikhq> Deewiant: Erm, when assembled it's 45 bytes.
20:30:58 <elliott> Deewiant: You're fucking up my build system here :P
20:31:01 <Vorpal> the thing that annoy me with heuristics is that they are basically one huge fudge factor
20:31:08 <Vorpal> (yes yes, they are by definition)
20:31:19 <pikhq> It's the smallest possible Linux-loadable ELF.
20:31:29 <Deewiant> Linux-version-specific, too :-P
20:31:54 <elliott> Deewiant: Gah, I can't even use diet(1), because it sticks start.o in there :P
20:32:12 <Vorpal> elliott, um why do you care if it is less than 2 KB?
20:32:15 <Deewiant> What's diet(1)
20:32:21 <elliott> Vorpal: Because Deewiant cares.
20:32:30 <Ilari> Only in Linux 2.4... AFAIK, those 45-byte executables don't work in 2.6
20:32:39 <elliott> Deewiant: "diet cc foo.c -o foo" handles all the -nostdwhatever stuff and appends the path to libc.a and start.o for dietlibc.
20:32:53 <elliott> Deewiant: dietlibc being the reason these things are this small in the first place, as opposed to 17K or whatever with uClibc :P
20:33:09 <Deewiant> libc.a? start.o? What are these unnecessarities
20:33:23 <pikhq> elliott: If you're using _start, you should probably just manually write the system call function. Thereby needing no libc.
20:33:28 <pikhq> elliott: http://filebin.ca/cemkzt/pikhq-coreutils-0.1.tar.xz
20:33:28 <Vorpal> elliott, after all page size is 4096 bytes. There is no way you will allocate less than 4 KB thus. Also usually the file system block size is larger than a sector. 2 or 4 KB are common. Thus I think you are optimising pointlessly
20:33:48 <Vorpal> seriously, you are microoptimising into the silliness now
20:34:01 <elliott> Vorpal: Yes I am.
20:34:18 <elliott> pikhq: What syscall number is exit again?
20:34:19 <Vorpal> elliott, stop it. Or you will have to maintain cfunge in the afterlife
20:34:19 <Ilari> Make utilities detect argv[0] and work accordingly (sticking couple utilities together)? :-)
20:34:23 <Ilari> elliott: 1
20:34:26 <elliott> Ilari: That's the loser's way out.
20:34:39 <pikhq> elliott: It's __NR_exit from asm/unistd.h
20:35:14 <Vorpal> elliott, actually doing what Ilari said probably is better. It means you just need one entry in the page cache for true and false, and probably they will both fit into the same binary
20:35:21 <pikhq> Ilari: See pikhqbox.c in pikhq-coreutils. :)
20:35:22 <elliott> pikhq: How about I just use <linux/unistd.h> :P
20:35:29 <Vorpal> just check if argv[0][0] is 't' or 'f'
20:35:30 <elliott> Does pikhqbox.c do
20:35:32 <Vorpal> then use that
20:35:33 <elliott> #define main progname_main
20:35:34 <Vorpal> elliott, ^
20:35:36 <elliott> #include "progname.c"
20:35:36 <elliott> ?
20:35:38 <elliott> If so, you win.
20:35:38 <pikhq> elliott: Baaah.
20:35:43 <elliott> Vorpal: Hardy har. :P
20:35:43 <Deewiant> Vorpal: What if argv[0][0] is '/'
20:35:50 <pikhq> elliott: Also, yes.
20:35:52 <Vorpal> Deewiant, hm good point
20:35:54 <elliott> pikhq: So can I have assurance that that tarball is WTFPL'd? :P
20:35:56 <elliott> Otherwise I can't use it.
20:36:03 <evincar> Update: I've come back to "Enlight" as a name. I can't really come up with anything better, but I'm not sure it even fits now.
20:36:16 <pikhq> elliott: I hereby dual-license it under ISC and WTFPL.
20:36:24 <pikhq> elliott: Use at your discretion.
20:36:26 <elliott> pikhq: Thank thee kindly.
20:36:31 <elliott> pikhq: Hey, WTFPL doesn't require discretion!
20:36:39 <elliott> I can go CERAAAAAAAAAAAAAAZY with it, so long as I WANT TO.
20:36:41 <pikhq> elliott: That was just a suggestion.
20:36:57 <elliott> (Thought experiment: is it a license violation to do something you don't want to to a WTFPL program?)
20:37:00 <Vorpal> Deewiant, check from the end for true/false (the second to last letter should be good. You need a strlen call probably though
20:37:07 <elliott> I suggest the following fix:
20:37:10 <pikhq> elliott: But, yeah. pikhqbox.c does in fact do #define main progname_main and #include "progname.c".
20:37:12 <elliott> 1. You just DO WHAT THE FUCK YOU WANT TO.
20:37:17 <elliott> 2. Or you just DO WHAT THE FUCK YOU DON'T WANT TO.
20:37:23 <elliott> 3. Or you just DO WHAT THE FUCK YOU'RE NOT SURE WHETHER YOU WANT TO OR NOT.
20:37:32 <Vorpal> elliott, this is too long and verbose
20:37:37 <Deewiant> Vorpal: What if you're exec'd by something that gives you argv[0] = "hoody hoo"
20:37:40 <Vorpal> elliott, what about "do whatever"
20:37:41 <Vorpal> or such
20:37:49 <elliott> 1. You just DO WHAT THE FUCK.
20:38:03 <Vorpal> elliott, better but perhaps a bit unclear
20:38:10 <elliott> pikhq: I may require your assistance for commands such as mount. :P
20:38:18 <pikhq> elliott: Okay.
20:38:22 <Vorpal> Deewiant, then you are fucked
20:38:28 <Deewiant> Vorpal: Hence you don't do that.
20:38:31 <Vorpal> Deewiant, but maybe default to one behaviour
20:38:43 <elliott> pikhq: Dude, pikhqbox doesn't even use a hash table :P
20:38:49 <Vorpal> Deewiant, but there are tools, such as busybox and grep iirc. which check argv[0]
20:39:03 <pikhq> elliott: I optimised for code simplicity. :)
20:39:03 <Vorpal> well some grep implementations at least
20:39:04 <elliott> pikhq: And even though every command starts with either b or c, you check the first character 5 times in the worst case.
20:39:11 <Vorpal> for grep/fgrep/egrep
20:39:16 <elliott> pikhq: So did I! main is more complex than _start because main has a return value.
20:39:46 <Vorpal> elliott, what is pikhqbox?
20:39:49 <pikhq> elliott: If something was more work and harder to understand, I decided not to do it.
20:39:52 <elliott> _syscall1(void, _exit, int, status)
20:39:54 <Vorpal> I must have missed the code in it
20:39:57 <elliott> Why does this not work...
20:39:57 <Vorpal> for it*
20:40:03 <elliott> Vorpal: busybox, but for pikhqutils.
20:40:10 <Vorpal> elliott, huh
20:40:15 <pikhq> http://filebin.ca/cemkzt/pikhq-coreutils-0.1.tar.xz
20:40:32 <elliott> pikhq: I remember ripping the hell out of your cat implementation at one point. :P
20:40:38 <Vorpal> elliott, you never find that coloured ls output is nice?
20:40:39 <elliott> *cal
20:40:40 <elliott> not cat.
20:40:46 <Vorpal> considering the current style
20:40:49 <pikhq> elliott: I changed it in response.
20:40:49 <elliott> Vorpal: Sure I do. Who says I'm not going to implement that?
20:41:01 <elliott> pikhq: Indeed. Now to rip the hell out of it with fresh new eyes!
20:41:01 <Vorpal> elliott, because termcap is a pain?
20:41:06 <pikhq> elliott: :P
20:41:06 <elliott> (I replaced my eyeballs recently.)
20:41:14 <Vorpal> elliott, (and surely you will not hard code it)
20:41:15 <elliott> Vorpal: Why the hell would I support anything that isn't ANSI-compatible...?
20:41:24 <elliott> I mean, go on: name one terminal.
20:41:31 <Vorpal> elliott, because how else could you hook it up to that DEC terminal!?
20:41:36 <elliott> pikhq: static const int lengths_of_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
20:41:37 <elliott> pikhq: omg bloat
20:41:40 <elliott> pikhq: :P
20:41:47 <pikhq> elliott: Clarity, not binary size. Sorry.
20:41:49 <Vorpal> yes indeed.
20:41:54 <Vorpal> pikhq, you should have used char
20:41:55 <Vorpal> not int
20:42:01 <elliott> No. BITMASK!
20:42:01 <Vorpal> very much bloat
20:42:02 <pikhq> Vorpal: BAAAH
20:42:04 <elliott> pikhq: Yeah, it is actually a pretty nice cal.
20:42:16 <Vorpal> pikhq, 12*3 bytes wasted!
20:42:18 <Vorpal> think of that
20:42:27 <pikhq> elliott: It beats just about every other cal I could find.
20:42:28 <elliott> pikhq: However you do sin heavily by using stdio. :p
20:42:39 <pikhq> elliott: Which are pretty much all genetic UNIX, and are therefore horrifying.
20:42:47 <Vorpal> pikhq, also it is incorrect for the second month every 4th year unless you have that logic elsewhere
20:42:54 <elliott> He does.
20:42:56 <Vorpal> well, almost every 4th year
20:43:00 <elliott> pikhq: Does it handle september 1752?
20:43:07 <elliott> *September
20:43:09 <pikhq> elliott: No.
20:43:09 <Vorpal> elliott, is that when UK switched over?
20:43:22 <pikhq> elliott: That is the one bug.
20:43:37 <Vorpal> elliott, if it doesn't handle the Swedish switchover (I told you about THAT mess before) it is broken :P
20:43:43 <elliott> Vorpal: The British Calendar Act of 1751 / Declared the day after Wednesday / September 2nd / 1752 / Would be Thursday / September 14 / 1752
20:43:46 <Deewiant> Vorpal: You only need 1 bit for each o f the eleven non-february months (february needs leap year checking anyway so might as well handle it completely separately)
20:43:51 <Deewiant> s/o f/of/
20:43:54 <elliott> It is Unix tradition to support "cal sep 1752".
20:43:55 <Vorpal> Deewiant, true
20:44:13 <elliott> (Source for above clarification on the UK switchover time: http://www.youtube.com/watch?v=l4Zf1eyWYFs)
20:44:20 <Vorpal> $ cal sep 1752
20:44:20 <Vorpal> cal: illegal month value: use 1-12
20:44:21 <pikhq> Vorpal: Sorry, but I only wrote for C locale.
20:44:22 <Vorpal> elliott, what ^
20:44:32 <elliott> Vorpal: Yeah, because Linux follows Unix tradition ...
20:44:35 <pikhq> Vorpal: Try 9
20:44:39 <Vorpal> pikhq, indeed
20:44:43 <Vorpal> pikhq, it works then
20:44:52 <Vorpal> elliott, it just doesn't do named months
20:44:55 <Deewiant> sep implies locales
20:45:02 <elliott> Deewiant: Oh fuck off :P
20:45:10 <Vorpal> Deewiant, oh so it does
20:45:15 <Deewiant> elliott: What? :-P
20:45:16 <elliott> Measurements and currencies and time: yes, locale-relevant.
20:45:26 <elliott> Input and output messages: Fuck you, English-only :P
20:45:34 * pikhq loves that month.
20:45:50 <elliott> _syscall1(void, _exit, int, status)
20:45:52 <elliott> pikhq: srsly, why doesn't that work.
20:46:02 <Vorpal> elliott, Why English only? That is discrimination.
20:46:04 <Deewiant> elliott: Is "time" not an "input message" in this case
20:46:06 <pikhq> elliott: 2.6 removed that macro.
20:46:10 <elliott> Vorpal: Yes it is!
20:46:14 <Vorpal> Deewiant, indeed it is!
20:46:17 <pikhq> IIRC
20:46:37 <elliott> pikhq: Well, I still have man _syscall...
20:46:41 <elliott> Or do you mean just the "1" variant?
20:46:44 <elliott> Deewiant: It would be, if I hadn't decided it wasn't.
20:46:56 <Deewiant> Your decision is poor
20:46:57 <elliott> Starting around kernel 2.6.18, the _syscall macros were removed from
20:46:57 <elliott> header files supplied to user space. Use syscall(2) instead. (Some
20:46:57 <elliott> architectures, notably ia64, never provided the _syscall macros; on
20:46:57 <elliott> those architectures, syscall(2) was always required.)
20:46:58 <elliott> Ugh.
20:47:21 <pikhq> elliott: You have to actually write the system call handler manually.
20:47:22 <Vorpal> elliott, nothing wrong with syscall()
20:47:24 <elliott> pikhq: I refuse to be unportable across architectures, how can I avoid using syscall(2) :P
20:47:40 <pikhq> elliott: Write _syscall for each architecture.
20:47:44 <pikhq> Vorpal: It goes through libc.
20:47:46 <Vorpal> elliott, well _syscall would have been unportable too
20:47:48 <Vorpal> pikhq, and?
20:47:49 <pikhq> Vorpal: And does a *lot* of stuff.
20:48:05 <Vorpal> hm it sets errno
20:48:06 <Vorpal> okay
20:48:08 <Vorpal> that is annoying
20:49:59 <elliott> <Vorpal> elliott, well _syscall would have been unportable too
20:50:00 <elliott> how?
20:50:03 <elliott> not across architectures
20:50:11 <elliott> apart from linux's failure to implement it
20:50:26 -!- Sasha has quit (Ping timeout: 240 seconds).
20:50:35 <Vorpal> gah. This fudge factor is chaotic
20:50:53 <Vorpal> elliott, <elliott> not across architectures <elliott> apart from linux's failure to implement it <-- uh... what
20:51:22 <elliott> Vorpal: _syscall isn't unportable
20:51:32 <elliott> linux just didn't implement it on every arch, for no real reason
20:51:49 <elliott> pikhq: You know what, fuck this. _exit(0) is fine :P
20:52:22 <Vorpal> elliott, also linux specific of course (but that is a different kind of unportable)
20:52:24 <pikhq> elliott: Then you're getting symbol collision for start; sorry.
20:52:34 <elliott> pikhq: No I'm not.
20:52:37 <elliott> pikhq: I link in libc.a but not start.o.
20:52:45 <pikhq> Oh, you're doing that manually.
20:52:53 <elliott> pikhq: Yes. Because I'm a crazy goddamn fucker.
20:52:59 <elliott> bin/true bin/false: \
20:53:00 <elliott> CC=~/kitten/stage2/bin/pcc -Os -nostdlib -nostdinc -nostartfiles \
20:53:00 <elliott> ~/kitten/stage2/lib-x86_64/libc.a
20:53:52 * elliott looks at pikhq's cat.c, decides that it's so stdioy that it's easiest to rewrite.
20:53:55 <evincar> elliott: You sure are.
20:53:58 <elliott> (Also, that handling -u is pointless binary bloat.)
20:54:07 <Vorpal> elliott, as long as it is smaller than file system block size and page size you don't gain anything by making it smaller
20:54:24 <Vorpal> stdio in cat?
20:54:25 <Vorpal> ugh
20:54:26 <elliott> Vorpal: Apart from e-penis length.
20:54:38 <elliott> Vorpal: What, I would have expected you to be an stdio-lover.
20:54:50 <Vorpal> elliott, why on earth
20:54:53 <elliott> pikhq: Other things I won't support: "-" as an argument name! /dev/stdin exists for a reason!
20:54:55 <elliott> Vorpal: Um, fopen?
20:55:18 <Vorpal> elliott, stdio is nice when you work with textual in-data. But fwrite is no better than write when you deal with non-textual data
20:55:31 <elliott> fwrite is no better than write ever :P
20:55:37 <Vorpal> elliott, indeed
20:55:43 <elliott> (Okay, if someone implemented an stdio that didn't suck, I might change my opinion.)
20:55:48 <elliott> But 99% of the time it's just useless abstraction that you don't need.
20:55:50 <Vorpal> elliott, but you wouldn't use either if working with textual data
20:55:56 <elliott> printf is convenient but almost always severely-bloating, and error-prone too.
20:56:05 <elliott> A nice formatting API would be, well, nice; I think libowfat has one.
20:56:07 <Vorpal> elliott, you can make printf that is small
20:56:17 <elliott> Vorpal: Yeah, but the API still sucks. :p
20:56:31 <elliott> Haha! I just pioneered a NEW CONTROL STRUCTURE.
20:56:32 <elliott> "else for"
20:56:34 <Vorpal> elliott, what do you prefer? cout << setw(4) << i << endl; ?
20:56:56 <elliott> Vorpal: It depends!
20:57:02 <Vorpal> elliott, and what does else for do?
20:57:10 <elliott> else for is for, except in an else clause.
20:57:21 <elliott> Vorpal: Probably write_int_width(i, 4);
20:57:21 <Vorpal> elliott, uh how is that new?
20:57:22 <elliott> Or something.
20:57:26 <elliott> I think libowfat has something like that.
20:57:29 <elliott> Vorpal: Because it isn't else { for ... }.
20:57:31 <elliott> It's "else for!"
20:57:33 <elliott> *for"!
20:57:36 <elliott> One whole indentation less!
20:57:42 <Vorpal> elliott, you know format strings are nice because translation works with them
20:57:46 <Vorpal> unlike most other solutions
20:57:53 <Vorpal> remember you need to reorder stuff between languages
20:57:55 <elliott> Vorpal: Sure, that's a language deficiency :P
20:58:05 <elliott> As far as I'm concerned we should all struggle with English until somebody makes an OS that doesn't suck.
20:58:14 <elliott> Vorpal: Also, printf SO FAILS AT THAT.
20:58:20 <elliott> "The %s is %d years old."
20:58:23 <Vorpal> and you often need the whole sentence to translate it (the same word will translate to different words in different contexts)
20:58:24 <elliott> You can't swap the %d and the %s there.
20:58:25 <elliott> If it was
20:58:30 <Vorpal> elliott, you can
20:58:31 <elliott> "The %{0}s is %{1}d years old."
20:58:35 <elliott> and you could reorder them, sure.
20:58:59 <Vorpal> elliott, you can reorder them like that when you translate the format string
20:59:06 <Vorpal> using numbers like that
20:59:14 <Vorpal> check man snprintf some day
20:59:17 <Gregor> elliott: If your language isn't flexible enough to adjust the phrasing such that that's in the right order, then you don't deserve i18n :P
20:59:28 * elliott writes lib.c!
20:59:32 <elliott> The most libraryiffic C file ever!
20:59:41 <elliott> Vorpal: Noooon-poooortableeeeee.
20:59:49 <Vorpal> elliott, it is SUS iirc
20:59:50 <elliott> (Pronounced "porta-blee".)
20:59:51 <Vorpal> elliott, not C99 sure
20:59:53 <Vorpal> but SUS
21:00:06 <elliott> Vorpal: So it's useless on Windows. Deewiant! Yell at him!
21:00:15 * Deewiant yells
21:00:34 <elliott> pikhq: Name my error-reporting function: oops, crap, damn, fuck, barf.
21:00:37 <Vorpal> elliott, as if you would care about that. Your code is very linux specific it seems
21:00:46 <elliott> Vorpal: Hey, I UNDID THAT MISTAKE
21:00:47 -!- yorick has joined.
21:00:51 <elliott> Now I only depend on _start.
21:00:52 <elliott> And _exit.
21:00:53 <pikhq> elliott: 糞
21:01:01 <elliott> pikhq: æe@ł
21:01:04 <Vorpal> elliott, the time to start worrying about windows support is the point you use stdio instead of read and write
21:01:05 <Vorpal> and so on
21:01:22 <pikhq> Vorpal: He is unlikely to ever want to run this on Windows.
21:02:22 <Vorpal> hm this seems to work, now I don't dare touch this heuristic. A tiny change, such as 0.26 to 0.25 for one constant completely changes the outcome.
21:02:30 <Vorpal> pikhq, indeed my point
21:03:00 <Vorpal> pikhq, so complaining about format string argument reordering for translation being unportable is... utterly stupid
21:03:24 <Ilari> Heh... Figured out why connections to one hostname were slow: It has two IPv6 addresses. The first one is unreachable (timeouts) but the second is reachable. So the first address has to timeout and then it falls back into second address, resulting connection being established.
21:04:03 <Vorpal> Ilari, use sctp with the multi-homed stuff
21:04:17 <Vorpal> then establish to both at once and use whatever works
21:04:18 <Vorpal> or something
21:05:08 <Phantom_Hoover> http://www.poemhunter.com/poem/a-problem-in-dynamics/
21:05:20 <Phantom_Hoover> By Maxwell himself.
21:05:23 <Phantom_Hoover> I am in awe.
21:05:31 <Ilari> I don't know if those two are the same host...
21:05:39 <elliott> void cat(int fd)
21:05:40 <elliott> {
21:05:40 <elliott> char c;
21:05:40 <elliott> while (read(0, &c, 1) > 0)
21:05:40 <elliott> write(1, &c, 1);
21:05:40 <elliott> }
21:05:45 <elliott> pikhq: Spot the unfortunately ugly-to-fix bug.
21:06:36 <Phantom_Hoover> http://www.haverford.edu/physics/songs/rigid.htm
21:06:41 <Phantom_Hoover> There's a song, too.
21:06:43 <elliott> pikhq: Erm, apart from read's first argument.
21:07:08 <elliott> pikhq: bin/cat is annoyingly big because of strerror :(
21:07:14 -!- evincar has quit (Quit: ChatZilla 0.9.86 [Firefox 3.6.12/20101026210630]).
21:07:30 <elliott> EFBIG See EOVERFLOW.
21:07:35 <elliott> Please tell me this stands for Fucking Big.
21:08:22 <pikhq> elliott: You know you want the system call for read and write!
21:08:24 <Deewiant> It's probably File
21:08:24 <Vorpal> <Ilari> I don't know if those two are the same host... <-- hm true
21:09:26 * pikhq suspects that stupid NATs don't handle sctp.
21:10:06 <elliott> pikhq: It occurs to me that not supporting - as an argument may ... break some things... slightly.
21:10:07 <elliott> SO NOW I AM
21:12:24 <elliott> pikhq: Feel like de-uglying my code? :P
21:12:37 <elliott> pikhq: (Or just telling me what's really ugly.)
21:12:47 <elliott> Hey, YOU don't handle read errors either.
21:12:49 <pikhq> Sure, why not.
21:12:50 <elliott> Right then, I won't!
21:13:06 <elliott> pikhq: http://sprunge.us/PWFX
21:13:20 <elliott> pikhq: The main ugliness is handling errors nicely, a thing that Unix has built up a wonderful reputation of NOT doing and making it extremely difficult to do.
21:13:30 <elliott> So I'm just going to rip out the part of cat() that handles errors because really what kind of thing fails at that point.
21:13:52 <elliott> pikhq: Still. main() is a bit ew.
21:14:07 <elliott> pikhq: Hey, yours is NOT compliant.
21:14:11 <elliott> pikhq: It gives up after the first error.
21:14:15 <pikhq> elliott: Baaah.
21:14:25 <elliott> pikhq: Ha ha! You fail at cat!
21:14:42 <pikhq> ,[.,] is enough
21:15:00 -!- Sgeo has joined.
21:15:20 <elliott> pikhq: Wait, you're right.
21:15:26 <elliott> It's okay to give up after the first error.
21:15:28 <elliott> Yay.
21:15:35 <elliott> pikhq: (Although slightly more irritating to use...)
21:15:47 <elliott> Yeah, in fact, that's so irritating that I'm not going to do it.
21:15:55 <elliott> (Isn't it? Oh the dilemma.)
21:17:06 <Sgeo> Phantom_Hoover, I'm still COBOL Guy?
21:17:20 <Phantom_Hoover> Sgeo, yes.
21:18:25 <elliott> pikhq: I think I'll do date(1) next, it's vaguely meaty.
21:18:26 <Vorpal> oh duh, I just increased speed quite a bit from realising I did the top node in alpha-beta wrong.
21:18:31 <elliott> Does anyone use date -u?
21:19:30 <Vorpal> elliott, yes
21:19:47 <Sgeo> I'm going to go watch the only SG-1 episode I haven't seen
21:19:48 <Vorpal> elliott, very useful to get UTC
21:20:37 <Sgeo> It's pretty easy to fake methods returning classes in Newspeak
21:20:44 <Sgeo> Still, might be a bit annoying
21:21:03 <Vorpal> elliott, also if you don't support the gnu extension %s in the string, then there is no way to get UNIX timestamp from shell script
21:21:14 <Vorpal> elliott, so it might be a GOOD extension to support
21:21:25 <Vorpal> I think FreeBSD has it too
21:21:29 <Vorpal> and a handful of other ones
21:21:32 <Vorpal> but not POSIX
21:22:35 <elliott> #define isflag(s, c) ((s)[0] == '-' && (s)[1] == c && !(s)[2])
21:22:36 <elliott> ^ useful.
21:23:18 <Vorpal> elliott, getopt?
21:23:30 <elliott> Vorpal: Pointless when you only have one single flag.
21:23:35 <Vorpal> elliott, true
21:23:51 <elliott> Vorpal: A better question would be "strcmp?", to which I reply: inflated the binary for no real gain.
21:24:16 <Vorpal> elliott, will you support %s in date's format string?
21:25:40 <elliott> Vorpal: I'm using strftime. :P
21:25:56 <elliott> -rwxr-xr-x 1 root root 59K Apr 28 2010 /bin/date
21:25:56 <elliott> -rwxr-xr-x 1 elliott elliott 6.4K Dec 3 21:25 bin/date
21:26:06 <elliott> Ha, wait, I forgot to actually PRINT the date.
21:27:10 <Vorpal> elliott, idea: multi-core to make the AI n times as fast (n depending on number of cores)
21:27:22 <elliott> $ bin/date -u
21:27:22 <elliott> Segmentation fault
21:27:29 <Vorpal> elliott, gdb on that then
21:27:39 <elliott> Vorpal: Or just look at the code.
21:27:43 <elliott> if (isflag(argv[1], 'u')) {
21:27:43 <elliott> utc = 1;
21:27:43 <elliott> argv++;
21:27:43 <elliott> }
21:27:43 <elliott> if (argv[1][0] == '+') fmt = argv[1] + 1;
21:27:45 <elliott> Mistake is obvious.
21:27:50 <elliott> Fix trivial.
21:28:13 <Vorpal> yes indeed it is obvious
21:28:21 <elliott> if (argv[1] && argv[1][0] == '+') fmt = argv[1] + 1;
21:28:21 <elliott> Tada.
21:28:27 <Vorpal> elliott, actually there are two mistakes there
21:28:47 <elliott> Vorpal: That argc is left out-of-sync?
21:28:53 <elliott> Deliberate; I don't use argc anywhere after that.
21:28:55 <Vorpal> elliott, where does it say argv will have a NULL pointer after the last element?
21:29:02 <elliott> Vorpal: That is guaranteed.
21:29:04 <Vorpal> ah okay
21:29:25 <elliott> Vorpal: So what's mistake #2?
21:29:43 <Vorpal> none then
21:29:54 <Vorpal> elliott, or do you check that argv[1] exists above the isflag check?
21:29:59 <Vorpal> if not that is another mistake
21:30:53 <elliott> if (argc > 1) {
21:30:55 <elliott> Yes, I do.
21:31:02 <Vorpal> good
21:31:03 <elliott> Actually I can avoid that outer conditional trivially...
21:31:31 <Vorpal> elliott, what if someone passes you argv[0] = NULL?
21:31:37 -!- Mathnerd314 has joined.
21:32:01 <Vorpal> elliott, by execv or such
21:32:04 <elliott> Vorpal: Then argv is {NULL, NULL, whatever}
21:32:07 <elliott> Well.
21:32:09 <elliott> I suppose that
21:32:20 <Vorpal> elliott, it could be {NULL, whatever} I think
21:32:28 <Vorpal> not sure though
21:32:38 <elliott> Vorpal: Yes, true. (But if you deny something an argv[0], you're just a monster.)
21:32:42 <elliott> And everything will break on that :P
21:32:53 <Vorpal> elliott, not stuff which checks for it
21:33:03 <elliott> Hmm, why is $TZ not doing anything...
21:33:15 <Vorpal> elliott, presumably your libc doesn't use it
21:33:20 <elliott> Presumably :P
21:33:33 <elliott> Vorpal: You're on a non-GMT timezone, presumably. Can you test bin/date for me?
21:33:41 <Vorpal> elliott, does it do zones like Europe/London or Europe/Stockholm?
21:33:47 <elliott> Vorpal: Let's find out!
21:34:13 <elliott> Vorpal: http://filebin.ca/gwobyk/date
21:34:26 <elliott> Vorpal: (I know that could be malicious, but if I managed to fit a virus into 6K of ELF, well, that would be impressive.)
21:34:26 <Vorpal> elliott, I don't have TZ set, I have the normal /etc/localtime
21:34:29 <elliott> Vorpal: Right.
21:34:32 <elliott> Vorpal: So that should work!
21:34:40 <elliott> Also, /etc/timezone and the like.
21:34:46 <Vorpal> no such file
21:34:49 <elliott> Vorpal: But yeah, just check that "date" prints the right thing and "date -u" prints the right thing too :P
21:34:50 <Vorpal> just /etc/localtime
21:35:15 <Vorpal> $ objdump -d date
21:35:15 <Vorpal> date: file format elf64-x86-64
21:35:16 <Vorpal> what
21:35:19 <Vorpal> same for -D
21:35:23 <elliott> Vorpal: It's sstrip'd.
21:35:31 <Vorpal> elliott, what is sstrip?
21:35:33 <elliott> Vorpal: objdump can't look at stuff without pointless crap in the ELF file.
21:35:39 <Vorpal> elliott, I refuse to run it
21:35:41 <Vorpal> then
21:35:41 <elliott> Vorpal: sstrip is Brain Raiter of INTERCAL fame's strip tool.
21:35:47 <elliott> Vorpal: Use a different disassembler?
21:35:57 <Vorpal> elliott, rm-ed the file. Get me one that works with objdump :P
21:36:00 <elliott> Fine, I'll upload a non-sstrip'd one.
21:36:13 <elliott> This one's almost 10K.
21:36:17 <Vorpal> no issue
21:36:26 <elliott> Vorpal: http://filebin.ca/ktvtue/date
21:36:29 <Vorpal> I have more than 2000 baud :P
21:36:54 <Vorpal> huh there is a __valgrind symbol
21:37:03 <elliott> Vorpal: Yeah, and LD_PRELOAD too.
21:37:06 <elliott> I can't seem to get rid of those.
21:37:12 <elliott> Much as I would dearly like to.
21:37:16 <Vorpal> well what is __valgrind used for exactly
21:37:20 <elliott> No idea.
21:37:24 <Vorpal> I mean, for valgrind obviously
21:37:28 <Vorpal> (but why does it need it)
21:37:47 <Vorpal> __unified_syscall_16bit ?
21:37:58 <elliott> Vorpal: Oh just run the damn thing :P
21:38:04 <Vorpal> 4001e4:76 0f jbe 4001f5 <__you_tried_to_link_a_dietlibc_object_against_glibc>
21:38:05 <Vorpal> :D
21:38:11 <elliott> Indeed :P
21:38:30 <Vorpal> elliott, how does that bit work?
21:38:43 <elliott> Vorpal: Not sure. It's some crazy asm hack that makes an error appear with that if you try to do that.
21:38:55 <elliott> Presumably a careful clash with something glibc does.
21:38:58 <elliott> Under that name.
21:39:14 <elliott> Vorpal: So does it work? :P
21:39:15 <Vorpal> write(1, "Fri Dec 3 22:38:33 CET 2010", 28Fri Dec 3 22:38:33 CET 2010) = 28
21:39:17 <Vorpal> seems to work
21:39:21 <Vorpal> elliott, but it ignores my locales
21:39:23 <elliott> Vorpal: What about with -u?
21:39:29 <elliott> And yes, it does; dietlibc has no locale support.
21:39:33 <Vorpal> $ LC_ALL=sv_SE ./date
21:39:33 <Vorpal> Fri Dec 3 22:39:02 CET 2010
21:39:34 <Vorpal> fuck it
21:39:42 <elliott> Vorpal: Excuse me, try -u please.
21:39:44 <Vorpal> elliott, completely fucked up date format for sweden
21:39:47 <elliott> I know it won't work with locales.
21:39:52 <elliott> Just try -u.
21:40:06 <Vorpal> elliott, doesn't work
21:40:08 <Vorpal> Fri Dec 3 21:39:35 CET 2010
21:40:11 <Vorpal> wrong timezone
21:40:13 <Vorpal> in output
21:40:14 <elliott> Ah.
21:40:19 <Vorpal> elliott, correct time I think
21:40:19 <elliott> So gmtime() isn't sufficient for this.
21:40:28 <elliott> tm = utc ? gmtime(&now) : localtime(&now);
21:40:29 <Vorpal> elliott, yes the hour change
21:40:30 <elliott> is what I do.
21:40:35 <Vorpal> but the timezone does not
21:40:43 <Vorpal> $ date
21:40:43 <Vorpal> fre dec 3 22:40:10 CET 2010
21:40:46 <Vorpal> $ date -u
21:40:46 <Vorpal> fre dec 3 21:40:12 UTC 2010
21:40:56 <Vorpal> $ ./date
21:40:56 <Vorpal> Fri Dec 3 22:40:24 CET 2010
21:40:59 <Vorpal> $ ./date -u
21:40:59 <Vorpal> Fri Dec 3 21:40:25 CET 2010
21:41:40 <elliott> Vorpal: http://filebin.ca/vkhbbe/date
21:41:42 <elliott> Vorpal: This might work.
21:41:48 <elliott> It does setenv("TZ", "UTC", 1).
21:41:57 -!- Mathnerd314 has quit (Ping timeout: 245 seconds).
21:42:11 <Vorpal> elliott, no
21:42:12 <Vorpal> it doesn't
21:42:18 <elliott> Hmph.
21:42:21 <elliott> I'll have to think then.
21:42:32 <Vorpal> elliott, also strace show nothing about the setenv
21:42:32 <elliott> Vorpal: BTW, you will easily be able to link these against a libc that *does* do locales.
21:42:37 <elliott> ...?
21:42:41 <elliott> Weird.
21:42:43 <elliott> Oh well.
21:42:44 <Vorpal> elliott, surely env is in kernel
21:42:52 <elliott> Vorpal: What?
21:43:04 <Vorpal> elliott, I mean, it has to be. Otherwise env wouldn't work with exec
21:43:13 <elliott> I don't get the relevance.
21:43:15 <Vorpal> so thus it should show up in strace
21:43:18 <Vorpal> when I run
21:43:22 <Vorpal> strace ./date -u
21:43:22 <elliott> I don't know why it doesn't.
21:43:34 <Vorpal> which means you either uploaded the wrong version or it doesn't work
21:43:42 <Vorpal> or env is done in a screwy way
21:43:46 <Vorpal> which might well be the case
21:48:08 <Vorpal> elliott, how horrible is the multiprocessing module in python?
21:49:12 <elliott> Vorpal: Global Interpreter Lock.
21:49:20 <Vorpal> elliott, no it is the forking one
21:49:21 <elliott> Vorpal: You have to use subprocess instead for any kind of concurrency at all.
21:49:23 <elliott> Oh.
21:49:25 <elliott> Acceptable.
21:49:35 <Vorpal> elliott, but how bad is it to use
21:49:58 <elliott> Acceptable, I guess. I never have.
21:50:05 <Vorpal> elliott, I also expect I need 16 bytes of shared memory (two floats) that I can update atomically.
21:50:08 <Vorpal> err
21:50:10 <Vorpal> two doubles
21:51:47 <Vorpal> gah only lock sync. No sane sync
21:51:50 <elliott> pikhq: This makes nooooo sense at all :P
21:51:53 <Vorpal> (sane = compare and swap)
21:53:40 <pikhq> Vorpal: env is *definitely* not in the kernel.
21:54:16 <Vorpal> pikhq, but then how does the exec*() family of functions propagate the enviornment?
21:54:21 <Vorpal> environment*
21:54:30 <pikhq> Vorpal: The system call takes an environment argument.
21:54:36 <elliott> %D Equivalent to %m/%d/%y. (Yecch — for Americans only. Americans
21:54:36 <elliott> should note that in other countries %d/%m/%y is rather common.
21:54:36 <elliott> This means that in international context this format is ambigu‐
21:54:36 <elliott> ous and should not be used.) (SU)
21:54:46 <elliott> "Americans, you are ignorant and backwards. In this manual page, I will enlighten you. Dumbfucks."
21:54:48 <pikhq> The libc maintains the actual environment.
21:55:12 <Vorpal> elliott, i prefer yyyy-mm-dd
21:55:57 <Vorpal> elliott, is your strftime() long-now compliant?
21:56:07 <pikhq> I prefer ISO 8601.
21:56:08 <elliott> Vorpal: nope!
21:56:15 <Vorpal> elliott, should fix that
21:56:17 <elliott> pikhq: that /is/ iso 8601
21:56:23 <elliott> pikhq: iso 8601 has the stupid flaw of using T as a separator
21:56:25 <elliott> rather than a space
21:56:28 <elliott> making it harder to read
21:56:31 <elliott> Vorpal: no :P
21:56:39 <Vorpal> elliott, I don't use a T there
21:56:41 <pikhq> elliott: Shame, that.
21:56:42 <Vorpal> I use a space
21:56:43 <elliott> Vorpal: If anyone is using Unix in the year 10,000... I pity them.
21:56:52 <elliott> And laugh at their misfortunes, for they will be endless.
21:57:05 <Vorpal> elliott, true but they could use the data files printed on current unix
21:57:11 <elliott> Vorpal: If anyone is using Unix in the year 10,000... I pity them.
21:57:16 <Vorpal> elliott, indeed
21:57:23 <elliott> BY ALL.
21:57:26 <elliott> THAT IS ALL, STOP READING NOW
21:57:28 <Vorpal> no you aren't
21:57:36 <elliott> OH LOOK IT ALREADY HAPPENED
21:57:40 <Vorpal> :P
21:57:57 <Vorpal> elliott, anyway. they could use data files created in the next few years
21:57:59 <Vorpal> over then
21:58:04 <Vorpal> on a non-unix system
21:58:15 <elliott> Vorpal: Then they'll have their own strftime.
21:58:45 <Vorpal> elliott, yes then in the future. But if they want to read a textual file created in the year 2011, it might have 4 digit dates
21:58:49 <Vorpal> which would be annoying
21:59:03 * elliott reads busybox date.c, and BREAKS THE LAW!
21:59:12 <Vorpal> elliott, what law?
21:59:13 <elliott> (Reading GPL'd code for information on how to write a non-GPL'd program is ILLEGAL.)
21:59:20 <elliott> I'll be COPYRIGHT INFRINGING with my MIND.
21:59:25 <Vorpal> mhm
21:59:26 <elliott> If only I hadn't told anyone...
21:59:41 <elliott> if (opt & OPT_UTC)
21:59:41 <elliott> putenv((char*)"TZ=UTC0");
21:59:41 <elliott> LOLZ
21:59:58 <Vorpal> elliott, what is so funny with that
22:00:11 <Vorpal> elliott, except for them casting a string to char
22:00:15 <Vorpal> char*
22:00:17 <Vorpal> oh wait
22:00:21 <Vorpal> from const char*
22:00:23 <Vorpal> to char*
22:00:24 <Vorpal> right
22:00:29 <elliott> Vorpal: Just that that's what I've been doing
22:00:31 <elliott> except with setenv
22:00:33 <elliott> and it isn't working
22:00:39 <Vorpal> elliott, different libc?
22:00:46 <elliott> #if ENABLE_FEATURE_DATE_NANO
22:00:46 <elliott> /* libc has incredibly messy way of doing this,
22:00:46 <elliott> * typically requiring -lrt. We just skip all this mess */
22:00:46 <elliott> syscall(__NR_clock_gettime, CLOCK_REALTIME, &ts);
22:00:46 <elliott> #else
22:00:46 <elliott> time(&ts.tv_sec);
22:00:48 <elliott> #endif
22:00:50 <elliott> Y'all crazy.
22:00:54 <elliott> Vorpal: Yes, indeed.
22:01:04 <elliott> Vorpal: It may be one of those dietlibc bugs that they won't fix because it'd increase the size. :p
22:01:17 <Vorpal> elliott, also clock_gettime is -lrt on linux, it is -lc on *bsd
22:01:25 <Vorpal> just to complicate the thing
22:01:34 <Vorpal> elliott, clock_gettime is *nice* though
22:01:36 <elliott> Vorpal: That's nice! I'm using time()!
22:01:41 <elliott> Because it's goddamn date(1)!
22:01:58 <Vorpal> elliott, what about %N ?
22:02:06 <elliott> What about it?
22:02:16 <Vorpal> oh wait, not POSIX
22:02:19 <elliott> Right.
22:02:20 <Vorpal> elliott, nano seconds :P
22:02:30 <elliott> $ date +%N
22:02:31 <elliott> 212106062
22:02:31 <elliott> Orn ot?
22:02:33 <elliott> *Or not?
22:02:33 <Vorpal> s/o //
22:02:38 <elliott> That's smaller than +%s, even.
22:02:40 <Vorpal> elliott, yes nanoseconds in current second
22:02:41 <Vorpal> :P
22:02:43 <elliott> Ah.
22:02:43 <elliott> lawl
22:02:47 <elliott> I think not :P
22:03:06 <Vorpal> elliott, nanoseconds since 1970 would be absurd
22:03:08 <Deewiant> % date +%N
22:03:08 <Deewiant> %N
22:03:23 <Vorpal> Deewiant, what system?
22:03:28 <elliott> Vorpal: My date is so evil, it doesn't even let you set the current time with it.
22:03:30 <elliott> That's right!
22:03:30 <Vorpal> *BSD I presume
22:03:33 <elliott> That's NON-XSI-COMPLIANT.
22:03:36 <Deewiant> Solaris 11 Express
22:03:40 <Vorpal> Deewiant, heh!
22:03:43 <elliott> Deewiant: ...I love you.
22:03:46 <Vorpal> Deewiant, Express?
22:03:48 <elliott> Please tell me you installed it JUST FOR THAT
22:03:50 <elliott> In like 3 seconds.
22:03:57 <Deewiant> Nope
22:04:02 <elliott> I should get a DS9K just to irritate people.
22:04:07 <Deewiant> % uptime
22:04:08 <Deewiant> 12:03am up 11 day(s), 7:13
22:04:10 <Vorpal> elliott, he installed it to run oracle mysql on it I guess :P
22:04:16 <elliott> Deewiant: The first time a Sun has ever been up 11 days!
22:04:17 * Vorpal ducks
22:04:25 <elliott> Vorpal: *Oracle'sSQL
22:04:32 <Vorpal> elliott, they named it that?
22:04:33 <Deewiant> elliott: Ah, but it's not Sun anymore is it
22:04:36 <elliott> Vorpal: No, but I just did :P
22:04:47 <Deewiant> (Although before the update it was up for a few months)
22:04:59 <elliott> "No, you see, MySQL isn't YOUR SQL. It's MY SQL. It serves MY corporate interests, see?"
22:05:25 <Vorpal> elliott, yes that was obvious when you said it wasn't the actual name
22:05:26 <Deewiant> Vorpal: And yes, Express. I don't know why it's called that.
22:06:11 <elliott> Deewiant: Because it's FAST!
22:06:20 <Deewiant> Maybe.
22:06:23 <Vorpal> gah, I conclude that it is impossible to do anything with compare and swap from within python
22:08:55 <Vorpal> openmp doesn't support CAS?
22:10:19 <elliott> pikhq: Alas, I cannot do all program that don't parse args as _start.
22:10:22 <elliott> pikhq: /home/elliott/kitten/stage2/lib-x86_64/libc.a(stackgap.o): In function `stackgap':
22:10:28 <elliott> So that's for syscall-only programs.
22:10:43 <elliott> Wait. Is getcwd a syscall?
22:10:55 <elliott> Eh, whatever.
22:14:17 <elliott> pikhq: Dynamically-linked glibc versions of what I have so far total to 210K. My statically-linked dietlibc versions: 18K.
22:14:24 <elliott> (That's in decimal Ks.)
22:14:27 <elliott> (Just going from wc -c.)
22:18:23 <Vorpal> elliott, hm cython allows you to release the GIL
22:18:29 <Vorpal> but with lots and lots of warnings
22:18:31 <elliott> Vorpal: Good luck with that.
22:18:38 <Vorpal> elliott, no I'm not quite that insane
22:18:48 <pikhq> elliott: Nice.
22:18:53 <Vorpal> elliott, since the "generate valid moves" code still uses a python list
22:19:31 <Vorpal> elliott, all of the tight loop code except for that compiles to pure C now though
22:19:37 <elliott> pikhq: Should I bother supporting [:upper:] and all that crap in tr?
22:19:54 <elliott> Oh fuck it, tr can wait.
22:22:42 <elliott> pikhq: I feel like I'm doing the easy stuff and avoiding the harder stuff. Any suggestions for what to do next?
22:22:45 -!- Sasha has joined.
22:22:49 <elliott> kill, maybe?
22:22:59 -!- perdito has joined.
22:25:54 <elliott> pikhq: If I go through sys_siglist to convert a signal name into a number, am I a bad person?
22:26:31 <elliott> Wait, that won't work.
22:32:08 <elliott> _<PID>_GNU_nonoption_argv_flags_
22:32:09 <elliott> This variable was used by bash(1) 2.0 to communicate to glibc
22:32:09 <elliott> which arguments are the results of wildcard expansion and so
22:32:09 <elliott> should not be considered as options. This behavior was removed
22:32:09 <elliott> in bash(1) version 2.01, but the support remains in glibc.
22:32:12 <elliott> pikhq: dear god.
22:33:33 * Sgeo nostalgias at http://www.ccs3.lanl.gov/mega-math/workbk/infinity/inhotel.html
22:34:17 <pikhq> ... That's *revolting*.
22:35:27 <Sgeo> gcc was in bed with bash?
22:35:46 <Sgeo> Wait, not gcc
22:36:02 <Sgeo> ...all programs?
22:36:04 <elliott> pikhq: Yeah. It totally is.
22:36:07 <elliott> Sgeo: glibc.
22:36:11 <elliott> And by extension every program that used getopt.
22:36:25 <elliott> pikhq: I love how it took them exactly 0.01 version to remove that hideous abomination.
22:36:31 <elliott> Maybe *a single person noticed*. :P
22:37:01 <elliott> pikhq: Ha! kill can't use getopt.
22:37:07 <elliott> Because kill takes -FOO for every signal FOO.
22:41:31 -!- ais523 has quit (Read error: Connection reset by peer).
22:44:59 <Phantom_Hoover> elliott, hmm, the version is a unit?
22:45:05 <Phantom_Hoover> What does it measure?
22:46:14 <elliott> Phantom_Hoover: ?
22:46:30 <elliott> pikhq: What the fuck. Apparently "kill -l $?" has to print out what signal killed the relevant process.
22:46:32 <elliott> pikhq: Does anyone use that?
22:46:37 <Phantom_Hoover> It's an esoteric concept!
22:50:07 <Vorpal> elliott, I'm going to try pypy
22:50:48 <pikhq> elliott: *What the fuck*?
22:52:03 <Deewiant> I'm pretty sure I've used that, but I can't remember if I had any good reason to
22:53:02 <elliott> pikhq: Yeah... wut.
22:54:26 <Phantom_Hoover> elliott, zuh?
22:54:53 <elliott> Binary size just inflated after separating out barf.h. TODO: diagnose. (I think it's strlen calls.)
22:54:58 <elliott> Phantom_Hoover: ?
22:55:06 <Phantom_Hoover> So kill -l <pid> prints what pid was killed by?
22:55:16 <elliott> Phantom_Hoover: No... $? is the exit status.
22:55:41 -!- Sasha has quit (Ping timeout: 245 seconds).
22:55:59 <Phantom_Hoover> elliott, aaaaaaaah.
22:56:16 <oerjan> die agnostic
22:56:31 -!- Gregor has set topic: HELP COMPUTER | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
22:56:42 -!- Sasha has joined.
22:56:47 <elliott> pikhq: For some reason, kill keeps giving me "Invalid argument" back.
22:57:36 <elliott> brb
22:58:44 * Vorpal watches pypy compile itself
22:59:48 <oerjan> http://www.wikipl.com/index.php/Main_Page
23:00:14 <Vorpal> elliott, minecraft bug update (fixes the forgetting port bit and other stuff)
23:00:16 <Vorpal> but also uh
23:00:18 <Vorpal> "* Added lakes and rare lava pools, both on the surface and randomly in caves."
23:00:22 <Vorpal> how is that a bug update
23:00:26 <elliott> lol
23:00:43 <Phantom_Hoover> oerjan, highly esoteric.
23:01:08 <oerjan> indeed
23:02:14 <Sgeo> http://www.youtube.com/watch?v=lobeX6ft6PA "This sounds absurd, therefore it couldn't possibly be physical reality" (Note: I'm pretty sure everyone is aware that no one these days says that the universe is infinitely old, but still)
23:02:55 <Phantom_Hoover> oerjan, let's make it something awesomely crazy!
23:03:14 <oerjan> you go ahead
23:03:21 <Phantom_Hoover> Sgeo, Hoyle went to his grave swearing by a modified Steady State theory.
23:04:38 <Phantom_Hoover> And Hoyle was not a nutcase.
23:05:33 <Sgeo> My browser froze. Unfortunatly, I was in the middle of playing a YouTube video
23:05:43 <Sgeo> There is now an annoying sound emmenating from my speakers
23:05:46 <Sgeo> *emminating?
23:06:09 <Phantom_Hoover> Sgeo, was it another video by that idiot?
23:07:16 <Phantom_Hoover> Also, it's "emanating".
23:07:19 <Vorpal> elliott, I don't know what it means but pypy compiling itself draws pretty colour coded output
23:07:23 <Vorpal> like ASCII art
23:07:33 <elliott> Vorpal: mandelbro6 iirc
23:07:36 <elliott> brot
23:07:40 <Vorpal> elliott, why
23:07:56 <elliott> fun
23:07:57 <Vorpal> elliott, why compute that while it compiles itself?
23:08:05 <Vorpal> I mean, it would slow down the thing
23:08:28 <elliott> its prolly hardcoded. also instant anyway...
23:08:54 <Vorpal> not very pretty when interrupted by warning messages
23:09:06 <Vorpal> though it does line up properly below the warning
23:10:06 -!- MigoMipo_ has joined.
23:10:16 -!- Sgeo has quit (Ping timeout: 245 seconds).
23:11:09 -!- MigoMipo has quit (Ping timeout: 240 seconds).
23:11:39 <Phantom_Hoover> oerjan, how does WikiPL work right now?
23:11:49 <Phantom_Hoover> And is it headed towards being WikiFalcon?
23:12:14 <oerjan> http://www.wikipl.com/index.php/WPL_Documentation
23:12:29 <oerjan> i just found this on reddit so i don't know much more than you :D
23:12:56 <oerjan> apparently you cannot currently register automatically for security reasons
23:13:10 <Phantom_Hoover> oerjan, how are we meant to make it AWESOME
23:13:25 <oerjan> afaiu each article contains python code for part of the language implementation
23:14:31 -!- Sgeo has joined.
23:15:21 <Phantom_Hoover> Hmm...
23:15:28 <Sgeo> PH, I was listening to some music
23:16:28 <Phantom_Hoover> Sgeo, was it music from the late 90s or early 2000s?
23:16:35 <Sgeo> lol
23:17:01 * Sgeo suddenly thinks of some music that he likes for nostalgic reasons
23:17:12 <Sgeo> This song isn't one of those though
23:17:20 <Sgeo> http://www.youtube.com/watch?v=GE_FhAGYy8w
23:19:37 -!- zzo38 has joined.
23:20:11 <oerjan> btw the reddit post is http://www.reddit.com/r/programming/comments/efuve/wikipl_the_free_programming_language_that_anyone/
23:21:20 <Sgeo> http://www.wikipl.com/index.php?title=Main_Page&action=edit
23:21:24 <Sgeo> That's no Python!
23:21:55 <oerjan> there are obviously a few exception pages :D
23:22:41 <elliott> oerjan: it should be haskell
23:22:44 <elliott> less sandboxing needed too
23:23:22 <Sgeo> It should be Newspeak. Less sandboxing needed too
23:23:26 <Sgeo> (Well, not atm)
23:24:04 <elliott> But not functional.
23:24:24 <elliott> Non-functional languages are really just relics of the past, making new ones is basically laughable.
23:24:51 <Sgeo> Haskell, and (in the future) Newspeak. What other nicely sandboxed languages are there? [Although I must point out that in Haskell, code either has full access to the outside world or no access to the outside world]
23:25:34 <Phantom_Hoover> Sgeo, in the future all languages will be @!
23:25:43 <elliott> Sgeo: the latter is not true
23:25:52 <elliott> you can build more access control on top of IO
23:26:30 -!- MigoMipo_ has quit (Read error: Connection reset by peer).
23:27:09 <elliott> "Justin Bieber Wikipedia Page Hacked With Homosexual Remark" --spam link on reddit
23:27:18 <elliott> Translation: Someone vandalised Wikipedia for WHOLE SECONDS (probably the article author)
23:27:33 <elliott> "Wikipedia (The Free Encyclopedia) is usually a reliable source of info so we aren’t sure how this one got by them. This is the first time we have seen someone sabotage a celebrity’s Wiki page. At the time it is unknown who is responsible for hacking Justin Bieber’s bio."
23:27:46 <Sgeo> elliott, The Onion?
23:27:50 <zzo38> Chris Pressey made some new ideas for esoteric programming language. I like this
23:27:52 <elliott> No.
23:27:52 <elliott> Spam.
23:28:55 <elliott> # (cur | prev) 04:08, 2 December 2010 ClueBot NG (talk | contribs) m (45,439 bytes) (Reverting possible vandalism by Tom191 to version by Silvergoat. Questions, comments, complaints -> BRFA Thanks, ClueBot NG. (84172) (Bot))
23:28:55 <elliott> # (cur | prev) 04:08, 2 December 2010 Tom191 (talk | contribs) (51 bytes) (←Replaced content with 'Justin Bieber is squirrel in a blender. He is gay.')
23:28:59 <elliott> It stayed there for a whole ZERO MINUTES.
23:31:49 <elliott> pikhq: Wanna DEBUG MY KILL??
23:34:22 * Sgeo desperately wants to know why scrolling via trackpad isn't the same as scrolling via mouse wheel
23:36:01 <Phantom_Hoover> Hey, we should totally do an esoteric version of wikiPL on the esolangs wiki.
23:36:14 <elliott> Phantom_Hoover: We couldn't do it there, if it's automated at all.
23:36:22 <elliott> On a separate wiki, sure.
23:36:27 <Phantom_Hoover> elliott, why?
23:36:34 <elliott> Phantom_Hoover: Because the wiki doesn't have any patches?
23:36:40 <oerjan> maybe on that hackiki thing?
23:36:58 <Phantom_Hoover> elliott, what patches do you need for "pull page source from site, extract code"?
23:37:26 <elliott> Phantom_Hoover: It'd need protecting anyway.
23:37:31 <elliott> oerjan: Yeah, you could hack it into hackiki.
23:37:49 <zzo38> Phantom_Hoover: DottyWeb does pull page source from site and extract code but it is not built-in to the wiki program, you need to downloadit separately.
23:37:56 <elliott> http://www.wikipl.com/index.php/HelloWorld Wow, way overengineered.
23:38:02 <elliott> XML! Unit tests!
23:38:11 <elliott> Camel-case thus failure at PEP-8!
23:38:16 <elliott> http://www.wikipl.com/index.php/Test001 wtf web interface
23:38:20 <elliott> I thought this was a collaborative programming language
23:38:52 <Phantom_Hoover> elliott, my hatred for it shot up when you said "XML".
23:39:24 <Vorpal> elliott, also underground lakes from now on hm
23:39:53 <Sgeo> It should all be written in Smallnewfactor obviously
23:40:05 <Sgeo> Smallnewfalctor
23:40:26 <elliott> pikhq: I have a feature that busybox doesn't! BLOAT!
23:45:05 -!- augur has quit (Remote host closed the connection).
23:47:47 <Phantom_Hoover> Sgeo, *Smallnewfalctorscala
23:47:57 -!- FireFly has quit (Quit: swatted to death).
23:47:59 <Sgeo> Scalamallnewfalctor
23:50:55 <elliott> http://sprunge.us/IgWe
23:50:56 <elliott> Handy!
23:51:33 <elliott> It still can't kill processes though.
23:51:40 <elliott> Probably because pikhq won't look at the code.
23:52:25 <zzo38> Why doesn't Creative Commons have a "no attribution required" option?
23:53:57 <Sgeo> Because somewhere out there is the Anti-Sgeo
23:56:07 <elliott> zzo38: it does
23:56:14 <elliott> Sgeo: doesn't, not does.
23:56:21 <elliott> zzo38: oh you mean
23:56:25 <elliott> it requires people to *not* attribute you?
23:56:26 <elliott> that's non-Free
23:56:30 <elliott> i think
23:56:31 <elliott> and uh, stupid
23:56:34 <elliott> just release it anonymously
23:57:55 -!- kar8nga has quit (Remote host closed the connection).
23:58:09 <zzo38> No. I don't mean it should require people to *not* attribute me. I mean it should provide the option that they can attribute me or not depending on their choice
23:58:36 <Phantom_Hoover> CC PD?
23:59:24 <zzo38> But I do want share-alike to be the condition
23:59:38 <zzo38> That share-alike is require but attribute is optional
←2010-12-02 2010-12-03 2010-12-04→ ↑2010 ↑all