00:16:44 -!- ais523\unfoog has quit (Read error: Connection reset by peer).
00:18:46 -!- oklopol has quit (Read error: Connection reset by peer).
00:19:05 -!- oklopol has joined.
00:20:09 -!- Zuu_ has quit (Ping timeout: 244 seconds).
00:22:29 <elliott> gah, the two people I was gonna talk to both quit at the same time
00:41:55 -!- augur has quit (Remote host closed the connection).
01:04:16 -!- derdon has quit (Remote host closed the connection).
01:13:18 -!- augur has joined.
01:28:43 -!- GreaseMonkey has joined.
01:28:44 -!- GreaseMonkey has quit (Changing host).
01:28:44 -!- GreaseMonkey has joined.
02:06:24 -!- nooga has quit (Ping timeout: 252 seconds).
02:27:02 -!- tiffany has quit (Quit: Leaving).
02:39:56 -!- slayerten has joined.
02:40:39 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
02:52:17 -!- slayerten has quit (Ping timeout: 240 seconds).
02:53:32 -!- slayerten has joined.
02:58:59 -!- slayerten has quit (Quit: Leaving.).
03:15:50 <Gregor> "Chili and basil give rise to its distinctive spiciness."
03:15:56 <Gregor> Yeah, when I think "spicy", I think "basil"
03:16:04 <Gregor> That spicy, spicy basil.
03:17:34 <elliott> "Archive maintainers are encouraged to copy this
03:17:34 <elliott> distribution to their archives outside the USA. Please get it from
03:17:34 <elliott> ftp.gwdg.de; transferring this distribution from ftp.gnu.org (or any other
03:17:34 <elliott> site in the USA) to a site outside the USA is in violation of US export
03:17:39 <elliott> Wow, GNU offer a way to violate US export laws on demand.
03:17:45 <elliott> Nobody outside the US download this file: http://ftp.gnu.org/gnu/glibc/glibc-crypt-2.1.tar.gz
03:18:24 <elliott> It's them that violate the laws, right?
03:18:46 <coppro> I might have just illegally exported it
03:19:07 <elliott> I think the burden is meant to be on the distributors, which is why everyone's paranoid about it
03:21:42 <Gregor> The USA has actually relaxed its export regulations since 200something.
03:22:06 <Gregor> Lesse what Wikipedia says ...
03:24:52 <Gregor> You have to notify the Bureau of Industry and Security. But that's all, there's no licensing or other restrictions, they just have to KNOWWWWWWWW.
03:25:05 <Gregor> Also it seems that for any given source release you only have to notify once.
03:25:13 <Gregor> (i.e. mirroring isn't an issue)
03:32:20 <Gregor> Also, you have the option of emailing them, or faxing AND mailing them! (Note: that is not an "or", it is an "and")
03:34:42 <elliott> Now would be a great time to force a horrific question on you.
03:34:50 <elliott> Gregor: How'd I override the Linux clock syscalls to always return the epoch
03:41:14 <elliott> At this rate it looks like I'm gonna have to steal Web of Lies' architecture-specific syscall-overriding code...
03:51:55 -!- TeruFSX has joined.
03:55:25 <elliott> [elliott@dinky weboflies]$ sudo ./weboflies ls
03:55:25 <elliott> = WARNING: mount("/home/ais523", "/tmp/home/ais523", 0, MS_BIND|MS_RDONLY, 0): No such file or directory
03:55:25 <elliott> = WARNING: mount("/home/ais523/weboflies/nethack/nethack", "/tmp/var/games/nethack", 0, MS_BIND, 0): No such file or directory
03:55:25 <elliott> = WARNING: mount("/etc/nethack", "/tmp/etc/nethack", 0, MS_BIND|MS_RDONLY, 0): No such file or directory
03:55:26 <elliott> = WARNING: unexpected signal 11 sent to pid 13002
03:55:28 <elliott> + executed program terminated
03:55:35 <elliott> Gregor: Can you shoot ais for me?
03:56:05 <elliott> Gregor: I'm trying to get the Project Formerly Known as the Secret Project running :P
03:56:12 <Gregor> Is web-o-flies related to --- so yes.
03:56:35 <Gregor> So much better than the alternate reading.
03:57:38 <elliott> Gregor: But yeah, right now it has a bunch of lolunportable bind mounts :P
03:57:49 <elliott> /* make my home dir visible inside the chroot, for testing */
03:57:49 <elliott> ewarn(mkdir("/tmp/home/ais523", 0755));
03:57:49 <elliott> ewarn(mount("/home/ais523", "/tmp/home/ais523", 0, MS_BIND|MS_RDONLY, 0));
03:57:49 <elliott> /* more for-testing things */
03:57:49 <Gregor> Seems that way, dunnit.
03:57:50 <elliott> ewarn(mkdir("/tmp/var/games", 0755));
03:57:52 <elliott> ewarn(mkdir("/tmp/var/games/nethack", 0755));
03:57:54 <elliott> ewarn(mount("/home/ais523/weboflies/nethack/nethack", "/tmp/var/games/nethack", 0, MS_BIND, 0));
03:57:56 <elliott> ewarn(mkdir("/tmp/etc/nethack", 0755));
03:57:58 <elliott> ewarn(mount("/etc/nethack", "/tmp/etc/nethack", 0, MS_BIND|MS_RDONLY, 0));
03:58:24 <elliott> /* make my home dir visible inside the chroot, for testing */
03:58:24 <elliott> ewarn(mkdir("/tmp/home/elliott", 0755));
03:58:24 <elliott> ewarn(mount("/home/elliott", "/tmp/home/elliott", 0, MS_BIND|MS_RDONLY, 0));
03:58:29 <Gregor> s/if 1/if 0/ PROBLEM SOLVED
03:58:41 <elliott> Gregor: Damn, I was gonna ask if you've seen the source code but then I realise ais gave it to me in private :P
03:58:44 <elliott> It's... it's something else.
03:58:54 <elliott> For instance it's over 4000 lines in a single C file :P
03:59:10 <elliott> [elliott@dinky weboflies]$ sudo ./weboflies ls
03:59:10 <elliott> = ERROR: stat proc/pid/fd: Permission denied
03:59:12 <Gregor> Remember when you complained about Plof's interpreter function?
03:59:29 <elliott> Gregor: You want me to hold everyone by ais' coding standards?
04:00:10 <Gregor> Also, I think I have a new winner of my Unicode Nonsense Prize.
04:00:18 <Gregor> GOAT ain't got nothin' on CAT FACE WITH WRY SMILE
04:01:34 <elliott> Gregor: http://www.fileformat.info/info/unicode/char/1f639/index.htm
04:02:06 <Gregor> Yeah, I found it on fileformat.info's list.
04:02:13 <Gregor> I feel that WRY SMILE is better though.
04:05:09 <elliott> Gregor: Seriously though... you gotta see this thing's code before you die.
04:05:19 <elliott> Every comment is like a paragraph of pure horror.
04:06:15 <elliott> Gregor: Have I mentioned it does SDL support by using a PNG framebuffer?
04:06:27 <elliott> (OK, it uses a framebuffer which it can screenshot to PNG :P Still)
04:06:37 <elliott> (In-memory framebuffer, that is)
04:06:51 <elliott> Gregor: http://www.fileformat.info/info/unicode/char/1f648/index.htm
04:09:31 <elliott> U+01A2 LATIN CAPITAL LETTER OI
04:09:31 <elliott> U+01A3 LATIN SMALL LETTER OI
04:09:31 <elliott> These should have been called letter GHA. They are neither pronounced 'oi' nor based on the letters 'o' and 'i'.
04:09:31 <elliott> -- http://unicode.org/notes/tn27/
04:09:35 <lifthrasiir> uhm, is there an esolang that the source code is raw waveform (audible or not)?
04:09:57 <elliott> lifthrasiir: piet encoded as pcm :p
04:10:43 <elliott> input-format languages are rarely novel :P something that based it on some kind of actually interesting waveformy analysis would be interesting
04:10:44 <Gregor> elliott: At least they kinda LOOK like OI.
04:10:49 <elliott> but probably involve reals and thus be a pain to run
04:10:58 <elliott> (whereby "a pain" means "impossible")
04:11:45 <elliott> Gregor: Did you logread to see what the Secret Project is actually for? Wait, you never logread, do you :P
04:12:46 <lifthrasiir> elliott: i have thought that such language may build a network of filters (or DSPs, if you prefer) and run the input through it
04:13:00 <Gregor> elliott: No, but I have some vague familiarity from earlier mentions of it.
04:13:01 <elliott> lifthrasiir: that would be pretty. so the input would be audio too?
04:13:03 <Gregor> elliott: Software repeatability.
04:13:16 <elliott> Gregor: Right. It's for tool-assisted speedruns.
04:13:42 <lifthrasiir> there may be some fixed sources (i.e. sources and sinks) that appears in the source code as a wave literal
04:13:42 <Gregor> I thought it was for SCIENCE.
04:13:53 <elliott> Gregor: Tool-assisted speedruns are pretty damn scientific :P
04:14:01 <elliott> We already knew it wasn't testing or anything *shrugs*
04:14:17 <lifthrasiir> i don't know how to encode all these informations to some pretty waveforms though :S
04:15:07 <elliott> Gregor: http://www.fileformat.info/info/unicode/char/1F46F/index.htm I...
04:16:30 <elliott> http://www.fileformat.info/info/unicode/char/1f487/index.htm; very next codepoint: http://www.fileformat.info/info/unicode/char/1f488/index.htm
04:17:04 <elliott> Gregor: Have I mentioned Web of Lies does cooperative scheduling by overriding every single syscall to schedule
04:17:18 <elliott> So that syscalls block and yield appropriately.
04:17:54 <lifthrasiir> RAT vs. MOUSE: http://www.fileformat.info/info/unicode/char/1f400/index.htm http://www.fileformat.info/info/unicode/char/1f401/index.htm
04:18:05 <elliott> Gregor: Oh, and it overrides syscalls by using ptrace, transforming the arguments, calling the real syscall, then transforming the result in the process's memory in-place.
04:19:01 <elliott> Gregor: MEANWHILE: http://www.fileformat.info/info/unicode/char/1f51b/index.htm
04:29:02 <quintopia> where are you most likely to get mugged
04:36:50 <pikhq_> quintopia: 70s, Protestant neighborhood in Ireland, while being the Pope.
04:37:31 <quintopia> that's not in london, but i appreciate the thought
04:38:41 <pikhq_> Just be named Guy Fawkes. That should do it.
04:45:44 <Gregor> elliott: That's actually pretty damned nifty.
04:46:00 <elliott> Gregor: It's /horrifying/. It /manually messes with registers/.
04:46:34 <pikhq_> elliott: This is Gregor you're talking to.
04:47:25 <elliott> pikhq_: Gregor: You guys can't even begin to talk, you haven't SEEN this shit :P
04:47:43 <Gregor> No, but I wrote something similar in/for JavaScript ...
04:48:01 <elliott> What are you referring to?
04:49:46 <elliott> Gregor: Like, I can't think of ANYTHING to do with JS that would be even REMOTELY comparable to this :P
04:50:10 <elliott> It's possibly the least portable C program I've ever seen.
04:50:28 <pikhq_> elliott: Unless there's a bug in a Javascript implementation that allows him to prod registers manually.
04:50:35 <Gregor> elliott: http://sss.cs.purdue.edu/projects/dynjs/jsbench-oopsla-2011.pdf
04:50:43 <pikhq_> The least portable Javascript program!
04:51:01 <elliott> Gregor: Is the similarity just "it's for repeatability"
04:51:14 <elliott> Gregor: Because let me tell you, it is not the /idea/ that is horrifying here, it is very much the implementation :P
04:51:48 <Gregor> elliott: The implementation is PRETTY horrifying, but then JS is a highly-dynamic language with reflection, and ELF+x86 isn't.
04:52:14 <elliott> Gregor: The Secret Project doesn't give a shit about ELF. I don't quite think you understand :P
04:52:17 <Gregor> elliott: It's the same basic idea of standing in between all the syscalls and rewriting them.
04:52:32 <elliott> Gregor: It's based on constructing a chroot, starting a process, and then becoming a horrific parasite of it.
04:52:58 <elliott> Gregor: Note that you're not MEANT to be able to "intercept" syscalls :P
04:53:09 <elliott> You can just get notified when there's a syscall, pausing the process, and you happen to be able to fiddle with memory and registers.
04:53:32 <elliott> It's basically "interception via automated gdb" :P
04:53:52 <elliott> Seriously though, using syscalls for scheduling is warped, whatever universe you're in :P
04:53:56 <Gregor> That being said, it seems to me like that should be implementable in a way that's only /mostly/ horrible, not /entirely/ horrible.
04:54:00 <elliott> Have I mentioned it fakes a system clock?
04:54:10 <pikhq_> elliott: Please tell me this is something absurd like orthogonal persistance via ptrace.
04:54:13 <elliott> It actually manages time itself :P
04:54:22 <elliott> pikhq_: No, it's the Project Formerly Known as the Secret Project.
04:54:36 <pikhq_> That would be amazing though, you must admit.
04:54:38 <elliott> pikhq_: It makes Linux (almost) deterministic.
04:54:54 <elliott> (Deterministic if you don't have a loop that calls no syscalls in it)
04:55:40 <elliott> pikhq_: That was the Secret (you've seen ais523 talk about it, right?)
04:55:44 <Gregor> elliott: So, to what degree does it work?
04:55:50 <elliott> /* Linked list of future timed events, maintained in sorted order.
04:55:50 <elliott> Any syscall that schedules something to happen at a particular
04:55:50 <elliott> future time, such as nanosleep(2) (syscall return) or alarm(2)
04:55:50 <elliott> (signal) will add an element to this list. Time does not increase
04:55:50 <elliott> while any processes are executing; once all are simultaneously
04:55:51 <elliott> blocked, the first element from this list is taken and resolved.
04:55:53 <elliott> Simultaneous events cannot happen; if an event would be added to
04:55:55 <elliott> this list and another one already has the same time, the new event
04:55:57 <elliott> is postponed one nanosecond. We only have to worry about one sort
04:55:59 <elliott> of clock here; REALTIME and MONOTONIC are the same as system time
04:56:01 <elliott> cannot be changed without root privs and we don't change it,
04:56:03 <elliott> MONOTONIC_RAW is the same as MONOTONIC as we don't allow time slew,
04:56:05 <elliott> and we claim that all time spent executing is spent in syscalls
04:56:07 <elliott> (i.e. zero lag), so PROCESS_CPUTIME_ID and THREAD_CPUTIME_ID are
04:56:09 <elliott> always 0. (Likewise, of the three interval timers, ITIMER_REAL is
04:56:11 <elliott> based on realtime, and the other two never fire at all.) */
04:56:46 <elliott> Gregor: Well, right now I'm trying to get it to run on my system >_>
04:56:56 <Gregor> I guess for TAS being able to just fake up time is not sufficient, the goal is to have repeatable timing.
04:56:59 <elliott> Gregor: But I gather it runs NetHack, and evidently runs some SDL game well enough for that stuff to be tested.
04:57:17 <elliott> Gregor: He was even working on getting OpenGL working.
04:58:13 <elliott> pikhq_: Here's another one for ya:
04:58:16 <elliott> /* We can use procfs to get the current mappings, in order to avoid
04:58:16 <elliott> overlapping an existing mapping. The mappings are given in
04:58:16 <elliott> numerical order. The way it works is that we don't place anything
04:58:16 <elliott> before the first or after the last mapping (to avoid writing on
04:58:16 <elliott> system address space); and we place the mmap at the end of the
04:58:17 <elliott> last gap in which it fits with addrnear == 0. If addrnear has a
04:58:18 <elliott> value, we place it at addnear & PAGE_MASK if we can, or move it
04:58:20 <elliott> backwards slightly so that it fits if we can, or otherwise at the
04:58:22 <elliott> end of last the gap before addrnear where it fits or at the start
04:58:24 <elliott> of the next gap afterwards where it fits, whichever is nearer.
04:58:26 <elliott> There is one other rule: Linux doesn't like an mmap getting too
04:58:28 <elliott> near to the end of the stack, and shrinks the stack if that is
04:58:30 <elliott> done (presumably to give a guard page for stack overflow
04:58:32 <elliott> protection). As such, we keep each map at least a page away
04:58:36 <elliott> In fairness, there was a blank line before "There is one other rule".
04:59:39 <elliott> Gregor: pikhq_: Here's the scheduling rules: http://sprunge.us/GGYX (He's already pasted that with the realtime-simulation bits censored, but that's public now, so *shrug*)
05:02:19 <elliott> Gregor: pikhq_: OK, ais will get mad of me if I paste too much of this, but I couldn't resist: http://sprunge.us/DTJa
05:02:38 <pikhq_> So. You can fucking TAS at syscall granularity.
05:03:59 <elliott> OK, /something/ is wrong with the simulated /proc here
05:06:46 -!- monqy has quit (Quit: hello).
05:07:02 -!- Sgeo|web has joined.
05:07:22 <Sgeo|web> kmc's reaction to the AW SDK: "ughhhh"
05:08:27 <elliott> You're subjecting kmc to your API design? Come on, that's not fair.
05:09:37 <Sgeo|web> I'm not the one providing the AW SDK!
05:10:34 <elliott> Just think, all the person-hours going into this might produce a whole _three_ test bots before Sgeo|web gets bored and looks at another language.
05:11:21 <Sgeo|web> Actually-written code would be a surprise, tbh
05:12:02 <elliott> What's more likely is that you'll make a bunch of people go to the effort of trying to figure out how to bind it for absolutely nothing, but I thought you might find me saying that a little depressing.
05:14:03 <elliott> kmc: I would just use a global lock for this.
05:14:14 <elliott> Wait, you're trying to stop Sgeo from doing things like that, aren't you.
05:14:59 <kmc> no I am currently explaining how to do it :)
05:15:54 <elliott> kmc: I meant a global global. It's not a global if you can have more than one of them.
05:16:09 <elliott> But seriously, this is a hideous C API, top-level mutable variable > ReaderT implementation detail.
05:20:43 <kmc> elliott, I was getting to the global global
05:20:53 <kmc> why don't you follow along in #haskell instead of bugging me here
05:21:18 <elliott> I can't face watching it directly. But I'll leave you to deal with the horror. :p
05:58:46 -!- kwertii has quit (Quit: bye).
06:04:23 -!- MDude has changed nick to MSleep.
06:41:06 -!- hagb4rd has quit (Ping timeout: 240 seconds).
06:44:24 -!- naskg has joined.
06:46:01 <CakeProphet> has anyone here used an Array in a legitimate purposeful Haskell program?
06:58:05 -!- oerjan has joined.
07:03:44 <CakeProphet> would there be any values that have type-level natural types?
07:05:22 -!- naskg has quit (Read error: Connection reset by peer).
07:05:34 -!- naskg has joined.
07:06:28 <oerjan> :t Just (Just (Just (Just ())))) -- this has type 4, essentially?
07:06:38 <oerjan> :t Just (Just (Just (Just ()))) -- this has type 4, essentially?
07:07:12 -!- naskg has quit (Client Quit).
07:07:22 <oerjan> :t Identity (Identity (Identity (Identity ())))
07:07:23 <lambdabot> Identity (Identity (Identity (Identity ())))
07:07:27 <CakeProphet> oerjan: but not in the actual implementation of type-level naturals right?
07:07:57 <oerjan> what is "the" actual implementation?
07:08:39 <oerjan> it may be common for pure type-level programming in haskell to use empty data types, in which case you only have undefined, which haskell cannot avoid.
07:09:27 <CakeProphet> a type-level boolean would be nice. Basically it would serve the purpose of an anonymous set of two phantom types.
07:09:37 <oerjan> data Zero; data Succ a
07:10:54 <oerjan> even the above requires EmptyDataDecls extension (sp?)
07:14:22 <CakeProphet> right I understand what type is for, it just seems that in this context they'd be completely equivalent.
07:14:43 <oerjan> type must be entirely expandable at compile time
07:19:29 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
07:19:45 <CakeProphet> I don't really think that kind of definition would serve any kind of purpose.
07:19:53 <CakeProphet> basically to associate a group of types to a kind.
07:21:02 <oerjan> there are kinds all the way down
07:21:10 <oerjan> or sorts, whatever that is
07:22:29 <oerjan> i do have the feeling the above definition is a confusion of levels, though
07:23:12 <oerjan> something like kind / x y = (* -> x) -> * -> y i could sort of believe in
07:23:35 <CakeProphet> that's more like a kind-level type declaration
07:23:37 <oerjan> although the mix of operator and alphanums also grates
07:23:41 <CakeProphet> I was thinking more of a kind-level data declaration
07:23:55 <CakeProphet> where these types suddenly have this kind.
07:24:14 <CakeProphet> analogous to these constructor functions having this type.
07:24:24 <oerjan> hm ok that may make sense. although you'd want x and y to be parameters on the left side.
07:25:00 <CakeProphet> parameters in kinds are typically done via ->
07:25:28 <oerjan> um -> _is_ a kind constructor
07:25:50 <oerjan> i'd expect what you define to be other kind constructors
07:28:08 <CakeProphet> it may have some relevance to type-level programming?
07:30:38 <CakeProphet> also your rules about operators and variables is messed up now
07:30:48 <CakeProphet> -> is a kind operator but * is a kind variable.
07:30:48 <oerjan> no, it acts as a kind constant.
07:31:27 <CakeProphet> but if you added more kind distinctions then * being "any kind of type" is really kind of like a type variable, except that multiple occurences of * don't refer to the same kind.
07:32:16 <oerjan> ...enjoy your trip to the looney bin
07:32:39 <oerjan> i'm outta this conversation :P
07:32:56 <CakeProphet> any further and Oerjan would descend into madness.
07:35:03 <oerjan> something which would require insane unicode to describe.
07:36:19 <CakeProphet> I got this when I looked up "insane unicode"
07:37:35 <CakeProphet> (I thought maybe I could maybe help you describe it maybe\)
07:38:25 <CakeProphet> AND THE ACTIONS THAT UNDERLY THE SPOKEN WORD ARE THE PORGRAMS
07:38:44 <CakeProphet> Maybe I make extensive use of the maybe type
07:39:12 <CakeProphet> (perhaps being a synonym for maybe, mayhaps)
07:40:52 <elliott> CakeProphet was trying to do haskell
07:41:08 <elliott> <CakeProphet> has anyone here used an Array in a legitimate purposeful Haskell program?
07:41:11 <oerjan> elliott: HELP ME. HEEEEEEEEEEEEEEEEEEEEEEEEEEELP MEEEEEEEEEE!
07:41:13 <elliott> Array is practically deprecated
07:41:26 <elliott> <oerjan> what is "the" actual implementation?
07:41:26 <CakeProphet> elliott: kind-level metaprogramming is a state-of-art field in which I'm resorching.
07:41:32 <elliott> oerjan: the new ghc extension, perhaps?
07:41:37 <elliott> <oerjan> even the above requires EmptyDataDecls extension (sp?)
07:41:51 <elliott> <CakeProphet> kind-level metaprogramming? :P
07:42:00 <elliott> we're getting constraint kinds, and kind polymorphism is being worked on. it is in fact very useful
07:48:41 <CakeProphet> > let (>>:>:>>>:>:>>:>>:>:>>:>) = id in (+2) >>:>:>>>:>:>>:>>:>:>>:> 2
08:02:37 -!- elliott has quit (Read error: Connection reset by peer).
08:02:43 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: QUOTE: not found
08:02:44 <HackEgo> 74) <AnMaster> I'm 100% of what sort of magic was involved in it
08:02:55 <HackEgo> 46) <Deewiant> Reality isn't a part of physics
08:02:58 <HackEgo> 257) <Vorpal> ooh I want to see ehird pole dancing <ehird> I think that would be illegal. <Vorpal> oh you are right <Vorpal> damn :/
08:03:00 -!- elliott has joined.
08:03:00 <HackEgo> 462) <Madk> #%%:]__t�# <Madk> do you see that <Madk> that is great progress taking place
08:03:22 <HackEgo> 323) <Phantom_Hoover> ZOMGMODULES, St. Christopher, saint and werewolf.
08:03:22 <HackEgo> 79) <@Lawlabee> Why does Monday start at 10PM on Sunday?
08:06:53 <elliott> "@Donnenfeld: Your exploit does not work against current calibre-mount-helper, since I have fixed the mounting of symlinked dirs in both /dev and /media. Closing this bug. Re-open it only if you can point to/describe an actual exploit against current calibre-mount-helper."
08:07:38 <CakeProphet> elliott: he is the Rick Astley of calibre-mount-helper
08:08:14 <CakeProphet> is that you trying to troll #linux or is this something else?
08:08:32 -!- GreaseMonkey has quit (Remote host closed the connection).
08:10:07 <elliott> CakeProphet: it's https://bugs.launchpad.net/calibre/+bug/885027, which you will not regret reading
08:12:32 -!- GreaseMonkey has joined.
08:13:10 <elliott> CakeProphet: it's at #1 on proggit and had the active members of the channel in a state of awe for like over half of it a few hours ago
08:36:39 <lambdabot> forall a. (SimpleReflect.FromExpr a) => String -> a
08:37:44 <lambdabot> forall t. (SimpleReflect.FromExpr ([Char] -> t)) => t
08:37:56 <lambdabot> Couldn't match expected type `String'
08:37:56 <lambdabot> against inferred type `a -> String'
08:37:56 <lambdabot> In the first argument of `fun', namely `show'
08:38:11 <lambdabot> Couldn't match expected type `[Char] -> [Char] -> String'
08:38:11 <lambdabot> In the first argument of `fun', namely `(show fun "hello" "world")'
08:38:32 <lambdabot> Ambiguous type variable `a' in the constraints:
08:38:33 <lambdabot> arising from a use of `fun' at <interactive>:1:13-23
08:38:36 <CakeProphet> :t fun . show . fun "hello" $ "world" :: Expr
08:38:37 <lambdabot> Ambiguous type variable `a' in the constraints:
08:38:37 <lambdabot> arising from a use of `fun' at <interactive>:1:13-23
08:38:40 <oerjan> painful to watch, mostly
08:38:58 <CakeProphet> :t fun . show $ fun "hello" "world" :: Expr
08:38:59 <lambdabot> Ambiguous type variable `a' in the constraints:
08:38:59 <lambdabot> arising from a use of `fun' at <interactive>:1:14-32
08:39:30 <elliott> CakeProphet thinks that $ are literal syntactic parentheses.
08:39:51 <CakeProphet> oerjan: I'm trying to use fun and fold[lr] to implement unwords
08:39:55 -!- GreaseMonkey has quit (Remote host closed the connection).
08:40:37 <lambdabot> forall b a. (Show b, SimpleReflect.FromExpr b, Show a) => b -> [a] -> b
08:40:48 <lambdabot> Couldn't match expected type `[Char]' against inferred type `Char'
08:41:06 <elliott> CakeProphet thinks (f . g x) = (f (g x)).
08:41:16 <lambdabot> Ambiguous type variable `a' in the constraints:
08:41:16 <lambdabot> arising from a use of `fun' at <interactive>:1:12-36
08:41:19 <CakeProphet> :t fun $ show (fun "hello" (var "world")) :: Expr
08:41:20 <lambdabot> Ambiguous type variable `a' in the constraints:
08:41:20 <lambdabot> arising from a use of `fun' at <interactive>:1:12-36
08:41:53 -!- GreaseMonkey has joined.
08:41:54 <CakeProphet> :t fun (show (fun "hello" (var "world"))) "hello"
08:41:56 <lambdabot> Ambiguous type variable `a' in the constraints:
08:41:56 <lambdabot> arising from a use of `fun' at <interactive>:1:11-35
08:43:01 <oerjan> :t foldr1 (show . fun)
08:43:02 <lambdabot> Couldn't match expected type `a -> a'
08:43:02 <lambdabot> In the first argument of `(.)', namely `show'
08:43:25 <oerjan> :t foldr1 ((show .) . fun)
08:43:26 <lambdabot> Ambiguous type variable `a' in the constraints:
08:43:26 <lambdabot> arising from a use of `fun' at <interactive>:1:19-21
08:44:56 <elliott> > let foo [] = "end"; foo (x:xs) = show $ fun x (var (foo xs)) in foo ["a","b","c"]
08:44:57 <lambdabot> Ambiguous type variable `a' in the constraints:
08:45:05 <elliott> > let foo [] = "end"; foo (x:xs) = show (fun x (var (foo xs)) :: Expr) in foo ["a","b","c"]
08:45:24 <elliott> > let foo [] = var "end"; foo (x:xs) = fun x (foo xs) in foo ["a","b","c"] :: Expr
08:45:25 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
08:45:28 <elliott> > let foo [] = var "end"; foo (x:xs) = fun x (foo xs) in foo ["a","b","c"]
08:45:29 <lambdabot> No instance for (SimpleReflect.FromExpr
08:45:34 <elliott> > let foo [] = var "end"; foo (x:xs) = fun x (foo xs) in undefined
08:45:43 <elliott> :t let foo [] = var "end"; foo (x:xs) = fun x (foo xs) in foo
08:45:44 <lambdabot> forall a. (SimpleReflect.FromExpr (Sym a), Show a) => [String] -> Sym a
08:45:54 <lambdabot> Ambiguous type variable `a' in the constraints:
08:45:56 <elliott> > let foo [] = var "end"; foo (x:xs) = fun x (foo xs) in show (foo ["a","b"])
08:45:57 <lambdabot> No instance for (SimpleReflect.FromExpr
08:46:08 <lambdabot> forall a. (SimpleReflect.FromExpr a) => String -> a
08:46:18 <lambdabot> forall a. (SimpleReflect.FromExpr a) => a
08:47:15 <lambdabot> Language.Haskell.TH.Syntax VarE :: Name -> Exp
08:47:15 <lambdabot> Language.Haskell.TH VarE :: Name -> Exp
08:47:15 <lambdabot> Language.Haskell.TH.Lib varE :: Name -> ExpQ
08:47:29 <elliott> > let foo [] = fun "test" :: Expr; foo (x:xs) = fun x (foo xs) in show (foo ["a","b"])
08:48:15 <elliott> > let foo k [] = k $ fun "test"; foo k (x:xs) = foo (\k' -> k' x) xs in show (foo ["a","b"])
08:48:16 <lambdabot> Couldn't match expected type `(t -> b) -> b'
08:48:32 <elliott> CakeProphet: this isn't going to work.
08:48:36 <elliott> not without essentially defining
08:48:58 <elliott> (yes yes I know "join" clashes there)
08:49:35 <lambdabot> forall o n. (Newtype n o) => (o -> n) -> n -> o
08:50:59 -!- oerjan has quit (Quit: Later).
08:51:34 <elliott> @tell oerjan you can't ask a question and then leave, jerk >:(
08:51:57 <elliott> @tell oerjan it's from http://hackage.haskell.org/packages/archive/newtype/latest/doc/html/Control-Newtype.html
09:34:19 -!- ais523 has joined.
09:38:08 <elliott> [elliott@dinky hello-2.7]$ time sleep 5
09:38:18 -!- nooga has joined.
09:38:42 <elliott> I haven't got Web of Lies to work, but this is my cheap LD_PRELOAD version of the clock hack
09:38:46 <elliott> bash runs in it, which is a good start
09:38:53 <elliott> I'm about to try compiling hello to prove all the naysayers wrong
09:39:00 <elliott> without even bothering to backdate the source files!
09:39:11 <elliott> [elliott@dinky hello-2.7]$ date
09:39:11 <elliott> Thu Jan 1 01:00:00 BST 1970
09:39:11 <elliott> wait, I thought BST was over.
09:39:29 <ais523> no, it wasn't BST on the epoch either
09:39:41 <elliott> orig_gettimeofday(NULL, tz);
09:39:46 <elliott> maybe I should just fake the timezone too
09:39:52 <elliott> I guess it might have weird effects otherwise
09:39:55 <ais523> elliott: this is why I prefer to control at the syscall level, not the library level
09:40:04 <elliott> ais523: yes, me too -- got a portable way? :P
09:40:30 <ais523> I suppose you could, umm, scrape the source of strace, which is reasonably portable by special-casing a bunch of OSes and archs
09:40:37 <ais523> but syscalls are inherently nonportable, aren't they?
09:40:43 <elliott> ais523: wow, gnu hello is best practices? its ./configure checks whether about a hundred libc functions are macros are not
09:40:58 <elliott> checking whether build environment is sane... yes
09:40:59 <elliott> oh, you're _very_ mistaken,a utoconf
09:41:12 <elliott> make[2]: Warning: File `Makefile' has modification time 1320399594 s in the future
09:41:15 <ais523> elliott: it only runs a few specific sanity checks
09:41:20 <elliott> make[2]: warning: Clock skew detected. Your build may be incomplete.
09:41:36 <elliott> [elliott@dinky hello-2.7]$ src/hello
09:41:41 <elliott> tl;dr it works perfectly fine, it just warns a lot
09:42:04 <ais523> elliott: can you shout at this spambot for me? it's recommending the use of Lucinda Handwriting or Papyrus over Arial or Calibri for Christmas invitations
09:42:14 <ais523> it has no taste in fonts :(
09:42:18 <elliott> ais523: lucinda handwriting is a beautiful font, marred only by the fact that it doesn't exist
09:42:35 <ais523> elliott: I didn't check to see if the typo was in the original, but probably
09:42:37 <elliott> also, I would _probably_ use papyrus before arial. but really, everyone loves papyrus
09:42:37 <olsner> try the -m flag to tar when you unpack the sources - I think that will avoid weird timestamps
09:42:47 <elliott> olsner: no, the problem is that the timestamps are in 2011
09:42:56 <elliott> this tarball comes from the future, is the problem
09:43:16 <olsner> elliott: by weird I mean timestamps from 2011
09:43:30 <elliott> don't extract file modified time
09:43:30 <olsner> -m should set them all to the current time
09:43:35 <elliott> right, I can do it from inside the jail
09:43:45 <elliott> tar: hello-2.7/gnulib/m4/locale-ja.m4: time stamp 2011-03-22 17:56:57 is 1300816617 s in the future
09:43:52 <elliott> WHY DOES ALL GNU SOFTWARE HAVE TO TELL ME I'M IN THE PAST JEEZ
09:43:54 <fizzie> I see you are partying like it's 1970.
09:43:57 <ais523> --HANG hang for SECS seconds (default 3600)
09:44:22 <ais523> elliott: because systems are not designed to run with a clock jammed at the epoch
09:44:37 <ais523> I'm trying to work out what the option's for, also why it's in allcaps
09:44:45 <elliott> I suspect it's a typo for --hang SECS
09:44:50 <elliott> <ais523> elliott: because systems are not designed to run with a clock jammed at the epoch
09:44:54 <ais523> err, that would make more sense, yes
09:44:55 <elliott> I'm sure there's /some/ legacy system...
09:45:02 <ais523> elliott: it probably has the wrong epoch
09:45:31 <elliott> why are you linking me this
09:46:04 <elliott> wow, thinks break more if the epoch is right
09:46:21 * elliott configures it, then backdates them
09:46:38 <elliott> ais523: btw, = ERROR: stat proc/pid/fd: Permission denied
09:46:47 <elliott> ais523: I've no idea why, I've looked over the code repeatedly
09:46:56 <elliott> ais523: my only changes were to change your personal bind mounts into ones for my ~
09:47:28 <ais523> oh no, not that error again
09:47:41 <ais523> elliott: it's something to do with security on root-executed programs
09:48:01 <elliott> note: it was "sudo ./weboflies true"; true is 64-bit, but I tried it on Web of Lies itself and it still failed, so I suspect it's a generic problem
09:48:03 <ais523> sometimes just the standard protections on suid stuff
09:48:19 <ais523> yep, but it drops permissions
09:48:19 <elliott> make[2]: gnulib/m4/wchar_h.m4: Timestamp out of range; substituting 1970-01-01 01:00:00
09:48:28 <elliott> ais523: so, how do you fix it?
09:48:58 <olsner> flies that spread deadly timestamp-related diseases
09:48:59 <elliott> olsner: gregor already topped it with "web o' flies"
09:49:02 -!- GreaseMonkey has quit (Quit: The Other Game).
09:49:12 <olsner> web o' flies is better yes
09:49:25 <ais523> elliott: hey, that was an obvious thing to do
09:49:46 <ais523> before the name was public
09:49:52 <elliott> gregor doesn't have that problem; he doesn't have a brain
09:50:15 <elliott> ais523: btw, you use clone(). wouldn't unshare() do?
09:50:20 <ais523> elliott: as for that bug, removing the call to drop permissions from the main process would fix it, but I don't feel comfortable running a bunch of stuff as root
09:50:29 <ais523> elliott: I suppose so; this was invented before unshare became commonly available
09:50:38 <elliott> ais523: wait, how old is this program?
09:50:38 <ais523> and I don't see why you wouldn't use clone rather than unshare
09:50:46 <ais523> not that old, but I have an old OS
09:51:06 <ais523> that only very slightly postdates unshare
09:51:16 <ais523> so it's still it bit experimental in the kernel source I was reading
09:51:34 <elliott> so, umm, how can I get the flies working without losing the permissions drop? modifying crap in /proc?
09:52:31 <ais523> possibly, one of the settings there must be different
09:52:44 <ais523> either that, or let me try to figure out what the offending line is and why it's failing
09:52:51 <elliott> ais523: I know what the line is
09:53:11 <elliott> char procname[] = "/proc/65536/fd/4294967295";
09:53:11 <elliott> sprintf(procname, "/proc/%d/fd/%d", ptpid,
09:53:11 <elliott> (int32_t)ar0.ebx); /* cast for safety */
09:53:11 <elliott> if (stat(procname, &fdstats) < 0) {
09:53:25 <elliott> ais523: and the error means that a directory prefix of the statted filename isn't accessible, permissions-wise
09:53:34 <elliott> ais523: aha, let me guess why
09:53:36 <ais523> yep, it must be /proc/pid/fd
09:53:40 <elliott> ais523: the process id involved is owned by root
09:53:42 <elliott> because web of lies runs as root
09:53:51 <ais523> elliott: actually, I think it's because it was previously owned by root
09:53:54 <ais523> but yes, much the right idea
09:53:55 <elliott> so an unprivileged user can't look at it
09:54:04 <elliott> I take it you can't drop privileges before cloning?
09:54:06 <ais523> but that happened to me too, and I thought I fixed it
09:54:15 <ais523> not before the first clone call, which creates fakeinit
09:54:25 <ais523> because root perms are needed to do things like unshare mount namespaces
09:55:00 <ais523> however, it drops perms before forking the actual program under test
09:55:19 <ais523> elliott: idea: does your system have a user numbered 65534?
09:55:27 <ais523> it could be that the user it drops permissions /to/ doesn't exist
09:55:40 <elliott> root:x:0:0:root:/root:/bin/bash
09:55:40 <elliott> bin:x:1:1:bin:/bin:/bin/false
09:55:40 <elliott> daemon:x:2:2:daemon:/sbin:/bin/false
09:55:40 <elliott> mail:x:8:12:mail:/var/spool/mail:/bin/false
09:55:40 <elliott> ftp:x:14:11:ftp:/srv/ftp:/bin/false
09:55:40 <elliott> http:x:33:33:http:/srv/http:/bin/false
09:55:42 <elliott> nobody:x:99:99:nobody:/:/bin/false
09:55:44 <elliott> dbus:x:81:81:System message bus:/:/bin/false
09:55:46 <elliott> elliott:x:1000:100:Elliott Hird,,,:/home/elliott:/bin/bash
09:55:48 <elliott> avahi:x:84:84:avahi:/:/bin/false
09:55:50 <elliott> usbmux:x:140:140:usbmux user:/:/sbin/nologin
09:55:52 <elliott> ais523: no, but your code comments implied to me that it shouldn't matter
09:56:00 <ais523> I don't think it should
09:56:00 <elliott> (that's the entire contents of my /etc/apsswd, btw; surprisingly short)
09:56:04 <ais523> but I'm not entirely certain
09:56:19 <ais523> try setting WOLUSER_UID and WOLUSER_GID both to 99
09:56:19 <elliott> ais523: want me to create one?
09:56:21 <ais523> and see if it works then
09:56:34 <ais523> if not, it's probably not that
09:56:59 <ais523> (/etc/passwd inside the chroot makes that user exist; but ofc the system as a whole wouldn't care about that version of /etc/passwd, I just don't get why it would care at all)
09:57:12 <ais523> I'm not sure whether to say "good" or "bad"
09:57:21 <ais523> I want to find the problem, but I'm glad that doesn't fix it
09:57:39 <elliott> ais523: I could run weboflies under gd... what am I saying, of course I can't
09:57:49 <ais523> you can try, it's hilarious
09:57:55 <ais523> but no, probably a bad idea
09:58:18 <elliott> [elliott@dinky weboflies]$ sudo gdb ./weboflies
09:58:18 <elliott> sudo: gdb: command not found
09:58:28 <elliott> new machines always surprise me for at least two months after I set them up
09:58:37 <elliott> like, how have I not realised I don't have gdb before now?
09:58:45 <ais523> can you run it as a regular user?
09:58:57 <elliott> nope, I just haven't installed gdb yet!
09:59:17 <ais523> the second clone is definitely after dropping perms
09:59:47 <ais523> it might be worth looking at the perms in question yourself; stick a getchar() or something in just after the error message so that the processes stick around long enough to look at them
10:00:05 <elliott> = ERROR: ptrace trace self: Operation not permitted
10:00:11 <elliott> then it dumps me at the web of lies console
10:00:14 <elliott> first time i've seen it, actually :)
10:00:17 <ais523> that seems about right
10:00:33 <elliott> <ais523> it might be worth looking at the perms in question yourself; stick a getchar() or something in just after the error message so that the processes stick around long enough to look at them
10:00:40 <elliott> ais523: can I printf at that point in the code?
10:00:44 <elliott> it would be useful to see the pid
10:00:50 <elliott> I suppose I could just ps, but
10:00:54 <ais523> may be better to fprintf to stderr
10:00:56 <elliott> ais523: aaugh, I can't escape the gdb :)
10:01:06 <ais523> elliott: try double-tapping control-C
10:01:14 <ais523> and if that fails, try control-\
10:02:20 -!- elliott has quit (Read error: Connection reset by peer).
10:02:20 -!- elliott_ has joined.
10:02:38 <elliott_> and got a kernel panic for trying to kill init...
10:02:39 <ais523> oh no, you didn't use sigkill, did you?
10:02:51 <elliott_> no, I literally just "sudo killall gdb"
10:03:00 <elliott_> how... how is that even possible? it's not even the /real/ pid 1!
10:03:51 <ais523> (note that a kill -9 on weboflies itself is nearly always a bad idea)
10:04:07 <ais523> elliott_: adding a printf and getchar statement to the /proc/pid/fd check in icotl
10:05:30 <elliott_> [elliott@dinky weboflies]$ sudo ./weboflies true
10:05:31 <elliott_> = ERROR: stat proc/pid/fd: Permission denied
10:05:46 <elliott_> [elliott@dinky weboflies]$ ls -l /proc | grep 783
10:05:46 <elliott_> dr-xr-xr-x 8 65534 65534 0 Nov 4 10:04 783
10:06:04 <elliott_> [elliott@dinky weboflies]$ ls -l /proc/783/fd
10:06:04 <elliott_> ls: cannot open directory /proc/783/fd: Permission denied
10:06:09 <elliott_> [elliott@dinky weboflies]$ ls -ld /proc/783/fd
10:06:09 <elliott_> dr-x------ 2 root root 0 Nov 4 10:04 /proc/783/fd
10:06:18 <elliott_> ais523: so, the permissions on the process itself change properly, but not the fds
10:06:21 <fizzie> I keep grouping that as "webo-flies".
10:06:23 <elliott_> is this some effective/real uid problem?
10:06:40 <ais523> elliott_: all four UIDs are set to the same value, so I don't think so
10:06:57 <elliott_> ais523: well, the order could matter, for changing the permissions on /proc
10:07:04 <ais523> why don't you check the ownership on 781 and 783?
10:07:20 <ais523> the order is "simultaneously", because I'm using setresuid
10:07:33 <ais523> which is designed for avoiding race conditions in changing UIDs simultaneously
10:07:35 <elliott_> [elliott@dinky weboflies]$ ls -ld /proc/781{,/fd}
10:07:35 <elliott_> dr-xr-xr-x 8 65534 65534 0 Nov 4 10:04 /proc/781
10:07:35 <elliott_> dr-x------ 2 root root 0 Nov 4 10:04 /proc/781/fd
10:07:35 <elliott_> [elliott@dinky weboflies]$ ls -ld /proc/782{,/fd}
10:07:35 <elliott_> dr-xr-xr-x 8 65534 65534 0 Nov 4 10:04 /proc/782
10:07:35 <elliott_> dr-x------ 2 root root 0 Nov 4 10:04 /proc/782/fd
10:08:04 <ais523> perhaps your kernel just doesn't like looking at even your own fds?
10:08:14 <ais523> check an ordinary elliott-owned process, like your shell or something
10:08:19 <elliott_> [elliott@dinky weboflies]$ ls /proc/self/fd
10:08:27 <elliott_> [elliott@dinky weboflies]$ ls -ld /proc/self{,/fd}
10:08:27 <elliott_> lrwxrwxrwx 1 root root 64 Nov 4 10:00 /proc/self -> 834
10:08:27 <elliott_> dr-x------ 2 elliott users 0 Nov 4 10:07 /proc/self/fd
10:08:32 <elliott_> wow, how is that the other way around?
10:08:48 <ais523> and symlinks don't have useful perms
10:08:50 <elliott_> [elliott@dinky weboflies]$ ls -ldH /proc/self{,/fd}
10:08:51 <elliott_> dr-xr-xr-x 8 elliott users 0 Nov 4 10:08 /proc/self
10:08:51 <elliott_> dr-x------ 2 elliott users 0 Nov 4 10:08 /proc/self/fd
10:08:56 <elliott_> ais523: I was thinking of the owner
10:08:57 * Sgeo|web is undecided whether to remove Calibre from his Windows system out of .. protest?
10:09:07 <Sgeo|web> Well, that wouldn't actually do anything other than inconvience me
10:09:12 <elliott_> Sgeo|web: how about out of: "I don't want to get my system compromised"
10:09:24 <elliott_> s/that wouldn't/I'm foolish enough to believe that wouldn't/
10:09:28 <ais523> elliott_: how is a suid executable a security hole on Windows?
10:09:37 <elliott_> ais523: you trust that guy to write /any/ software?
10:09:44 <ais523> aha, I see what you mean
10:09:50 <elliott_> ais523: I'm sure Sgeo|web's user has quite sufficient permissions to destroy lots of files he cares about
10:10:27 <ais523> the calibre bugs struck me as being from someone who didn't realise the possibility of malicious input
10:10:39 <ais523> which is typically reasonably safe on a single-user system that doesn't expose network access
10:11:04 <Sgeo|web> This person is assuming single-user
10:11:06 <elliott_> I think he just thinks that it's not serious, because he can't conceptualise a root hole as serious on a desktop machine
10:11:26 <elliott_> so he thinks people are just bullying him for no reason, and won't remove features because of it
10:11:31 <ais523> elliott_: well of course it can be (in case someone gets in from outside)
10:11:35 <elliott_> doesn't make it any less of a worrying attitude, ofc
10:11:36 <ais523> but it's not as serious as on a multi-user system
10:12:33 <elliott_> ais523: wow, chmod works in /proc
10:12:45 <elliott_> unfortunately, it just either fails because of not having permissions, or silently fails
10:12:55 <elliott_> I was thinking weboflies could chown its /proc/blah/fd before dropping perms :)
10:12:56 <Sgeo|web> Did you read the most recent things on the bug report? Someone stated that the exploit still works, and Kovid seems to be assuming it doesn't work just because his directory structure is different or something
10:13:07 <ais523> quite a lot of weird things end up silently failing on /proc, due to not being implemented for procfs
10:13:14 <elliott_> Sgeo|web: I don't really care what he thinks, because he's been wrong about fifty times so far
10:13:20 <CakeProphet> elliott_: oh wait that's not actually a thing? shit...
10:13:29 <Sgeo|web> elliott_: I'm saying this is probably the 51st
10:14:04 <elliott_> https://bugzilla.redhat.com/show_bug.cgi?id=651183 ;; wow, not even the FUSE people can write a safe suid binary
10:14:54 <fizzie> The only safe suid binary is the unlinked suid binary.
10:14:54 -!- Vorpal has joined.
10:15:09 <fizzie> (Old saying of the jungle.)
10:15:17 <ais523> "I'm glad you've restricted /dev to block devices only. Standby and I will update the exploit for this latest fix of yours."
10:15:21 <elliott_> fizzie: Don't say that -- I gotta write one. :/
10:15:37 <ais523> what would happen if you did chmod u+s true?
10:15:39 <elliott_> Thankfully it should just set UID + chroot.
10:15:55 <elliott_> ais523: exploits would become ten times more fun
10:16:03 <elliott_> hmm, distros should do that, it would be entertaining
10:16:10 <elliott_> just setuid a bunch of really innocuous binaries
10:16:14 <Sgeo|web> Oh, I misunderstood what was said, n/m my comment about Kovid's thoughts
10:16:19 <ais523> I'd be surprised if true had exploits
10:16:19 <elliott_> can you find a hole in gnu echo? I wouldn't be surprised
10:16:29 <elliott_> ais523: it uses their internationalisation stuff
10:16:35 <elliott_> that could amount to quite a lot of code
10:16:40 <elliott_> ais523: for the help text, I think
10:16:41 <HackEgo> /bin/true: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
10:16:48 <ais523> elliott_: "true --help" doesn't print anything
10:16:56 <ais523> which is in keeping with the way true generally behaves
10:17:00 <fizzie> Usage: /bin/true [ignored command line arguments]
10:17:00 <fizzie> Exit with a status code indicating success.
10:17:06 <elliott_> [elliott@dinky weboflies]$ /bin/true --help
10:17:06 <elliott_> Usage: /bin/true [ignored command line arguments]
10:17:06 <elliott_> Exit with a status code indicating success.
10:17:06 <elliott_> --help display this help and exit
10:17:06 <elliott_> --version output version information and exit
10:17:08 <elliott_> NOTE: your shell may have its own version of true, which usually supersedes
10:17:10 <elliott_> the version described here. Please refer to your shell's documentation
10:17:12 <elliott_> for details about the options it supports.
10:17:14 <elliott_> Report true bugs to bug-coreutils@gnu.org
10:17:16 <elliott_> GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
10:17:18 <Vorpal> <ais523> what would happen if you did chmod u+s true? <-- well, true is not written to run as suid, so there might be security holes. My guess however is that for true it wouldn't actually do much. Not a lot you can do with that tool
10:17:18 <elliott_> General help using GNU software: <http://www.gnu.org/gethelp/>
10:17:20 <elliott_> For complete documentation, run: info coreutils 'true invocation'
10:17:22 <elliott_> I had to flood that because I couldn't believe how long it was
10:17:40 <fizzie> elliott_: "long", it doesn't even include a GPL copy.
10:17:59 <CakeProphet> "true isn't being true!" "okay... now it is"
10:18:01 <elliott_> http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/true.c
10:18:02 <Sgeo|web> Hasn't there been updates to true or something?
10:18:02 <ais523> heh, the info page mentions that doing something like "./true --version >&-" causes it to return false
10:18:12 <elliott_> bindtextdomain (PACKAGE, LOCALEDIR);
10:18:21 <elliott_> version_etc (stdout, PROGRAM_NAME, PACKAGE_NAME, Version, AUTHORS,
10:18:58 <elliott_> ais523: any ideas wrt weboflies?
10:19:17 <Vorpal> ugh. true should literally be int main(void) { return 0; }
10:19:20 <ais523> not really; on my system I can't read fakeinits fd's, but I can read those of the program under test
10:19:26 <Vorpal> well maybe EXIT_SUCCESS
10:19:31 <elliott_> "In this instance, the names of the object files would be chosen by automake; they would be false-true.o and true-true.o." --automake manual
10:19:36 <fizzie> Vorpal: They use the same code to generate both true and false.
10:19:58 <fizzie> #if EXIT_STATUS == EXIT_SUCCESS
10:19:58 <fizzie> # define PROGRAM_NAME "true"
10:19:58 <fizzie> # define PROGRAM_NAME "false"
10:20:09 <ais523> elliott_: one of C-INTERCAL's temporary files is called oil-oil.c for this reason
10:20:29 <fizzie> (EXIT_STATUS defaults to EXIT_SUCCESS; false.c just #defines that and #include "true.c".)
10:20:48 <Sgeo|web> Huh, what's with true-false.o and oil-oil.c?
10:21:03 <ais523> Copyright (C) 1999-2003, 2005, 2007-2011 Free Software Foundation, Inc.
10:21:16 <ais523> Sgeo|web: to allow for multiple files being generated from the same source file
10:21:54 <CakeProphet> ais523: 2004 and 2006 would have been prime years to steal rights to that code, apparently.
10:22:11 <ais523> oh right, .Po means dependencies, .po means internationalisation code
10:22:24 <ais523> CakeProphet: those are years in which is wasn't changed, I guess
10:22:30 <ais523> I'm more worried about all the years in which it was
10:24:46 <elliott_> ais523: what if I... disabled file permissions checks?
10:24:56 <lambdabot> <no location info>: parse error on input `,'
10:25:21 <ais523> !perl print (1..3, 5, 7..11)
10:25:34 <CakeProphet> egobot is apparently perlless for some reason.
10:25:40 <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:25:40 <Sgeo|web> https://bugs.launchpad.net/calibre/+bug/885027/comments/33 is this a joke or is a person who knows how to compile C code really this stupid?
10:25:44 <CakeProphet> which elliott totally forgot to delete (shhhh don't tell him)
10:25:48 <EgoBot> languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
10:25:58 <ais523> heh, why is perl in the eso list?
10:26:06 <ais523> `runperl print (1..3, 5, 7..11)
10:26:30 <Vorpal> ais523, obviously a reference to the Perl article on the wiki
10:26:32 <Sgeo|web> > concat [enumFromTo 1 3, [5], enumFromTo 7 11]
10:26:35 <fizzie> ais523: In 2009 they made it only call the local stuff when argc == 2; in 2008 they switched VERSION to Version (changed ~every app) and marked the description strings with N_ for translation; in 2007 they used a new emit_bug_reporting_address () helper instead of doing it manually, and changed GNU_PACKAGE to PACKAGE_NAME; in 2003 they changed the format of the AUTHORS macro.
10:26:56 <Sgeo|web> CakeProphet: I'm not an elegant Haskell writer
10:26:57 <fizzie> ais523: So it's mostly changes in the boilerplate that touch every app in there.
10:27:34 <Sgeo|web> > concat [[1..3], [5], [7..11]]
10:27:36 <lambdabot> forall a. (Enum a) => a -> a -> [a]
10:27:52 <elliott_> fizzie: ais523: in 2003, they fixed a minor bug in which the value "true" was expected to return was mistakenly calculated as 4
10:28:09 <ais523> returning true is the entire point of true
10:28:12 <ais523> and 4 is a false value
10:28:17 <elliott_> ais523: Well, it's only four off.
10:28:41 <elliott_> Sgeo|web: is this a joke or is a person who knows how to compile C code really this stupid?
10:28:46 <Vorpal> elliott_, how did that bug ever slip past them? After all it wouldn't actually have worked at all
10:29:19 <ais523> elliott_: I don't know, it hits the law of trolling and incompetence being indistinguishable past a certain point
10:29:29 * Sgeo|web is now under the impression that elliott_ was joking
10:29:32 <elliott_> ais523: the designers of true clearly followed the famous maxim to the highest degree: "A good value for k would be around 2, e.g., k = 1.9."
10:29:57 <ais523> does this maxim work regardless of what k means?
10:30:35 <elliott_> ais523: well, it didn't make any sense in context either, so I have to assume so
10:30:56 <elliott_> AFAICT, they needed to add about four words to the paper :)
10:31:10 <elliott_> I suppose "would be around 2, e.g., k = 2." was deemed too obvious
10:31:50 <Vorpal> elliott_, which paper is that from?
10:32:34 <ais523> elliott_: hmm, the top proggit comment on calibre is pretty interesting, it's about how the calibre dev doesn't seem to understand that he can depend on things that aren't installed in a distro by default
10:32:42 <ais523> because the whole point of a distro is resolving dependencies
10:32:53 <elliott_> ais523: I think that's stupid; it's fairly obvious what he meant
10:32:58 <elliott_> "I don't want to depend on /more/ things"
10:33:08 <elliott_> "installed by default on Gentoo" is being used to mean roughly "once you install a desktop"
10:33:13 <elliott_> in which case things like gtk will be there
10:33:14 <CakeProphet> XMLfuck would simply be an implementation of brainfuck using XML, allowing simple universal transport of brainfuck programs, without the need for complex encodings, as well as allowing it to be processed with a single XSLT to pretty-print or even execute the program.
10:33:21 <elliott_> something like pmount won't be, because gentoo doesn't dot his whole "infrastructure" thing :p
10:33:33 <elliott_> ...it's a very stupid point, but it's not quite as stupid as "I don't understand dependencies"
10:33:42 <elliott_> ais523: especially since his whole argument is that this is from the binary tarball version
10:33:46 <elliott_> and the distro packages replace them
10:33:51 <elliott_> so dependencies /aren't/ being handled
10:33:53 <CakeProphet> doesn't brainfuck itself allow simple universal transport of brainfuck programs? :P
10:34:05 <elliott_> ais523: the fact that he ships binaries of all his /other/ dependencies doesn't seem to have occured to him
10:34:19 <ais523> "binary tarball version"
10:34:24 <ais523> I think I've found TRWTF there
10:34:34 <elliott_> well, not to say it isn't in the source distro too
10:34:37 <ais523> shipping binaries should be the distro's responsibility, if it's done at all?
10:34:43 <elliott_> but he claims it only /matters/ for that because debian et al. replace it
10:34:54 <Sgeo|web> Hey, it's good for Linux From Scratch people... except they'd presumably use the source version
10:34:59 <elliott_> ais523: actually, I think he might not view pmount or whatever as a solution because he thinks people are complaining that he's not competent enough to write suid stuff
10:35:00 -!- hagb4rd has joined.
10:35:13 <elliott_> ais523: after all, he said he ~couldn't be trusted to modify pmount~ after someone suggested he use it
10:35:13 <ais523> elliott_: well, he isn't
10:35:29 <elliott_> but the point is that, why would that stop people complaining, from that warped point of view?
10:35:39 <Sgeo|web> Why would he need to modify pmount?
10:35:39 <ais523> and I don't think pmount would need modification, it was being suggested for that reason
10:35:42 <elliott_> AFAICT, he thinks they're complaining that he's shipping a suid binary and is untrustworthy
10:35:55 <elliott_> that suid binary being pmount wouldn't change that fact
10:36:00 <elliott_> Sgeo|web: ais523: exactly, it wouldn't
10:36:11 <elliott_> which is why it only makes sense if you figure out what his actual motivations behind saying that are
10:36:21 <elliott_> ...unless he really just has no idea how he would replace it with pmount :)
10:36:24 <elliott_> which is perfectly possible too
10:36:34 <elliott_> have I mentioned pmount is supposedly deprecated? layers!! so many layers!!
10:36:43 <Sgeo|web> Anyone want to tell him that it's not whether he's malicious or not that's in question?
10:37:01 <elliott_> you want to talk to him? be my guest
10:37:08 <elliott_> you may find the experience unpleasant
10:38:45 <Sgeo|web> I'm not comfortable saying "You wouldn't need to modify pmount" since I don't in fact know anything whatsoever about pmount or his use case
10:43:44 <elliott_> "That's a wierd mixture of types in that struct, I mean long and uint32, one of them has a fuzzy size (4 or 8 bytes, depending on the compiler), the other is clearly defined. Generally, I never ever use "long" as a type."
10:45:39 <ais523> long and uint32_t have different purposes, right?
10:45:48 <Vorpal> elliott_, is that from the suid fiasco thread?
10:45:51 <ais523> "long" just means "I need this to be at least 32 bits"
10:46:01 <Vorpal> elliott_, then from where?
10:46:11 <elliott_> ais523: context: this is somebody commenting on the virtualdub blog, so the context is both "gritty" hand-optimised C, and Windows
10:46:24 <elliott_> ais523: what I am learning: I am terrified of people who actually write C
10:46:28 <elliott_> (as opposed to being good C programmers)
10:46:39 <elliott_> I mean... they avoid long... because it has a "fuzzy" size...
10:46:39 <ais523> elliott_: if you aren't constantly terrified of C, you're doing things wrong
10:46:40 <Vorpal> are there good C programmers?
10:46:50 <elliott_> do they have a /concept/ of portability?
10:47:08 <elliott_> ais523: why do you think I avoid writing it?
10:47:10 <ais523> elliott_: I've tried to teach people C
10:47:21 <Vorpal> elliott_, the concept of portability in C is painful enough that most people ignore it when writing anything more advanced than a "hell world"
10:47:43 <elliott_> mcmap runs on, like, at least three platforms.
10:48:03 <Vorpal> elliott_, sunos with NEWS?
10:48:53 <ais523> Vorpal: I typically care about portability in C
10:48:57 <ais523> except on the Secret Project
10:49:04 <ais523> there's even a comment on the #define _GNU_SOURCE
10:49:15 <ais523> which shows clearly that I was thinking "hell, this is unportable enough anyway, may as well go all the way"
10:49:23 <Vorpal> elliott_, classical MacOS? NeXTSTEP?
10:49:27 <elliott_> http://www.reddit.com/r/programming/comments/lxfxb/use_haskell_instead_of_c_or_fortran_for_high/ <-- challenge: find a good comment here
10:49:40 <elliott_> generalised challenge: find a good comment on anything (a) to do with haskell, (b) in /r/programming
10:49:41 <Vorpal> ais523, portability to other POSIX or to all C platforms
10:50:23 <Vorpal> I mean, it isn't really painful to be portable to other POSIX.
10:50:47 <elliott_> it's easy to be portable to posix + windows
10:51:08 <fizzie> ais523: But is "long" closer to "int_least32_t" or "int_fast32_t"? I would guess the latter, since the former is explicitly defined so that there can be no smaller types at least 32 bits wide, while the latter is just very vaguely "fast".
10:51:10 <ais523> Vorpal: normally I decide what level of portability I want based on what I'm doing
10:51:12 <Vorpal> elliott_, as long as you use a toolkit for your GUI needs that support both yes
10:51:30 <Vorpal> elliott_, well if one exists obviously
10:51:37 <Vorpal> elliott_, and most programs on windows have GUIs
10:51:41 <ais523> if I'm doing something that can reasonably be written in portable C89/C99, I do
10:51:44 <Vorpal> but now throw in classical MacOS in that. Have fun.
10:52:29 <elliott_> ooh, I have an idea for an increasing clock that wouldn't be prone to scheduler issues
10:52:34 <CakeProphet> elliott_: found a good comment: "C is simple until you try to do anything nontrivial in it."
10:52:36 <elliott_> why not just use thread-local storage for the counter? :)
10:53:07 <Vorpal> elliott_, probably will work if make split the job between threads in a deterministic way I guess?
10:53:24 <elliott_> who cares if it doesn't? i doubt it checks for anything other than clock going backwards
10:53:37 <elliott_> pretty sure -j uses fork() btw
10:53:44 <Sgeo|web> " imperative programs correspond to certain forms of adversarial games."
10:55:16 <ais523> I hate that terminology, and think it's rather misleading
10:55:35 <ais523> here, "adversarial" means "has more than one player", not "players are trying to prevent each other winning"
10:55:36 <CakeProphet> elliott_: this might be a good comment: http://www.reddit.com/r/programming/comments/lxfxb/use_haskell_instead_of_c_or_fortran_for_high/c2wzf5b
10:56:30 <elliott_> CakeProphet: that's a totally offtopic flamewar :p
10:56:51 <CakeProphet> elliott_: YOUR CRITERIA SAID TO FIND A GOOD TOPIC THERE
10:57:05 <Sgeo|web> http://www.reddit.com/r/programming/comments/lxfxb/use_haskell_instead_of_c_or_fortran_for_high/c2wehnw is there a good response to this?
10:57:20 <elliott_> ais523: software hate of the day: gnu make has no way to turn off clock skew warnings. like, at all.
10:57:41 <CakeProphet> elliott_: they obviously anticipate someone trying to hack time.
10:57:47 <elliott_> /however/, I think I can avoid it
10:58:05 <Vorpal> elliott_, that is because they serve a purpose. If there is clock skew things are likely to break
10:58:26 <elliott_> Vorpal: yeah, keep whining all you want, but I ran bash under that jail and absolutely everything works fine
10:58:36 <elliott_> configure doesn't complain at all
10:58:37 <Vorpal> elliott_, anyway I spotted an issue with the TLS solution.
10:58:40 * CakeProphet writes a command line utility in which every line of code has an attached option that conditionally turns it off.
10:58:42 <elliott_> make works fine and just prints a few stupid warnings
10:59:38 <elliott_> now to see if the fine people in #make will help me figure out how to make make work with files made before make was made
10:59:40 <Vorpal> elliott_, what if job a builds foo.c from foo.y, then another job ends up building foo.o from foo.c later on. Will foo.o always have a newer timestamp toan foo.c?
11:00:08 <elliott_> Vorpal: it will have the same timestamp. other things that can cause this: foo.o being built in the same second as foo.c.
11:00:12 <elliott_> hardly unlikely. computers are fast.
11:00:29 <CakeProphet> also supply a string argument to the option substitutes that line of code with the given code. so then when someone reports a bug I can just say, "Oh, you're just using the full capabilities of the command line options. see the man page."
11:00:30 <Vorpal> elliott_, hm I thought there were sub-second timestamps these days, oh well
11:00:40 <elliott_> Vorpal: gnu make relies on a system with sub-second timestamps?
11:00:44 <Vorpal> Access: 2011-11-03 13:45:55.172384014 +0100
11:00:44 <Vorpal> Modify: 2011-11-03 13:45:47.960263808 +0100
11:00:44 <Vorpal> Change: 2011-11-03 13:45:47.964263870 +0100
11:01:00 -!- ais523 has quit (Remote host closed the connection).
11:01:10 <elliott_> /* FAT filesystems round time to the nearest even second!
11:01:11 <elliott_> Allow for any file (NTFS or FAT) to perhaps suffer from this
11:01:35 <elliott_> file->low_resolution_time = 1;
11:01:35 <elliott_> OH COME ON, just assume everything is low-resolution
11:01:54 <elliott_> I don't need any update logic to be done
11:02:13 <Deewiant> That's 2-second resolution, which seems unusually low
11:02:26 <Vorpal> elliott_, I remember that causing an infinite loop with that once
11:02:56 <Vorpal> elliott_, anyway if same-second is okay then unpacking source @0 and building @1 should work okay, no?
11:03:05 <Deewiant> elliott_: I meant that assuming that in all cases might not be entirely sane
11:03:11 <elliott_> Vorpal: yes, but 1 is an ugly timestamp
11:03:18 <elliott_> Deewiant: Yeah but it would help here :-(
11:03:32 <elliott_> Vorpal: and make sets timestamps <1970 to the epoch
11:04:32 <HackEgo> 2008-09-07.txt:20:36:00: <AnMaster> I mean, Feather makes me go "wow"
11:04:37 <HackEgo> 2010-12-13.txt:19:53:53: <elliott> ais523: Feather revision control system: every change is applied retroactively, so there are no changes to track. Problem solved!
11:04:45 <Vorpal> elliott_, I don't see the issue with @1 not being all zeros. Only someone with some weird sort of OCD or something would have an issue with that...
11:05:02 <HackEgo> 2011-07-30.txt:07:07:32: <ais523> Feather and @ are fundamentally incompatible, as far as I can tell
11:05:07 <Vorpal> CakeProphet, doesn't it work in /msg?
11:05:10 <HackEgo> 2009-10-07.txt:15:50:42: <ais523> hmm... Feather's the only language I know in which you have to worry about portability within a program
11:05:12 <Vorpal> because this spam is annoying
11:05:58 <fizzie> Deewiant: Seems that they wanted to squeeze the timestamp into two bytes, and sadly 86400 > 65536.
11:06:10 <elliott_> Vorpal: the epoch is a far nicer timestamp than @1
11:06:15 <elliott_> changing it later will require a rebuild of all packagse
11:06:19 <elliott_> patching make is the nicset solution
11:06:36 <elliott_> Vorpal: paranoid schizophrenia
11:06:59 <elliott_> sorry, this is the "assign mental illnesses based on how people waste time on their computers" game, right?
11:07:27 <Deewiant> fizzie: They could have made it have 2-second granularity before noon and 1-second after
11:08:01 <fizzie> Deewiant: Indeed, that would make the most sense ever in the history of things that make sense.
11:08:28 <elliott_> if (! (s <= FILE_TIMESTAMP_S (ORDINARY_MTIME_MAX)
11:08:28 <elliott_> && product <= ts && ts <= ORDINARY_MTIME_MAX))
11:08:28 <elliott_> char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1];
11:08:28 <elliott_> ts = s <= OLD_MTIME ? ORDINARY_MTIME_MIN : ORDINARY_MTIME_MAX;
11:08:29 <elliott_> file_timestamp_sprintf (buf, ts);
11:08:30 <elliott_> error (NILF, _("%s: Timestamp out of range; substituting %s"),
11:08:32 <elliott_> fname ? fname : _("Current time"), buf);
11:08:38 <elliott_> fizzie: Time goes slower before lunch.
11:09:46 <elliott_> ./make.h:#define FILE_TIMESTAMP uintmax_t
11:09:54 <elliott_> how hard can it be to handle 1969?
11:11:08 <elliott_> tell me not to mail the gmake lists about this as a bug
11:11:18 <elliott_> "hi, i have some files on a legacy system. ..."
11:11:31 <elliott_> I think touch(1) should require root perms
11:11:40 <elliott_> just to stop people accidentally touching a really ancient file
11:12:07 <elliott_> the last unmodified file from the original unix development
11:12:22 <elliott_> someone accidentally opens it in their editor
11:12:36 <elliott_> fuck! you just destroyed history! way to go. hope that autosave was WORTH it, jackass.
11:12:36 <Vorpal> why would the editor do that
11:12:47 <elliott_> Vorpal: why do computers do half the things they do.
11:12:55 <fizzie> MATLAB epoch (though it splits dates and times, and counts days from the epoch in the 'datenum') is 1-Jan-0000.
11:13:03 <Vorpal> elliott_, well, for the same reason as they do the other half
11:13:18 <elliott_> Vorpal: right. because someone fucked up.
11:13:29 <elliott_> fizzie: what do matlab archaeologists do
11:13:54 <Vorpal> elliott_, I was about to say "because that is what that specific pattern of electrical signals input to the device in question will cause the transistors in it to behave" but sure, your answer works too
11:14:12 <elliott_> Vorpal: yes. electricity is god's fuck-up
11:14:23 <elliott_> wait no, god's fuck-up is the whole universe.
11:14:30 <fizzie> elliott_: All the numbers are doubles, so you can count up to around -2^53 days backwards too.
11:14:36 <elliott_> that's one big fucking fuck-up.
11:14:53 <fizzie> Not sure if the conversion functions handle that, though.
11:14:58 <elliott_> fizzie: It even simulates time getting wobblier the further you get to the big bang!
11:15:14 <Vorpal> elliott_, but why does it do that for the future too?
11:15:28 <elliott_> Vorpal: Maaan, you haven't heard about the bad news?
11:15:31 <fizzie> >> datestr(-1, 'yyyy-mm-dd')
11:15:46 <fizzie> I suppose the 'yyyy' format doesn't quite work for that.
11:15:56 <elliott_> #define PARSE_FILE_SEQ(_s,_t,_c,_p,_f) \
11:15:56 <elliott_> (_t *)parse_file_seq ((_s),sizeof (_t),(_c),(_p),(_f))
11:16:17 <Vorpal> elliott_, strange macro indeed
11:16:27 <elliott_> Deewiant: At least put the type parameter /before/ the value!
11:19:08 <elliott_> Deewiant: Can Solaris make handle timestamps from 1969
11:19:26 <elliott_> Deewiant: If yes, I'm gonna build Kitten on top of Solaris
11:19:36 <fizzie> http://en.wikipedia.org/wiki/Epoch_%28reference_date%29#Notable_epoch_dates_in_computing <- that's a lot of epochs. (Also MATLAB is winning.)
11:19:56 <Deewiant> elliott_: Give me a one-liner that checks
11:20:21 <elliott_> Deewiant: echo 'bar: foo ; echo yay' >Makefile; touch -d @-1 foo; make bar
11:20:27 <elliott_> (May require better touch(1) than Solaris has to offer)
11:21:09 <fizzie> Deewiant: Does it have a "gtouch"?-)
11:21:14 <elliott_> Deewiant: touch 31-12-1969T23:59:59Z or something.
11:22:00 <Deewiant> usage: touch [-acm] [-r ref_file] file...
11:22:00 <Deewiant> touch [-acm] [-t [[CC]YY]MMDDhhmm[.SS]] file...
11:22:00 <Deewiant> touch [-acm] [-d YYYY-MM-DDThh:mm:SS[.frac][Z]] file...
11:22:00 <Deewiant> touch [-acm] [-d YYYY-MM-DDThh:mm:SS[,frac][Z]] file...
11:22:00 <Deewiant> touch [-acm] [MMDDhhmm[yy]] file...
11:22:26 <elliott_> Deewiant: I'm sure you can write something in that format
11:22:26 <Deewiant> % echo 'bar: foo ; echo yay' >Makefile; touch -d 1969-12-31T23:59:59Z foo; make bar
11:22:39 <Deewiant> elliott_: Your date string was wrong-endian
11:23:00 <Deewiant> (I didn't notice until after I pasted the usage)
11:23:00 <elliott_> fizzie: That Cocoa epoch worries me.
11:23:10 <fizzie> Taking the time part into account too, it was nicely middle-endian.
11:24:13 <Vorpal> elliott_, fun fact: A /lot/ of stuff requires gmake to build.
11:24:22 <Vorpal> I noticed that when using freebsd
11:24:30 <elliott_> Let's all talk about how Vorpal is actually seriously taking me serious.
11:24:43 <elliott_> Yes Vorpal, I am basing Kitten on OpenSolaris because it lets me use a certain timestamp without warnings and without a clever hack.
11:24:45 <Vorpal> elliott_, no I'm not thinking you will use solaris
11:25:02 <Vorpal> elliott_, but I did think you might end up using a bsd make or other non-gnu make
11:25:09 <elliott_> And actually likely to start existing now that I have the complete design down
11:25:26 <elliott_> Deewiant: It, uh... distribu...tises? What is the verb that a distribution does.
11:26:41 <elliott_> Deewiant: It's based on a purely functional, source-model, transparent-binary-distribution package, configuration /and service/ manager!! Transparent multilib!! FREE PONY
11:26:43 <Deewiant> I think that'd make it a disturbance
11:27:44 <fizzie> Deewiant: Maybe it distempers instead.
11:28:13 <fizzie> "What's your favourite Linux distemp?"
11:28:20 <elliott_> Deewiant: It's the best distemperance.
11:28:45 <CakeProphet> Windows is my favorite linux disturbi-butt-ion
11:28:47 <elliott_> Have I mentioned: Generic support for subsuming other package managers???
11:29:28 <CakeProphet> elliott_: is it successfully compatible with all existing systems while allow their software to cooperate seamlessly?
11:29:43 <elliott_> It's actually a cardboard box.
11:29:59 <elliott_> The kitten makes you forget there was a Linux distro, and also not care because aww, kittens.
11:31:07 <fizzie> "Kitten - the robot's choice."
11:31:07 <CakeProphet> http://cutekittehs.com/files/2011/08/cute-adorable-kittens-0044.jpg obligatory
11:31:24 <Vorpal> CakeProphet, turn on that blender now!
11:31:40 <Vorpal> they should do that on "will it blend"
11:33:11 <elliott_> Vorpal: Sorry but you have no soul.
11:33:18 <elliott_> Kitty. Kitty. Kitten I will save you.
11:33:42 <elliott_> fizzie: OMG please please please write me some (robotfinds)Kitten ads.
11:34:11 <CakeProphet> for drinks! for parties! go pitapat! go flip-flap!
11:35:23 <Vorpal> <elliott_> Vorpal: Sorry but you have no soul. <-- sssh! keep quiet about that!
11:37:51 <Deewiant> It's at least: "bizarre ssh host management" / "super ssh" / "Simplified SGML for Serial Headers"
11:38:07 <elliott_> runCurses :: Curses a -> IO aSource
11:38:07 <elliott_> Put the terminal in graphical mode, including enabling special keys, colors, and mouse events (if supported).
11:38:07 <elliott_> After the Curses block has finished running, the terminal is reset to text mode.
11:38:17 <elliott_> Thanks for putting this at the top of the Haddock documentation, I can discount your ibrary now!
11:38:53 -!- Phantom_Hoover has joined.
11:38:55 <elliott_> Deewiant: Yeah, the part where it wants me to write my entire IO code in an opaque Curses monad
11:39:38 <elliott_> Deewiant: Because it's literally IO
11:39:42 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
11:39:47 <elliott_> Deewiant: And yes, it is; exercise: implement fixIO
11:39:54 <elliott_> Deewiant: And yes, it is; exercise: implement forkIO
11:40:01 <elliott_> Deewiant: Actually let's make it easier
11:40:01 <Vorpal> <Phantom_Hoover> There was a new Discworld book????? <-- which one?
11:40:40 <elliott_> Deewiant: (This is "easy" in the sense of "still actually impossible")
11:41:04 <Phantom_Hoover> I only noticed through Pratchett's Facebook page, three days after it was released.
11:41:13 <elliott_> OK wow hscurses why would you actually reuse ncurses' naming scheme.
11:41:15 <elliott_> That's... that's not a good idea.
11:41:34 <elliott_> Even if it does use under_scores
11:41:54 <elliott_> Actually wow these underscores really hurt me inside
11:42:33 <elliott_> At least it's got some nice pure stuff?
11:42:53 <Deewiant> elliott_: Just liftIO :: Curses a -> IO a and you don't need to use runCurses?
11:43:08 <elliott_> Deewiant: I don't think you understand what liftIO is
11:43:23 <lambdabot> It could refer to either `Control.Monad.Error.liftIO', imported from Control.Monad.Error
11:43:23 <lambdabot> or `Control.Monad.Logic.liftIO', imported from Control.Monad.Logic
11:43:50 <Deewiant> But yeah, liftIO is the other way around, duh
11:43:52 <Vorpal> Phantom_Hoover, well I ordered the book now.
11:44:21 <elliott_> OItfil :: (oIdanoM m) => m a -> IO a
11:44:42 <elliott_> http://hackage.haskell.org/packages/archive/vty/4.7.0.6/doc/html/Graphics-Vty-Attributes.html#t:MaybeDefault
11:44:56 <elliott_> Why does nobody have any taste
11:45:37 <elliott_> http://hackage.haskell.org/package/vty-ui
11:46:03 <elliott_> I don't want any of those widgets
11:46:41 <Deewiant> hscurses is the direct binding, makes sense that it reuses the names :-P
11:48:11 <elliott_> Deewiant: The world needs more "direct bindings except we use better names"
11:48:30 <Deewiant> The problem with that is difficulty of translation
11:48:34 <Deewiant> But sure, it could provide both
11:48:41 <Deewiant> It has the helper thing, don't know if that's any good.
11:49:42 <elliott_> I'm just using vty because it has decent-looking docs and is well-maintained :P
11:49:47 -!- boily has joined.
11:52:15 -!- derdon has joined.
11:55:27 -!- Phantom__Hoover has joined.
11:56:18 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
12:00:54 <CakeProphet> elliott_: there is someone in #django named Kittens.
12:01:07 <elliott_> I doubt they are actually kittens.
12:07:30 -!- ais523 has joined.
12:08:07 -!- CakeProphet has changed nick to DjangoProphet.
12:09:14 <elliott_> DjangoProphet: He said DjagoProphet.
12:09:28 -!- DjangoProphet has changed nick to DjagoProphet.
12:10:14 <fizzie> Crafty advertising tool, only help people if they agree to change their names to be based on your product.
12:10:50 <elliott_> "The main object. At most one should be created. An alternative is to use unsafePerformIO to automatically create a singleton Vty instance when required."
12:10:55 <elliott_> Why do you DO this to me, guys.
12:11:22 <elliott_> Deewiant: Uuuurgh: terminal_handle :: (Applicative m, MonadIO m) => m TerminalHandle
12:12:12 <fizzie> DjagoProphet: Possibly the IRC client question is another part on their "will we help or not" checklist. If you were using, say, a client written in PHP, they'd be all "no wai".
12:13:13 <ais523> you know what? 33554432 is an awesome power of 2
12:14:14 <fizzie> 33554432 bytes should be enough for everyone.
12:14:24 <elliott_> but it doesn't /look/ like a power of two
12:14:30 <ais523> that's why it's awesome
12:14:37 <Deewiant> elliott_: The Applicative, or what? :-P
12:14:39 <fizzie> It's an odd power, though, those are all a bit... odd.
12:15:08 <elliott_> Deewiant: (a) Literally isomorphic to IO TerminalHandle (OK, it can actually not be isomorphic, if you have a completely broken monad, in which case it'll probably do something much less sensible than a single lift) (b) Would it kill you to use liftM/return/ap when you're writing library code
12:15:22 <elliott_> fizzie: We should only use meta-powers of two.
12:15:54 <Deewiant> elliott_: I'd prefer it if everything used MonadIO instead of IO: no more lifting
12:16:15 <elliott_> Deewiant: Encouraging monad transformer stacks on top of IO is a very bad idea
12:16:26 <fizzie> PowerTower is the best function.
12:16:29 <DjagoProphet> elliott_: how does a number look like a power of 2?
12:16:35 <elliott_> Not only are they a code smell, they're just plain a pain in the arse to use
12:16:40 <elliott_> Yes, I know of monad-control; it's hideous
12:17:18 <DjagoProphet> fizzie: I agree Tower of Power is an excellent musical group. http://www.youtube.com/watch?v=7LjrCV4Gnxw
12:17:58 <Deewiant> elliott_: How should one avoid them; in general most programs are internally largely StateT s IO
12:18:12 <elliott_> Deewiant: s/most programs/most programs written in an imperative language/
12:18:28 <Deewiant> elliott_: No, most programs :-P
12:18:32 * ais523 vaguely wonders what the correct way to write "a list of 100 1s" is in OCaml
12:18:34 <Deewiant> Most programs do I/O internally
12:18:50 <ais523> I could write a helper function, but ideally I'd like to find something in List to do that
12:19:02 <elliott_> Deewiant: If you want to thread everything through a State monad global, be my guest! (It will be horrible.) Oh, and I hope you never, ever want concurrency!
12:19:04 <Deewiant> elliott_: Most programs have the I part of the I/O affect their state in some way
12:19:25 <Deewiant> elliott_: I didn't say "everything", I just meant that it'd show up in a lot of places
12:19:28 <fizzie> Best powers of two to use: http://oeis.org/A014221 "0, 1, 2, 4, 16, 65536 ... comments: Next term has 19729 digits."
12:19:38 <elliott_> Deewiant: By saying most programs are (StateT s IO) you're saying that every single component of most programs needs to access and modify every piece of state, and also needs to perform completely arbitrary IO
12:19:46 <Deewiant> elliott_: Yeah, that's not what I meant
12:19:55 <elliott_> Deewiant: So if you're right, modular programming is a hopeless task, separating software into components is futile, and functional programming is hopeless
12:20:03 <elliott_> Score one for transformer stacks?
12:20:06 <Deewiant> elliott_: Still not what I meant
12:20:24 <elliott_> Deewiant: You might not mean it, but it's what you said; that's what you're claiming by putting all your program in that
12:20:58 <Deewiant> elliott_: By which I meant that it'll show up in many if not most of the top-levelish functions
12:21:00 <elliott_> Deewiant: Then what does "largely" make it mean instead
12:21:22 <elliott_> People who use monad transformer stacks don't localise their use to "top-levelish" functions
12:21:23 <Deewiant> elliott_: But of course that doesn't mean that every single IO-using or s-using function has to be in the StateT
12:21:28 <elliott_> I've not seen a single person do that, they stuff everything in there
12:21:55 <elliott_> And if it's just top-level functions then "MVar s -> IO a" is hardly worse than "StateT s IO a"
12:22:12 <elliott_> Bonus: It isn't a royal pain to make "s" a more specific type for things that only need certain parts
12:22:50 <elliott_> * ais523 vaguely wonders what the correct way to write "a list of 100 1s" is in OCaml
12:22:54 <elliott_> ais523: does it have an iota operation?
12:24:09 <ais523> not in Pervasives or List
12:24:25 <ais523> (which, as we've already established, are the only modules allowed inside the sandbox)
12:24:32 <ais523> also, those are the most obvious modules for a range operator to be in
12:24:50 <elliott_> isn't this what batteries is for
12:24:58 -!- pikhq_ has quit (Ping timeout: 252 seconds).
12:25:02 -!- pikhq has joined.
12:25:07 <ais523> btw, I just kicked Wooble
12:25:10 <ais523> for a legitimate reason
12:25:15 <ais523> I thought you might be amused
12:25:46 <fizzie> Well, it's the PowerTower[2, n] too, just turns out it's Ackermanny too with the proper definition.
12:26:05 <ais523> fizzie: is that Mathematica syntax? For shame!
12:26:41 <fizzie> ais523: It's Mathematica syntax because it's a Mathematica function; I don't know any other place that'd call it PowerTower.
12:27:12 <ais523> isn't "tetration" the usual name?
12:27:37 <fizzie> Possibly; it's a name for it I've seen, at least.
12:28:06 <fizzie> And the one I was thinking of; but the http://mathworld.wolfram.com/PowerTower.html just mentions it in a somewhat non-prominent way.
12:28:07 <ais523> Mathematica is actually quite similar to Prolog without the backtracking, internally
12:28:18 <ais523> which is probably worrying
12:28:18 <elliott_> ais523: Isn't everything Wooble says kickable?
12:28:38 <ais523> he accidentally pasted a hundreds-of-lines-long pastescript into #devnull_nethack, though, and that definitely is
12:28:57 <Vorpal> ais523, pastescript? I was wondering what it was supposed to bea
12:29:21 <ais523> Vorpal: setting autopickup exceptions
12:29:33 <ais523> devnull turned on APE, but not the ability to configure it via the RC file
12:29:36 <ais523> so you have to set them in-game
12:30:02 -!- DjagoProphet has changed nick to CakeProphet.
12:30:38 <elliott_> Does anyone know how to make ncurses use the "primary" screen?
12:30:42 <elliott_> Rather than switching away to the alternate thing.
12:30:49 <ais523> Blizzard put in a secret cow level in Diablo II as a reference to it
12:31:11 <elliott_> (You guys know what I mean, right?)
12:31:21 <CakeProphet> the cheat code for god mode in Diablo 2 is thereisnocowlevel
12:31:30 <CakeProphet> which, surprisingly, disabled the secret cow level.
12:31:44 <Vorpal> elliott_, not entirely.
12:31:59 <Vorpal> elliott_, do you mean that once you edit the program there is no trace of the stuff it displayed?
12:32:01 <elliott_> Vorpal: Ever noticed how curses prorgams reset your scrollbar?
12:32:09 <elliott_> And don't leave a trace in your shell session?
12:32:13 <CakeProphet> http://www.youtube.com/watch?v=1XAfUcvdhmc
12:32:15 <Vorpal> elliott_, no I don't know how
12:32:17 <ais523> of course, as befits computer game players, they figured out a way to abuse the cow level for farming massive amounts of exp in multiplayer
12:32:20 <elliott_> I just want to make progress bars. :(
12:32:22 <Deewiant> elliott_: StateT s IO doesn't preclude concurrency, you just need to runStateT them and then figure out what to do with the state afterwards
12:32:25 <elliott_> I guess I'll have to roll my own with ANSI?
12:32:26 <Vorpal> elliott_, use plain termcap?
12:32:38 <ais523> wait, why use screen for a progress bar?
12:32:40 <CakeProphet> ais523: isn't that pretty much its purpose? I don't think it's much of an abuse.
12:32:53 <elliott_> Deewiant: "You just gotta implement your own concurrency strategy; btw hope you weren't expecting shared memory of any kind, or MVar style semantics, or transactions, or ..."
12:33:03 <ais523> CakeProphet: its purpose is terminal multiplexing; I don't see what that has to do with progress bars
12:33:17 <CakeProphet> ais523: `you must have me mistaken with someone else
12:33:20 <Deewiant> elliott_: If you want to pass in an MVar, pass in an MVar
12:33:24 <Deewiant> elliott_: MVar a -> StateT s IO b
12:33:41 <ais523> CakeProphet: no, you were talking about screen, so was I
12:33:50 <elliott_> Deewiant: "Most programs" don't have a bunch of state that only gets synchronised when a thread dies
12:34:02 <CakeProphet> ais523: oh, no I was talking about the secret cow level.
12:34:10 <fizzie> elliott_: You're not alone: http://www.shallowsky.com/linux/noaltscreen.html has the termcap/terminfo capability to mess with.
12:34:11 <elliott_> <ais523> wait, why use screen for a progress bar?
12:34:20 <elliott_> ais523: That's not what screen is.
12:34:39 <elliott_> fizzie: Heh. I want to implement this in the program though.
12:34:53 <ais523> elliott_: I still don't get what you're trying to do, or to tell me
12:34:53 <elliott_> Deewiant: ansi-terminal hasn't been updated for over a year which is worrying
12:35:10 <elliott_> Also it's not exactly the most high-level API
12:35:52 <elliott_> ais523: Do you really want me to bother explaining when the misinterpretation of terminology you made makes the chances of you giving a correct answer ~0?
12:35:59 <elliott_> If you don't know what the alternate screen is, you can't help :p
12:36:00 <Deewiant> elliott_: There's wrappers to it
12:36:29 <ais523> elliott_: oh, I thought you were talking about screen(1)
12:36:37 <ais523> I do know what the alternate screen is
12:36:43 <ais523> but I've been having serious problems following your conversation
12:36:47 <ais523> which implies that I'm misunderstanding something
12:36:56 <Deewiant> elliott_: Maybe they don't have such state, but most programs don't have concurrency in the first place so I can't think of a sufficient amount of examples. But fair enough, most concurrent programs probably should avoid StateT
12:36:59 <ais523> I'm asking you to explain again in different words in the hope that I understand it the second time
12:37:00 <Deewiant> elliott_: Maybe there was only one
12:37:02 <elliott_> ais523: Run curses program; note how it runs on the alternate screen
12:37:04 <Deewiant> elliott_: I've only ever used ansi-terminal directly
12:37:08 <elliott_> ais523: Note how all I want is an inline progress bar
12:37:21 <elliott_> Deewiant: It's called AC-Terminal; I think I started ignoring all packages starting with AC- because their author is an amateur or something
12:37:32 <elliott_> Also because there's like fifty of them
12:37:44 <ais523> elliott_: aha, it's to do with curses(3), not with screen(1)
12:37:54 <ais523> normally when I make progress bars, I just use a bunch of \r
12:38:00 <ais523> and redraw them each time
12:38:01 <elliott_> ais523: It's not really to do with curses either, I'm asking for a general solution
12:38:04 <ais523> that works even on dumb terminals
12:38:07 <elliott_> And yes, I am aware one can do progress bars in that manner
12:38:11 <ais523> but I'm not sure it's a perfect solution
12:38:14 <elliott_> Obviously telling me that isn't going to actually help :P
12:38:16 <ais523> Deewiant: Windows doesn't respect \r?
12:38:18 <fizzie> 'screen' has a command (termcap/terminfo/termcapinfo) to tweak the current termcap/terminfo entry without going through the hassle of editing any files; if you feel sufficiently motivated, you could check how that's done; presumably by environment variables somehow. (At least for termcap you can just set TERMCAP; don't know about terminfo, though.)
12:38:22 <elliott_> I'll just use ansi-terminal, it does colours and cursor controls
12:38:23 <Deewiant> ais523: I'm pretty sure cmd.exe doesn't
12:38:33 <elliott_> Even if the Windows support is beyond useless to me
12:38:36 <ais523> elliott_: so what are you trying to do that \r progress bars can't do?
12:39:11 <ais523> Deewiant: but cmd.exe isn't responsible for rendering stdout, NTVDM is; and I know that at least the old-fashioned conio.h API handles \r just fine
12:39:21 <ais523> presumably whatever it was replaced with does too
12:39:26 <elliott_> ais523: I'm not looking to get XY Problemed; manually writing out ANSI escape codes and \rs is as ugly and unmaintainable as it is non-portable
12:39:31 <elliott_> Especially since I already have a solution
12:39:56 <ais523> elliott_: the amusing thing is, I'm seriously considering to change Ace to hardcode ANSI escape codes rather than using termcap
12:40:03 <Deewiant> ais523: NTVDM is the 16-bit emulator, I fail to see how it's relevant
12:40:12 <ais523> Deewiant: oh, that would explain my results
12:40:20 <ais523> elliott_: termcap/terminfo/curses/etc
12:40:30 <ais523> the problem is, they adapt to the terminal you're actually using
12:40:37 <ais523> which means that the ttyrec might not play back on other people's terminals
12:40:55 <ais523> and often, the entries in the database are wrong, so they don't even adapt to your own terminal
12:41:10 <ais523> meanwhile, VT100, and some of the extensions of it, are both standardised and actually work on pretty much all terminals in practice
12:41:20 <ais523> so hardcoding that seems to work better than using terminal-specific codes
12:41:24 <ais523> I guess it's a different meaning of "portable"
12:41:29 <elliott_> Deewiant: Barf @ it uses imperative actions to control things like colours; I guess I'll look at ansi-wl-pprint too, which is a wrapper, but I doubt it can do progress bars
12:42:39 <Deewiant> elliott_: I think ansi-wl-pprint just has pretty printing with colours and bold and stuff, not the ability to write over earlier text
12:42:53 <elliott_> Deewiant: Technically, System.Console.ANSI doesn't offer that either
12:42:58 <elliott_> Deewiant: You have to use the cursor functions to do that
12:43:13 <elliott_> So I could just print out each progress bar step with the ansi-wl-pprint stuff and use ansi-terminal to overwrite it each time
12:43:13 <Deewiant> Well, that /is/ a way of doing that
12:43:27 <Deewiant> Right, I just meant you can't use solely ansi-wl-pprint
12:43:40 <elliott_> Might be overkill for just a progress bars
12:43:45 <elliott_> Depends on how much I use this
12:43:51 <elliott_> I can always make a little mini-module of tricks
12:44:12 <elliott_> 'Thanks to Brandon S. Allbery and Curt Sampson for pointing me in the right direction on xterm title setting on haskell-cafe. The 0 signifies that both the title and icon text should be set: i.e. the text for the window in the Start bar (or similar) as well as that in the actual window title. This is chosen for consistent behaviour between Unixes and Windows."
12:44:14 <elliott_> --docs of hCursorUp,hCursorBackward,hCursorForward,hCursorDown
12:44:21 <elliott_> These docs are very badly organised
12:49:32 <lambdabot> forall a b. (RealFrac a, Integral b) => a -> b
12:51:05 <ais523> elliott_: btw, am I mad for using the powers of 2 in lexicographical order as a test input to a sort function?
12:51:13 <ais523> it seemed to be reasonably interestingly misordered
12:51:46 <ais523> and hits a few expected corner cases (it's meant to be a bignum sort, and it goes a little over the range of an integer in my 32-bit OCaml impl)
12:52:51 <ais523> hmm, is it a good idea to connect a wired and wireless network, both designed to go to the Internet at large, simultaneously?
12:52:58 <ais523> I'm guessing no because they have different proxy settings
12:53:26 <elliott_> ais523 has no idea how fancy my progress bar is going to be.
12:54:00 <Vorpal> ais523, they have proxy settings?
12:54:12 <ais523> the wired network firewalls everything, including 80
12:54:23 <ais523> but has an autoproxy to let you access the Web
12:54:24 <Vorpal> ais523, so you can't ssh out for example?
12:54:28 <ais523> (one of the WPAD things)
12:54:34 <ais523> 443 can go through the proxy
12:54:47 <ais523> 25 works too, but only to a few addresses
12:54:50 <Vorpal> so man in the middle by default?
12:55:01 <Vorpal> I wouldn't use that network
12:55:09 <ais523> work network, they're all like that
12:55:20 <Vorpal> and I'm surprised firefox doesn't display wrong certificate for the proxy all the time
12:55:34 <ais523> well, with a work computer, it's in the root CAs
12:55:36 <Vorpal> wrong certificate errors*
12:55:49 <Vorpal> ais523, I would use the wireless if it is saner
12:55:53 <ais523> I think it might not decrypt the contents of an HTTPS transmission, though, just check where you're connecting
12:55:58 <ais523> the wireless is saner except it keeps dropping
12:56:16 <ais523> I'm going to connect to https://google.com in Chromium
12:56:29 <Vorpal> that is going to use spdy, no?
12:56:36 <ais523> oh right, I'm on the wireless, ofc it's going to work
12:56:42 <ais523> and it did just jump to an insecure version
12:56:54 <Vorpal> ais523, try https://encrypted.google.com
12:57:15 <ais523> anyway, chromium has Google's certs hardcoded
12:57:27 <elliott_> this progress bar /almost/ works
12:57:34 <ais523> so can detect MITMing even with a certificate added by your employer
12:57:44 <ais523> I'll probably try that next time I'm on the wired
12:57:54 <ais523> my guess is that the proxy can tell I'm connecting to Google, but doesn't decrypt the contents
12:58:15 <elliott_> who wants to run a program that will make them vaguely worried that their terminal can output such SMOOTH PROGRESS BARS?
12:58:28 <elliott_> everyone. everyone wants that program.
12:58:36 <Vorpal> elliott_, it is unicode block characters, isn't it?
12:58:45 <elliott_> Vorpal: yeah, but it's seriously unnerving :P
12:59:06 <elliott_> Vorpal: see for yourself: http://sprunge.us/IhEb
12:59:42 <coppro> ais523: it should be incapable of decrypting the contents
12:59:43 <ais523> > 56345683457823567897543234567 * 9313456789341754124566812142
12:59:44 <lambdabot> 524773088150368273322823696325607978422660521630529712514
12:59:46 <Vorpal> elliott_, does it work on ghc 6.whatever?
12:59:54 <elliott_> needs the small ansi-terminal library
13:00:19 <Vorpal> elliott_, I'm on my ubuntu laptop
13:00:21 <elliott_> also will install in about 5 seconds with "cabal install ansi-terminal"
13:00:44 <elliott_> Vorpal: oh, and apt-get install libghc-ansi-terminal-dev
13:00:49 <ais523> ^ testcase to determine that a) the library does indeed handle bignums rather than using native ints, b) it multiplies in O(log n), not O(n)
13:00:53 <elliott_> depending on how new the ubuntu is
13:01:19 <ais523> elliott_: what about installing Cabal? or does Ubuntu have that by default nowadays?
13:01:41 <elliott_> ais523: I offered that; Vorpal's just looking for excuses though, so I'm offering as many trivial solutions as possible to antagonise him
13:01:57 <Vorpal> elliott_, I'm going to install it, sure
13:02:05 <Vorpal> just going to take a while over 3G
13:02:13 <ais523> elliott_: do Unicode block characters line up perfectly in most terminals? I'm used to them leaving pixel-wide gaps
13:02:31 <elliott_> ais523: try the program and see; I've had some alignment issues getting the full thing to work, but the program doesn't suffer from them by definition
13:02:48 <Vorpal> elliott_, yeah the package is not in the repo, will check the cabal solution
13:03:01 <elliott_> oh come on: Unicode has every block width going from the left from eighth to whole, but only (a) right one eighth and (b) right half
13:03:06 <elliott_> WHY WOULDN'T YOU JUST THROW THEM ALL IN
13:03:17 <ais523> yeah, I'm missing System.Console.ANSI; what package is it in?
13:03:23 <ais523> libghc-ansi-terminal-dev?
13:03:37 <elliott_> or just cabal install ansi-terminal
13:03:53 <elliott_> Vorpal: ais523: I'm not sure whether it's more or less unnerving if you take the last 0 off the threadDelay line
13:04:00 <elliott_> (run the program with "runhaskell foo.hs", btw)
13:04:03 <ais523> the package doesn't exist in this Ubuntu
13:04:15 <elliott_> ais523: cabal install ansi-terminal, then; it'll install into ~/.cabal
13:04:19 <Vorpal> elliott_, it tells me I have to cabal update first
13:04:20 <ais523> and I don't have cabal either
13:04:24 <ais523> what package is /that/ in?
13:04:27 <Vorpal> elliott_, this is going to take a while. I'm on EDGE now.
13:04:46 <elliott_> ais523: you really shouldn't use debian ghc btw, but *shrug*
13:04:47 <Vorpal> Note: there is a new version of cabal-install available.
13:04:47 <Vorpal> To upgrade, run: cabal install cabal-install
13:04:58 <ais523> elliott_: what should be used instead? and what's wrong with debian ghc?
13:05:06 <elliott_> Vorpal: not unless you want to break everything
13:05:06 <ais523> Vorpal: that's just what CPAN does
13:05:18 <ais523> this implies it may be a bad thing
13:05:25 <Vorpal> elliott_, where was the link now again?
13:05:38 -!- derrik has joined.
13:05:56 <elliott_> Vorpal: your choice whether you want to make the cabal-install work a waste or not :)
13:06:03 <elliott_> i'm busy typing a response to ais523, who asked a non-trivial question
13:06:07 <Vorpal> foo.hs: UTF-8 Unicode Java program text
13:06:29 <Vorpal> elliott_, why is it green?
13:06:44 <Vorpal> elliott_, anyway it is kind of jerky
13:06:46 <ais523> t.o: In function `sYB_info':
13:06:47 <ais523> (.text+0x6ac): undefined reference to `ansizmterminalzm0zi5zi5_SystemziConsoleziANSIziUnix_showCursor_closure'
13:06:49 <ais523> elliott_: in which OS?
13:06:52 <elliott_> ais523: you didn't do what I told you to do
13:07:08 <ais523> what did you tell me to do? I installed cabal, then did cabal install, then tried to compile with ghc
13:07:12 <elliott_> ais523: the binary package installed manually; and, well, debian/ubuntu ghc /itself/ isn't broken, but it /is/ years old except in the very latest releases; but more importantly, if you install any non-core (= shipped with ghc) libraries with apt-get, then you can't mix it with cabal-installed libraries at all, which is problematic because debian's haskell library set is (a) old (b) incrediby incomplete
13:07:17 <elliott_> ais523: <elliott_> (run the program with "runhaskell foo.hs", btw)
13:07:50 -!- sebbu2 has joined.
13:08:05 <ais523> hmm, it's kind-of jerky due to rounding errors
13:08:24 <ais523> but it does make a continuous bar in gnome-terminal
13:08:29 -!- sebbu has quit (Ping timeout: 255 seconds).
13:08:42 <ais523> sometimes it moves one pixel, sometimes too
13:08:56 <Madoka-Kaname> Vorpal, I'm going to guess it's the import statements
13:09:02 <ais523> aha, because it can't subpixel alias, because it's green
13:09:07 <Madoka-Kaname> Except for missing a semicolon, they're pretty much identical
13:09:13 <ais523> it'd be three times smoother if it were white
13:09:15 <elliott_> Madoka-Kaname: and not being lowercase
13:09:21 <elliott_> `addquote <ais523> aha, because it can't subpixel alias, because it's green <ais523> it'd be three times smoother if it were white
13:09:23 <HackEgo> 706) <ais523> aha, because it can't subpixel alias, because it's green <ais523> it'd be three times smoother if it were white
13:09:31 <elliott_> hmm, probably better with just the second one
13:09:37 <HackEgo> *poof* <ais523> aha, because it can't subpixel alias, because it's green <ais523> it'd be three times smoother if it were white
13:09:44 <elliott_> but that isn't funny at all then, so meh
13:09:46 <Madoka-Kaname> You can have uppercase package names in Java (but it's probs bad practice)
13:09:47 <ais523> elliott_: but out of context, it's not funny
13:10:01 <ais523> it just looks like an out-of-context "that's what she said" sort of innuendo
13:10:07 <ais523> and those aren't generally that funny
13:10:12 <elliott_> ais523: haha omg i just created an unintentional fancy animation
13:10:23 <ais523> elliott_: you don't normally omg
13:10:27 <Vorpal> Madoka-Kaname, hm yeah
13:10:30 <ais523> are you sure you're elliott_?
13:10:34 <Madoka-Kaname> I wonder why it resulted as "Java" instead of "Python"
13:10:53 <ais523> Java would have more semicolons
13:11:12 <Vorpal> Madoka-Kaname, python tends to not have foo.bar when importing very often at least
13:11:45 <ais523> hmm, potentially interesting project: write a really good programming language guesser
13:11:57 <ais523> that's like what file(1) tries to do, except actually working
13:12:17 <Vorpal> ais523, ohcount has a quite okay one in it iirc. It mixes up C and C++ sometimes, but that is actually quite hard to tell apart sometimes
13:12:22 <CakeProphet> no I'm registered to freenode, if that's what you meant... I have clue what you're saying.
13:12:39 <elliott_> I too have clue what you're saying.
13:12:40 <Vorpal> you would basically have to try to parse it as both C and C++ completely and see which worked (possibly both)
13:13:04 <ais523> Vorpal: a typical C++ program would contain at least one method call, which would give away that it wasn't C
13:13:15 <ais523> if you aren't using methods, than what are you doing using C++?
13:13:21 <Vorpal> ais523, well for headers it can be less clear I guess
13:13:32 <ais523> right, headers are often C/C++ polyglots
13:13:40 <ais523> but in the case of a header, the correct language is "cpp", I suspect
13:14:20 <Vorpal> ais523, anyway ohcount gets confused if you have stuff like this in a header: struct foo { int new; ... }
13:14:35 <ais523> obviously C, it doesn't parse as C++
13:14:54 <Deewiant> Vorpal: It calls 'struct foo { int new; };' C
13:14:56 <Vorpal> ais523, but a simple keyword scanning method to determine if it is C++ or C wouldn't handle that
13:15:15 <ais523> keyword scanning isn't really the way to go
13:15:23 <Vorpal> Deewiant, I distinctly remember an older version didn't handle that though
13:15:24 <ais523> because languages tend to have similar keywords
13:15:32 <ais523> I think looking for keyword/punctuation combos would work better
13:15:56 <Vorpal> ais523, well iirc it did that to separate C/C++ mostly. And other methods to determine it was one of them in the first place
13:16:13 <ais523> how does it separate C and C++ from C# and Java?
13:16:22 <ais523> they look pretty similar keyword-wise too
13:16:29 <Vorpal> it is open source anyway
13:16:36 <Deewiant> It seems to have a parser for all the languages it supports, maybe it just tries to parse as everything and then has some supersedence rules: https://github.com/blackducksw/ohcount/tree/master/src/parsers
13:16:50 <ais523> Madoka-Kaname: there are C and C++ compilers that accept "#import" as a preprocessor directive
13:17:01 <Madoka-Kaname> ais523, but that's easily distinguished from Java imports.
13:17:27 <ais523> Deewiant: isn't that because C++ is TC to even parse?
13:17:36 <Vorpal> Deewiant, c.rl handles C and C++ it seems
13:17:53 <Madoka-Kaname> More interesting might be distinguishing Java from Scala from Python using keyword scanning.
13:18:04 <Vorpal> what on earth is .rl anyway?
13:18:20 <Madoka-Kaname> Well, Scala's probs a little distinctive with val/var/class/import all at once.
13:18:23 <Deewiant> ais523: Depends on what you call the "parse" stage, I guess
13:18:25 <ais523> I'd imagine Java from Scala would be easy using punctuation
13:18:46 <Vorpal> Deewiant, ragel being a parser generator for C?
13:18:57 <Deewiant> ais523: Finding stuff like whether "new" is used as a variable name could be done before the TC part, I think
13:19:29 <Deewiant> Vorpal: A parser generator, at least
13:19:55 <ais523> Java vs C# is easiest in practice by looking for getters and setters, the conventions for those are entirely different in the two languages and they're pretty common
13:20:08 <ais523> Madoka-Kaname: "let" is all over the place in Haskell, not so in Python
13:20:20 <Vorpal> ais523, doesn't C# use "using" and java "import" too?
13:20:25 <elliott_> does anyone know how to print a unicode character as high as the line height? :p
13:20:49 <ais523> elliott_: use a printer?
13:20:59 <Deewiant> elliott_: Your blocks :: [Char] were line height for me
13:21:00 <ais523> Madoka-Kaname: that one is really easy
13:21:11 <ais523> line noise doesn't look anything like Perl
13:21:14 <ais523> have you not seen it before?
13:21:19 <elliott_> Deewiant: It matters because I need to set the background so that partially-filled characters don't have a white background
13:21:25 <elliott_> As opposed to the grey of the rest of the unfilled area
13:21:31 <elliott_> But that leaves an ugly grey line above the bar for me
13:21:37 <ais523> even obfuscated or golfed Perl tends to gravitate towards particular characters
13:21:49 <Vorpal> <elliott_> Deewiant: Not for me :( <-- nor for me, do unicode line drawing characters join up for you
13:22:21 <Deewiant> elliott_: I think you have either a font problem or a line-spacing problem and in either case, you "can't" make it work
13:22:21 <Vorpal> elliott_, not if the terminal inserts padding between lines
13:22:31 <Madoka-Kaname> ais523, would you look at file extensions or shebangs?
13:22:42 <fizzie> Deewiant: So I suppose it will still fail completely if you do the "in suck.h #define BEGIN {, #define END }; in trytofiguremeout.c #include "suck.h", no curly braces at all" thing.
13:22:42 <elliott_> Deewiant: I guess the only solution is to give up my fancy granularity :(
13:22:51 <Madoka-Kaname> i.e. if extension matches a known language, that language gains supercedance over every other language, if it parses as it
13:23:05 <ais523> Madoka-Kaname: yes, in practice; I'm interested in the theory of doing without, though
13:24:17 <Deewiant> fizzie: Well yes, you can do "anything you want" with CPP, of course
13:24:27 <elliott_> Deewiant: Looks like gnome-terminal has the exact same problem, so I can hardly ignore it
13:25:12 <Deewiant> elliott_: Make one-line high bars, or use something like '#' that doesn't even try to look completely filling
13:26:17 <Vorpal> elliott_, why do you need multiline stuff here?
13:26:25 <Deewiant> elliott_: Well, if you have one horizontal bar like ███, it doesn't matter whether it lines up with what's on the next line? Or why did you care about the lining up anyway
13:26:41 <fizzie> In quite a few browsers, in a "font-family: monospace;" <pre>, mixing "normal text" and Unicode line-drawing characters ends up making the line-drawing bits misaligned badly.
13:26:52 <Vorpal> elliott_, why do you care about it being line height
13:27:27 <fizzie> Vorpal: http://zem.fi/rfk86/ suffered from that quite a lot. :)
13:27:31 <elliott_> Deewiant: You don't understand; say I have a progress bar with a grey background, being filled in by green. If I use full blocks of those two colours (ignoring background), everything works fine. But, if I want to use partially-filled blocks, then every partially-filled block will have a space of /normal/ background behind it!
13:27:42 <Vorpal> fizzie, works now in firefox, how did you fix it?
13:27:47 <elliott_> Deewiant: So I need to "fill in" that gap with grey somehow; the obvious way is to set the background.
13:28:06 <elliott_> Deewiant: But that causes an ugly grey line to appear above the progress bar, because the background fills the whole line height, including the inter-line padding.
13:28:28 <Vorpal> elliott_, so why not leave it at the background colour of the terminal?
13:28:39 <Deewiant> elliott_: So: don't set the background or don't worry about the grey line
13:28:50 <ais523> elliott_: it's still not going to work on terminals that render backgrounds and foregrounds differently
13:29:00 <Vorpal> elliott_, no I didn't. I'm questioning the need of that grey background
13:29:01 <ais523> e.g. jettyplay will use a darker shade for, say, "dark red" in the background than it will in the foreground
13:29:14 <ais523> so you can read text even when the foreground and background are set to the same colour
13:29:19 <elliott_> Deewiant: If I don't set a background at all, it's not, you know, a bar; I'd rather use full blocks than make it ugly in that way. The grey line is really awful.
13:29:21 <Vorpal> elliott_, just do a green bar that grows over the natural bg colour of the terminal
13:29:28 <elliott_> Anyway "don't care about it" is not a solution to problems
13:29:53 <Deewiant> elliott_: How isn't it a bar if you don't set a background?
13:29:54 <ais523> elliott_: rather, it's a claim that you don't need a solution to the problem
13:30:07 <ais523> isn't the usual solution to put [ and ] around the bar to show its endpoints?
13:30:07 <elliott_> ais523: Are such claims interesting
13:30:13 <Deewiant> elliott_: ▉█▎looks barry to me
13:30:16 <elliott_> I know I can resort to full blocks if I want
13:30:19 <ais523> elliott_: no, but they can be correct, sometimes
13:30:27 <elliott_> The idea is to try and figure out if I have to
13:30:33 <fizzie> Vorpal: Well, it should now work in everything that does (and allows) font embedding the way it's done there; and it did work with the "regular" monospace font in *some* systems. But I do recall getting rather ragged right edges from others. I think I added a "DejaVu Sans Mono" before monospace to make it work everywhere where that font is installed, since it has all the characters the page uses.
13:30:37 <elliott_> ais523: I could draw a "normal" ASCII bar, I just think this looks much nicer
13:30:43 <Vorpal> <Deewiant> elliott_: ▉█▎looks barry to me <-- amusing, there is a gap between those in my irc client
13:31:11 <Deewiant> You have problematic terminals and/or fonts :-P
13:31:15 <ais523> fizzie: I've had problems with "Monospace" referring to a non-monospace font in Windows, believe it or not
13:31:23 <elliott_> Deewiant: Who uses an IRC client in a terminal
13:31:32 <fizzie> Deewiant: There's a gap in xchat; there's no gap in irssi/urxvt.
13:31:50 <Deewiant> You have problematic GUI IRC clients
13:32:07 <elliott_> Deewiant: Hmm, the fact that repositioning the cursor causes a forced scroll down in ansi-terminal is problematic
13:32:32 <elliott_> And seemingly not fixable from the provided API
13:32:38 <ais523> hmm, what's the first power of 2 that, expressed in base 10, starts with 7?
13:32:47 * ais523 wonders how to express that in Haskell
13:33:02 <ais523> @hoogle Integer -> [Integer]
13:33:02 <lambdabot> Test.QuickCheck.Arbitrary shrink :: Arbitrary a => a -> [a]
13:33:02 <lambdabot> Test.QuickCheck shrink :: Arbitrary a => a -> [a]
13:33:07 <lambdabot> [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,...
13:33:10 <ais523> @hoogle Integer -> [Int]
13:33:10 <Deewiant> elliott_: Is that somehow explicitly done by the implementation?
13:33:11 <lambdabot> Data.Time.Calendar gregorianMonthLength :: Integer -> Int -> Int
13:33:11 <lambdabot> Data.Time.Calendar.Julian julianMonthLength :: Integer -> Int -> Int
13:33:11 <lambdabot> Data.Generics.Schemes gsize :: Data a => a -> Int
13:33:23 <ais523> elliott_: I'm trying to find a function that list-of-digitizes a number
13:33:31 <elliott_> > find (("7" `isPrefixOf`) . show) $ map (2^) [0..]
13:33:42 <Deewiant> > find ((== '7') . head . show) $ map (2^) [0..]
13:33:45 <ais523> that's actually pretty large
13:33:48 <elliott_> Deewiant: That too, but I don't like head :)
13:33:54 <elliott_> <Deewiant> elliott_: Is that somehow explicitly done by the implementation?
13:33:57 <Deewiant> elliott_: I thought you didn't like using "show" like this :-P
13:34:00 <ais523> I forgot that Haskell strings were just lists of chars
13:34:02 -!- Patashu has quit (Ping timeout: 240 seconds).
13:34:02 <elliott_> Deewiant: There's gotta be some way to avoid it
13:34:19 <elliott_> Nothing is more important than showing people how great Haskell is quickly
13:34:21 <ais523> (in Ocaml, string, char list, and char array are all different types; string acts like char array, though)
13:34:31 <elliott_> > find (("9" `isPrefixOf`) . show) $ map (2^) [0..]
13:34:35 <Deewiant> elliott_: I'd check the implementation first
13:34:46 <elliott_> > map [0..9] $ \d -> find ((show d `isPrefixOf`) . show) $ map (2^) [0..]
13:34:47 <lambdabot> Couldn't match expected type `a -> b' against inferred type `[a1]'
13:34:49 <lambdabot> Source not found. That's something I cannot allow to happen.
13:35:02 <elliott_> > flip map [0..9] $ \d -> find ((show d `isPrefixOf`) . show) $ map (2^) [0..]
13:35:14 <elliott_> > [0..9] `map` \d -> find ((show d `isPrefixOf`) . show) $ map (2^) [0..]
13:35:15 <lambdabot> Couldn't match expected type `a -> b' against inferred type `[a1]'
13:35:15 <Vorpal> > find (("42" `isPrefixOf`) . show) $ map (2^) [0..]
13:35:35 <elliott_> > flip map [1..] $ \p -> find ((show p `isPrefixOf`) . show) $ map (2^) [0..]
13:35:37 <lambdabot> [Just 1,Just 2,Just 32,Just 4,Just 512,Just 64,Just 70368744177664,Just 8,J...
13:35:47 <elliott_> > catMaybes . flip map [1..] $ \p -> find ((show p `isPrefixOf`) . show) $ map (2^) [0..]
13:35:48 <ais523> can the list be unjusted, somehow?
13:35:49 <lambdabot> [1,2,32,4,512,64,70368744177664,8,9007199254740992,1024,1125899906842624,12...
13:36:31 <Deewiant> elliott_: More appropriate in this case
13:36:36 <Vorpal> elliott_, what is the log_2 function in haskell now again?
13:36:40 <ais523> technically, find /has/ to return Just x or else diverge, on an infinite list
13:36:53 <Deewiant> elliott_: catMaybes loses the mapping from the numbers you're looking for, in case you get Nothing
13:36:54 <ais523> > length show 70368744177664
13:36:55 <lambdabot> Couldn't match expected type `[a]'
13:36:55 <lambdabot> against inferred type `a1 -> GHC...
13:36:56 <elliott_> > [n | p <- [0..], Just n <- find ((show p `isPrefixOf`) . show) $ map (2^) [0..]]
13:36:57 <lambdabot> Couldn't match expected type `[t]'
13:36:57 <lambdabot> against inferred type `Data.Mayb...
13:36:59 <ais523> > length (show 70368744177664)
13:37:01 <Deewiant> elliott_: I'd rather have an error
13:37:13 <ais523> ^ a reasonably bad way to do log_10
13:37:24 <ais523> > log 70368744177664 / log 2
13:37:30 <elliott_> > [n | p <- [1..], Just n <- find ((show p `isPrefixOf`) . show) $ map (2^) [0..]]
13:37:31 <lambdabot> Couldn't match expected type `[t]'
13:37:31 <lambdabot> against inferred type `Data.Mayb...
13:37:45 <elliott_> > [n | p <- [1..], let Just n = find ((show p `isPrefixOf`) . show) $ map (2^) [0..]]
13:37:46 <lambdabot> [1,2,32,4,512,64,70368744177664,8,9007199254740992,1024,1125899906842624,12...
13:37:53 <ais523> > log 9007199254740992 / log 2
13:38:03 <elliott_> > [n | p <- [1..], n <- map (2^) [0..], show p `isPrefixOf` show n]
13:38:04 <lambdabot> [1,16,128,1024,16384,131072,1048576,16777216,134217728,1073741824,171798691...
13:38:19 <ais523> why is the number 0 called 0? for consistency, it should probably be the null string
13:38:26 <elliott_> > [n | p <- [1..], let n:_ = [n | n <- map (2^) [0..], show p `isPrefixOf` show n]]
13:38:28 <lambdabot> [1,2,32,4,512,64,70368744177664,8,9007199254740992,1024,1125899906842624,12...
13:38:41 <elliott_> OK, now how to avoid traversing the list of powers multiple times...
13:38:51 <lambdabot> forall a. (a -> Bool) -> [a] -> ([a], [a])
13:38:59 <elliott_> > break (("3" `isPrefixOf`) . show) $ map (2^) [0..]
13:39:01 <lambdabot> ([1,2,4,8,16],[32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,1310...
13:39:10 <elliott_> > span (("3" `isPrefixOf`) . show) $ map (2^) [0..]
13:39:11 <lambdabot> ([],[1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131...
13:39:55 <fizzie> > find ((7 ==) . head . (ord <$>) . flip (showIntAtBase 10 chr) []) $ map (2^) [0..]
13:39:58 <elliott_> > let f p xs = let (_, wow:xs') = span ((show p` isPrefixOf`) . show) xs in wow : f (p+1) xs' in f 1 $ map (2^) [0..]
13:39:59 <lambdabot> [2,4,8,16,32,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,26214...
13:40:23 <elliott_> > let f p xs = let (_, wow:xs') = span ((show p `isPrefixOf`) . show) xs in wow : f (p+1) xs' in f 1 $ map (2^) [0..]
13:40:25 <lambdabot> [2,4,8,16,32,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,26214...
13:40:29 <ais523> hmm, what we really need is a partition function that sorts into more than one partition, lazily
13:41:05 <elliott_> The algorithm is totally borked, I think
13:42:00 <ais523> `pwd` =~ /production/ or die "Not downloading to production DB?";
13:42:01 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: pwd`: not found
13:42:26 <ais523> a check that I ended up adding after accidentally putting live user data into the test DB
13:42:41 <ais523> which is possibly a worse mistake than putting test data in the production DB
13:42:46 <ais523> elliott_: it's a NetHack thing
13:42:53 <ais523> to put question marks on error messages that should never happen
13:42:56 <elliott_> @hoogle [a -> Bool] -> [a] -> [[a]]
13:42:57 <lambdabot> Prelude dropWhile :: (a -> Bool) -> [a] -> [a]
13:42:57 <lambdabot> Data.List dropWhile :: (a -> Bool) -> [a] -> [a]
13:42:57 <lambdabot> Prelude filter :: (a -> Bool) -> [a] -> [a]
13:43:07 <elliott_> Deewiant: I bet that's some fancy applicative construction
13:43:28 <ais523> @hoogle [a -> Int] -> [a] -> [[a]]
13:43:28 <lambdabot> GHC.Exts groupWith :: Ord b => (a -> b) -> [a] -> [[a]]
13:43:28 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
13:43:28 <lambdabot> GHC.Exts sortWith :: Ord b => (a -> b) -> [a] -> [a]
13:43:39 <ais523> @hoogle [a -> Integer] -> [a] -> [[a]]
13:43:39 <lambdabot> GHC.Exts groupWith :: Ord b => (a -> b) -> [a] -> [[a]]
13:43:40 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
13:43:40 <lambdabot> GHC.Exts sortWith :: Ord b => (a -> b) -> [a] -> [a]
13:43:48 <ais523> none of those are what I want
13:43:56 <ais523> wait, why the square brackets?
13:44:00 <ais523> @hoogle (a -> Integer) -> [a] -> [[a]]
13:44:01 <lambdabot> GHC.Exts groupWith :: Ord b => (a -> b) -> [a] -> [[a]]
13:44:01 <lambdabot> GHC.Exts sortWith :: Ord b => (a -> b) -> [a] -> [a]
13:44:01 <lambdabot> Prelude map :: (a -> b) -> [a] -> [b]
13:44:16 <Deewiant> elliott_: What is that supposed to do
13:44:19 <ais523> elliott_: I mean, in /my/ query
13:44:40 <elliott_> > let finds fs (x:xs) = map (++ finds fs xs) $ map (\f -> if f x then [x] else []) fs in finds (map (==) [0..]) [0..]
13:44:41 <lambdabot> Occurs check: cannot construct the infinite type: t = [t]
13:45:31 <ais523> elliott_: what's the Haskell to copy-replace the nth element of a list?
13:45:39 <Deewiant> > let finds fs (x:xs) = concatMap (++ finds fs xs) $ map (\f -> if f x then [x] else []) fs in finds (map (==) [0..]) [0..]
13:45:47 <ais523> elliott_: even lazily?
13:45:59 <ais523> or, well, apply a function to the nth element of a list
13:46:02 <elliott_> ais523: yeah, laziness is a magic bullet that makes slow things super-fast
13:46:03 <ais523> keeping the rest of the list the same
13:46:10 <elliott_> you still pay for it in the thunks
13:46:17 <elliott_> but more importantly, you don't index lists
13:46:26 <elliott_> if you're indexing lists a lot, you've done something awful
13:46:28 <ais523> what do you index, instead?
13:46:34 <ais523> it was going to be a pretty short list
13:46:43 <ais523> Deewiant: Haskell has arrays?
13:47:00 <elliott_> ais523: no. haskell is a toy language
13:47:13 <elliott_> everyone writes their performance-critical haskell code with singly-linked lists
13:48:07 <ais523> meh, I'm the sort of person who'd prefer the code to be expressed as lists and the compiler to figure out how to optimize that
13:48:20 <elliott_> yes, you're the sort of person whose programs don't run within acceptable time limits
13:48:40 <ais523> why should it be the programmer's responsibility to make basic data structures work quickly?
13:48:45 <lambdabot> Not in scope: data constructor `MaxBound'
13:48:52 <lambdabot> Ambiguous type variable `a' in the constraints:
13:49:50 <Vorpal> CakeProphet, no it isn't
13:49:56 <Vorpal> CakeProphet, it would have been if 32-bit, sure
13:50:18 <CakeProphet> Vorpal: what if I want ALL MEMORY in my array?
13:50:58 <Vorpal> CakeProphet, then run it locally on a 128-bit system?
13:51:24 <ais523> OK, so students seem to have found a way to cheat
13:51:38 <ais523> they're using the FFI to access the standard libraries without having to mention their names
13:51:49 <ais523> and thus getting around the restriction on which modules they're allowed to use
13:51:54 <ais523> that's nicely creative, I guess?
13:52:23 <Vorpal> ais523, why would you allow access to the FFI in the first place in that context?
13:52:40 <ais523> Vorpal: well, because it doesn't do anything that was blacklisted
13:52:48 <ais523> this is always the danger with blacklisting-based security
13:53:01 <ais523> I'm glad I have a whitelisting-based security too, on the syscalls that can be used
13:53:07 <ais523> elliott_: I'd let it pass, only the answer was wrong
13:53:16 <ais523> people are trying to miss the point of the question by converting the lists of digits to strings
13:53:16 -!- sebbu2 has changed nick to sebbu.
13:53:27 <ais523> my testsuite gets around that by giving them lists that don't fit into ints
13:53:34 <elliott_> ais523: are these master's students or
13:53:55 <elliott_> ais523: :( how am i ever gonna get that cool that quickly
13:53:57 <Vorpal> ais523, I used qsort() to answer a badly worded "implement a sorting algorithm" assignment. It passed with a note along the lines of "nice trick, will change the wording for the next year"
13:53:59 <elliott_> i better read up on ocaml's ffi
13:54:15 <ais523> elliott_: well, they're just using "external" declarations
13:54:22 <ais523> I'm not sure if that's FFI or someting else, but it looks FFIish
13:54:46 <elliott_> and the stdlibs appear to be conveniently defined with them
13:54:48 <Vorpal> ais523, note that the assignment was in python, so it involved FFI as well
13:54:54 -!- saahil has joined.
13:55:17 -!- saahil has left.
13:55:18 <fizzie> I put a custom bignum implementation in one of the weekly exercises of the C course; and other assorted curiosities, like Blowfish in the one which suggested ROT-13 for "encryption"; and no-one ever commented on them at all. :(
13:55:23 <ais523> Vorpal: wait, you used /C/'s qsort to answer a Python question?
13:55:41 <ais523> fizzie: that's a sign of overengineering in protest at the question
13:55:54 <Vorpal> ais523, yes because the FFI (ctype I think? Or some other FFI bit of python, forgot which one) capabilities weren't blacklisted
13:56:11 <fizzie> ais523: It's also/instead a sign of too much free time, perhaps.
13:56:11 <Vorpal> ais523, anyway I was bored when I did that. Got to have some fun
13:56:15 <elliott_> hmm, does curl do persistent connections?
13:56:20 * ais523 compare [1; 0; 7; 3; 7; 4; 1; 8; 2; 5] [1; 0; 7; 3; 7; 4; 1; 8; 2; 3]
13:56:35 <ais523> not so much you can do to catch out people who are converting to an integer in a list-of-digits comparison question
13:56:49 <ais523> but those are either side of OCaml's MAXINT, which should
13:57:19 <ais523> (the students who fail on that testcase will get feedback telling them that that's the testcase they failed on, which might clue them in as to what they're doing wrong)
13:57:36 <Vorpal> ais523, there was another python assignment where I handed in two versions: A pure python one and a cython one. Then pointed out that python was very unsuitable for a game AI using alpha-beta pruning based on the maximum ply-depths that could be achieved by the respective versions.
13:58:24 <Vorpal> well for interactive use that is
13:58:32 <Vorpal> I think it was like 5 and 7, or such
13:59:28 <elliott_> ais523: hmm, are you writing this thing to try and fill some byzantine rule that says you have to be completely objective about your marking? I wouldn't put it past you :)
13:59:49 <ais523> elliott_: no, I'm writing it because marking thousands of submissions by hand would take far too long
13:59:59 <ais523> and get very boring, and I'd probably make mistakes
13:59:59 <elliott_> ais523: that's much more boring
14:00:32 <Vorpal> ais523, how many students are taking that class?
14:00:36 <elliott_> ais523: if they get testcase feedback, can't they just hardcode your testcases like anagolf? :)
14:01:13 <ais523> elliott_: they get feedback on some but not all of the test cases
14:01:30 <ais523> that was inspired by anagolf
14:01:30 <ais523> (i.e. if their program works on the first n but fails on the n+1th and n is large enough, they don't get told what they did wrong)
14:03:19 <CakeProphet> hmmm why is tree not installed by defalt in ubuntu?
14:03:37 <ais523> yay, my marking script handled the change to DST correctly
14:03:49 <elliott_> hmm, I wonder whether downloading in parallel will pay off
14:03:52 <ais523> (I put extra effort into making sure it did timezone math right)
14:04:00 <elliott_> probably not, HTTP pipelining should take care of any overhead for the small files
14:04:16 <Vorpal> elliott_, if they are from different hosts, sure
14:04:43 <Vorpal> elliott_, iirc aptitude downloads in parallel if the packages come from different hosts, like the main repo mirror and a PPA
14:04:59 <elliott_> I'm probably worrying too much about this package manager's download experience :) but I sure do hate every existing package manager's handling of that
14:05:03 <Vorpal> but in serial if from a single host
14:05:07 <elliott_> I'm pretty sure pacman doesn't use persistent http requests at all
14:05:13 <elliott_> it has a noticeable pause between downloading tiny tiny files
14:05:18 <ais523> hilariously, Evolution linked the second .
14:05:32 <elliott_> Vorpal: eh, that sounds rare enough for me to not care
14:05:45 <elliott_> Vorpal: the most likely scenario would be getting some binary packages from another repo that depend on stuff in the main report
14:05:50 <Vorpal> elliott_, well, the main mirror I use maxes out my connection anyway
14:05:52 <elliott_> Vorpal: I'll just group by repo so it does it as two concentrated downloads
14:06:02 <ais523> elliott_: upgrading some packages from -proposed and some from -security?
14:06:08 <elliott_> Vorpal: I'll probably do the equivalent of "apt-get update" in very-parallel,t hough
14:06:18 <elliott_> since that's a large number of small files
14:06:33 <fizzie> I was rather happy that the phone alarm clock, when setting an alarm across the DST boundary on Saturday evening, managed to correctly calculate the "HH:MM before next alarm" info-text it shows.
14:06:38 <Vorpal> elliott_, well it was for update, I think I have the bzr PPA and got an upgrade to that and to the main repo at the same time, thus noticed this
14:07:08 <elliott_> I'll probably just encapsulate this so I can add fancy parallel logic later :P
14:08:12 <CakeProphet> elliott_: if you have multiple cores I would think utilizing parallel would generally payoff
14:08:16 <elliott_> ais523: you'll be pleased to know I'm using INTERCAL version numbers as the pathological test case for my version handling in my package manager
14:08:19 <CakeProphet> unless the program itself is written to utilize multiple cores.
14:08:22 <elliott_> CakeProphet: ...for a download?
14:08:28 <ais523> elliott_: you told me that already
14:08:41 <ais523> well, you did with inst
14:08:47 <CakeProphet> elliott_: THE CPU ISN'T ASKING FAST ENOUGH
14:08:47 <ais523> and I'm assuming the package manager's basedo n that
14:09:11 <Vorpal> <elliott_> MORE CPUS MORE BROADBAND <-- only in uplink.
14:09:22 <elliott_> ais523: anyway, inst didn't actually do any version number handling
14:09:29 <elliott_> ais523: I have to decide which version numbers are bigger than others
14:09:49 <elliott_> ais523: I think it can handle INTERCAL versions perfectly, it'll just need to take them in reversed form (as an internal field; the user will still see the true version number in the UI)
14:10:44 <ais523> elliott_: Debian's version is to use version sort (i.e. contiguous numbers sorting as numbers, otherwise sorting alphabetically), with ~ being lexicographically negative
14:10:50 <ais523> that is, 0.1~alpha1 sorts before 0.1
14:10:52 <Vorpal> elliott_, wait isn't there some program that have the version counting down?
14:10:52 -!- derrik has quit (Quit: left).
14:11:14 <elliott_> Vorpal: That can be represented as -n
14:11:16 <ais523> err, perhaps it actually sorts before 0.05 too
14:11:23 <ais523> otherwise, you have the 0.9 0.10 problem
14:11:39 <ais523> leading 0s on a component part would imply it's meant to be interpreted as a decimal, though…
14:11:53 <elliott_> ais523: I'm going to do something like: Map minus sign to "pre"; split into components (on "."); sort components as list, where each individual component is done numerabetically
14:11:59 <Vorpal> ais523, I will make a package that uses fractions for the version number
14:12:23 <elliott_> ais523: I'm going to do something like: Map minus sign to "pre"; split into components (on "."); sort components as list, where each individual component is done numerically, with any letter on the end becoming the first digit
14:12:31 <elliott_> nix gets it almost right, anyway
14:12:39 <ais523> elliott_: distinguish 0.5-1 from 0.5.-1
14:12:40 <elliott_> ais523: point is, 3.1a is older than 3.1
14:12:52 <Vorpal> elliott_, ooh another idea for screwy version number: foo-|1+2i|
14:12:54 <ais523> elliott_: 0.5, patchlevel 1
14:12:54 <elliott_> that looks like a package revision number thing
14:12:59 <elliott_> which isn't part of the version in my system
14:13:08 <ais523> well, it might be part of someone else's version numbre
14:13:51 <ais523> Just about all females often feel that exactly why all Hollywood stars common maintain its brightness as Tom in spite of frantic operate routine and large operate pressure from the skin. What do you think that they have got sufficient time to observe all attractiveness strategies and tips that his grandmother utilized to abide by?
14:14:23 <ais523> we have two different spambots atm; one posts coherently, the other is a markovbot
14:14:24 <fizzie> Version numbers of the form e^(in), with 'n' incrementing -- because it's all cyclic, man. Far out.
14:14:30 <ais523> but they both have pretty similar content apart from that
14:14:37 <ais523> I'm beginning to wonder if one spambot is using the other as input
14:16:08 <Vorpal> fizzie, problem is distros are going to just use n for the version number there
14:16:14 <elliott_> `addquote <ais523> Just about all females often feel that exactly why all Hollywood stars common maintain its brightness as Tom in spite of frantic operate routine and large operate pressure from the skin. What do you think that they have got sufficient time to observe all attractiveness strategies and tips that his grandmother utilized to abide by?
14:16:16 <HackEgo> 706) <ais523> Just about all females often feel that exactly why all Hollywood stars common maintain its brightness as Tom in spite of frantic operate routine and large operate pressure from the skin. What do you think that they have got sufficient time to observe all attractiveness strategies and tips that his grandmother utilized to abide by?
14:16:21 <Vorpal> fizzie, you have to make that impossible somehow
14:16:42 <ais523> elliott_: it's really <spambot>
14:16:49 <elliott_> ais523: yes, but that's less baffling
14:17:09 <ais523> well, people know it's me and Keymaker who deal with the spam, and Keymaker rarely comes here
14:17:14 <fizzie> Vorpal: Well... you could do the TeX "converges into an irrational number" thing, except make it converge as (sin x)/x (take the minima and maxima) or something, so that it wobbles up and down, not monotonically like "always add one digit" does.
14:17:15 <ais523> so it's not a hard inference that I was quoting a spambot
14:17:54 <ais523> Debian got caught out beautifully by C-INTERCAL 1.28
14:18:05 <ais523> as they used the version number literally before realising what they'd done wrong
14:18:17 <ais523> (it should have been sanitised to 0.28.1 at that point)
14:18:22 <Vorpal> ais523, so how did they solve it?
14:18:24 <ais523> (but they didn't catch it)
14:18:29 <ais523> Vorpal: the next version number was 29:0.2
14:18:44 <ais523> which is a complete abuse of the epoch field, and the packaging guidelines specifically say not to do that
14:18:49 <elliott_> ais523: this is why you use Kitten's package manager; you can just define the ordering version as a /function/ of the actual version
14:18:56 <Vorpal> ais523, well, what options did they have at that point?
14:19:05 <ais523> Vorpal: 1:0.29 would be correct
14:19:24 <Vorpal> so why didn't they do that then hm
14:19:46 <Vorpal> ais523, what was the clc numbering now again?
14:20:11 <elliott_> ais523: order_version = reverse (version_components version)
14:20:14 <ais523> Vorpal: it's just like regular numbering; it sorts lexicographically by component
14:20:22 <elliott_> ais523: see???? SO MANY ADVANTAGES
14:20:28 <ais523> it's just that the components can potentially be negative
14:20:32 <ais523> elliott_: what if you don't know Haskell?
14:20:43 <elliott_> ais523: have you ever /seen/ a Debian package?
14:21:29 <ais523> elliott_: I've even /made/ a Debian package
14:21:37 <ais523> no Haskell knowledge required
14:21:54 <ais523> hmm, how do you install ghci on Gentoo, where you can't bootstrap it with a binary?
14:21:56 <elliott_> ais523: good thing my quoted snippet wasn't Haskell either, then
14:22:04 <elliott_> ais523: but seriously, Debian packages are impossible to read
14:22:13 <elliott_> you might have "made" one with automated tools, but they're unmaintainable binary blobs themselvse
14:22:13 <ais523> elliott_: I don't have much problems reading them
14:22:20 <elliott_> except that people actually have to maintain them
14:22:25 <ais523> and no, they aren't binary blobs
14:22:28 <elliott_> ais523: I take it you've never looked at the gcc package's debian directory
14:22:31 <ais523> they're binary, but it's just a standard tarball
14:23:20 <ais523> yep, I deleted my gcc Debian source package as it was taking up too much space
14:24:41 <Vorpal> <ais523> hmm, how do you install ghci on Gentoo, where you can't bootstrap it with a binary? <-- you bootstrap it with a binary
14:25:25 <Vorpal> ais523, or even use a binary package version. They provide that for a few things, like openoffice, firefox, thunderbird, ghc. Where compiling takes ages and/or is a PITA
14:26:04 <ais523> there seems something so wrong about binary packages in Gentoo
14:26:29 <elliott_> hmm, I think http-enumerator is my best bet
14:26:32 <elliott_> even if it has 389573489573894578934578934534789545 dependencies
14:26:38 -!- tiffany has joined.
14:26:57 <Vorpal> ais523, well, you have to start out with a boot strap environment too. Which is a binary download. So you can build your own environment from that point
14:27:41 <ais523> I vaguely assumed you bootstrapped it from your previous OS
14:27:56 <Vorpal> ais523, nah, that is LFS
14:28:09 <ais523> hmm, wasn't someone talking in here a while back about a script that downloaded the book about LFS and parsed it for the commands it needed to run?
14:28:22 <ais523> I was wondering if it used OCR, that'd be even more hilarious
14:28:41 <Vorpal> ais523, gentoo gives you a manual that tells you to run fdisk and mkfs and so on as required, then mount it somewhere and unpack a stage3.tar.gz with some flags to preserve permissions properly
14:28:45 <Vorpal> then you chroot into that
14:28:57 <Vorpal> and run various commands
14:29:03 <Vorpal> usually done from a livecd
14:29:16 <Vorpal> could be done from another installed linux system, sure
14:29:31 <elliott_> <ais523> hmm, wasn't someone talking in here a while back about a script that downloaded the book about LFS and parsed it for the commands it needed to run?
14:29:48 <Vorpal> ais523, the book is some HTML pages, no need for OCR
14:30:24 <Vorpal> oh maybe the html pages are generated from that
14:30:57 <elliott_> httpRedirect :: (MonadIO m, Failure HttpException m) => Request m -> (Status -> ResponseHeaders -> Iteratee ByteString m a) -> Manager -> Iteratee ByteString m a
14:32:22 <Vorpal> elliott_, btw I'm pretty sure you can get wget to pipeline requests (or at least reuse the connection) by giving it several files on the command line
14:32:29 <elliott_> yes, I'm sure curl does that too
14:32:31 <Vorpal> I remember doing so at some point
14:32:39 <Vorpal> might have been recursive mode though
14:40:50 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:40:50 <Sgeo|web> main = attermptToStopAnIdiotFromDying
14:40:52 <Vorpal> Phantom__Hoover, I now hold the last discworld book in my hand :)
14:41:12 <elliott_> I suppose it's gotta be close to
14:41:33 <elliott_> wonder when he'll take the plunge
14:44:05 -!- Sgeo|web_ has joined.
14:46:34 <elliott_> I am getting quite bored of typing n
14:47:42 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
14:48:40 <elliott_> Deewiant: This is why people are wary of dependencies:
14:48:42 <elliott_> warning: the following (2) packages will be installed by pacman: haskell-utf8-string haskell-zlib
14:48:42 <elliott_> Targets (32): haskell-semigroups-0.8-1 haskell-primitive-0.3.1-18 haskell-tagged-0.2.3.1-1 haskell-largeword-1.0.1-1 haskell-entropy-0.2.1-1 haskell-zlib-bindings-0.0.1-1 haskell-vector-0.7.1-18 haskell-cryptohash-0.7.3-1 haskell-base-unicode-symbols-0.2.2.1-1 haskell-dlist-0.5-18 haskell-cryptocipher-0.2.14-3 haskell-crypto-api-0.6.4-4 haskell-cereal-0.3.3.0-18 haskell-hashable-1.1.2.1-1 haskell-zlib-enum-0.2.1-22 haskell-tls-extra-0.3.1-4 haskell-tls-
14:48:42 <elliott_> 0.7.2-4 haskell-monad-control-0.2.0.3-1 haskell-http-types-0.6.5.1-3 haskell-failure-0.1.0.1-18 haskell-enumerator-0.4.14-1 haskell-data-default-0.3.0-1 haskell-cprng-aes-0.2.1-23 haskell-certificate-0.9.1-4 haskell-case-insensitive-0.3.0.1-1 haskell-blaze-builder-enumerator-0.2.0.3-1 haskell-blaze-builder-0.3.0.1-18 haskell-base64-bytestring-0.1.0.3-1 haskell-attoparsec-enumerator-0.2.0.4-22 haskell-attoparsec-0.9.1.2-1 haskell-asn1-data-0.5.1-22 haske
14:49:06 <ais523> why are those dependencies needed?
14:50:07 <elliott_> OTOH you're unlikely to get me to agree with your "it's easier to rewrite any library than to use it" stance either, so it's probably pointless expressing it
14:50:40 <ais523> elliott_: "any library" is wrong, there
14:50:49 <ais523> it depends on exactly what you're doing
14:51:23 <Deewiant> Looks like trifecta's dependency list
14:51:37 <elliott_> Deewiant: At least this one is flattened out
14:51:48 <elliott_> Deewiant: With trifecta you at least have the guarantee that 90% of them are by the same person
14:52:40 <elliott_> I've been sitting at this install prompt for ten minutes wondering whether to say y or not
14:52:51 <Deewiant> Where'd you get those dependencies from
14:53:32 <elliott_> It has a simpler API than the HTTP package and I can't figure out how to do streaming downloads with the latter
14:55:53 <Phantom__Hoover> <Vorpal> Phantom__Hoover, I now hold the last discworld book in my hand :)
14:56:11 <ais523> elliott_: oh right, I thought you meant those dependencies were on utf8-string and zlib
14:56:14 <ais523> and I was wondering why
14:56:22 <ais523> as in, from utf-8 and zlib
14:56:41 <Phantom__Hoover> Do you order a book, and half an hour later a missile slams into your front garden and there's a book in it.
14:59:51 <elliott_> Dependenciesasn1-data (≥0.5.1 & <0.7), attoparsec (≥0.8.0.2 & <0.10), attoparsec-enumerator (≥0.2.0.4 & <0.3), base (4.*), base64-bytestring (0.1.*), blaze-builder (≥0.2.1 & <0.4), blaze-builder-enumerator (0.2.*), bytestring (≥0.9.1.4 & <0.10), case-insensitive (≥0.2 & <0.4), certificate (≥0.7 & <1.1), containers (≥0.2 & <0.5), cprng-aes (0.2.*), data-default (0.3.*), enumerator (≥0.4.9 & <0.5), failure (0.1.*), http-types (0.6.*), m
14:59:51 <elliott_> onad-control (0.2.*), network (≥2.2.1 & <2.2.3), network-bytestring (0.1.3.*), tls (≥0.8.1 & <0.9), tls-extra (≥0.3 & <0.5), transformers (0.2.*), utf8-string (≥0.3.4 & <0.4), zlib-enum (0.2.*) or
14:59:51 <elliott_> asn1-data (≥0.5.1 & <0.7), attoparsec (≥0.8.0.2 & <0.10), attoparsec-enumerator (≥0.2.0.4 & <0.3), base (4.*), base64-bytestring (0.1.*), blaze-builder (≥0.2.1 & <0.4), blaze-builder-enumerator (0.2.*), bytestring (≥0.9.1.4 & <0.10), case-insensitive (≥0.2 & <0.4), certificate (≥0.7 & <1.1), containers (≥0.2 & <0.5), cprng-aes (0.2.*), data-default (0.3.*), enumerator (≥0.4.9 & <0.5), failure (0.1.*), http-types (0.6.*), monad-control
14:59:55 <elliott_> (0.2.*), network (2.3.*), tls (≥0.8.1 & <0.9), tls-extra (≥0.3 & <0.5), transformers (0.2.*), utf8-string (≥0.3.4 & <0.4), zlib-enum (0.2.*)
15:00:02 <elliott_> Deewiant: Challenge: Figure out what essential difference the "or" is expressing
15:00:58 <elliott_> I couldn't figure it out at all
15:01:04 <ais523> Phantom__Hoover: where did I imply that?
15:03:09 <elliott_> ais523: hmm... log out of nickserv for a minute
15:03:25 <ais523> that's quite a suspicious request
15:03:32 <elliott_> ais523: so I can do nefarious things, duh
15:03:45 <elliott_> error: target not found: haskell-data-default=0.3.0
15:03:52 <elliott_> Deewiant: Bonus: The package is broken
15:03:58 <Deewiant> elliott_: This is why I use cabal-install
15:04:07 <elliott_> Deewiant: This is the first time it's broken :P
15:04:16 <Deewiant> elliott_: Well, it broke once for me and that was enough
15:04:30 <elliott_> Deewiant: Have I mentioned that Kitten's package manager completely avoids this problem
15:04:45 <ais523> wow, those are specific version number ranges
15:04:56 <ais523> elliott_: if it can't solve Sudoku, it's no good at solving version clashes
15:05:02 <Deewiant> elliott_: Because of this hackage2arch business (or whatever it was called), people just make packages all willy-nilly and then when somebody updates, if nobody else does, the dependers get screwed
15:05:19 <elliott_> Deewiant: Actually no, all the AUR packages are managed by one group
15:05:31 <elliott_> Deewiant: But they're slower than the core repos at dependencies, apparently
15:05:39 <elliott_> So they end up depending on older versions than the core repos have to offer
15:05:40 <Deewiant> elliott_: I've had intra-AUR-conflicts
15:05:59 <elliott_> Deewiant: Have I mentioned Kitten avoids this problem
15:06:07 <Deewiant> What prevents anybody from uploading their own haskell-this-is-my-library-haha?
15:06:10 -!- copumpkin has joined.
15:06:16 <Deewiant> elliott_: Let me know when it's done and working
15:06:32 <elliott_> <ais523> elliott_: if it can't solve Sudoku, it's no good at solving version clashes
15:06:41 <elliott_> ais523: nah, you just don't need to solve them in the first place
15:06:48 <elliott_> <ais523> wow, those are specific version number ranges
15:07:58 <Deewiant> The package versioning policy needs a way of specifying a version range that allows for adding new (non-instance) things to a module
15:08:00 <elliott_> Deewiant: Hmm, I appear to be relatively fucked in terms of getting this library working at this juncture
15:08:40 <elliott_> haskell-ansi-terminal 0.5.5-18
15:08:42 <elliott_> haskell-transformers 0.2.2.0-3.1
15:08:53 <elliott_> Deewiant: That's a whole... two libraries I would have to install!! Also everything would break horribly.
15:09:34 <Deewiant> Things might not break at all depending on the precise situation
15:09:50 <Deewiant> But, if they would: go back to the wild west and cabal-install everything
15:09:51 <elliott_> Deewiant: Let me rephrase that for you: I might get lucky :)
15:10:16 <Deewiant> I think it's more a case of not getting unlucky
15:10:24 <elliott_> Deewiant: BTW, re: "Let me know when it's done and working", what do you think I'm attempting to install dependencies for my work on right now :)
15:10:55 <Deewiant> So you're working on it, great; let me know when it's done and working
15:13:22 -!- derrik has joined.
15:20:51 -!- ais523_ has joined.
15:21:01 -!- Darth_Cliche has joined.
15:21:38 -!- ais523 has quit (Ping timeout: 240 seconds).
15:21:41 -!- ais523_ has changed nick to ais523.
15:24:20 -!- sebbu has quit (Read error: Connection reset by peer).
15:27:38 -!- sebbu has joined.
15:27:38 -!- sebbu has quit (Changing host).
15:27:38 -!- sebbu has joined.
15:34:11 -!- derdon has quit (Remote host closed the connection).
15:40:15 <elliott_> [elliott@dinky isolate]$ cabal install ansi-terminal http-enumerator
15:48:23 <Phantom__Hoover> I think the way Kate Beaton draws babies may be the greatest work of art the world has yet known
15:50:57 -!- tiffany has quit (Ping timeout: 258 seconds).
15:52:23 -!- tiffany has joined.
15:53:09 <Phantom__Hoover> Oh god no matter how many times I read Hark! A Vagrant it never gets old.
15:54:31 -!- monqy has joined.
16:01:37 -!- ais523_ has joined.
16:02:06 -!- ais523 has quit (Disconnected by services).
16:02:08 -!- ais523_ has changed nick to ais523.
16:26:23 <Phantom__Hoover> Huh, the Darwin Awards exclude people with mental disorders.
16:26:29 -!- ais523 has quit (Ping timeout: 248 seconds).
16:26:46 <Phantom__Hoover> I like how that basically makes it completely explicit that it's all just a front for being sneering assholes.
16:26:56 -!- ais523 has joined.
16:28:25 <elliott_> Phantom__Hoover: To be fair, it wouldn't exactly make them less of a front for being sneering assholes if they included those people.
16:28:49 <elliott_> They're kind of fucked whatever they do, which is usually a Sign(tm).
16:29:07 <Phantom__Hoover> elliott_, erm, the premise that it's for people who removed themselves from the gene pool due to poor judgement would at least be /sound/.
16:30:46 <Phantom__Hoover> I also found it quite amusing when the woman who runs the site herself nearly DA'ed herself and acted like it was fine because it was a near miss.
16:32:18 -!- ais523 has quit (Ping timeout: 260 seconds).
16:34:12 -!- boily has quit (Read error: Operation timed out).
16:37:55 <elliott_> `addquote <Phantom__Hoover> (I'm not really sure what that explains but nor am I sure what I'm explaining, so it cancels out.)
16:37:58 <HackEgo> 707) <Phantom__Hoover> (I'm not really sure what that explains but nor am I sure what I'm explaining, so it cancels out.)
16:43:09 -!- Gregor has set topic: Friends don't let friends Comic Sans. | EPL evening school assignments! http://tinyurl.com/5stnu5n | It's the end of an era | RIP John McCarthy) | TO SHREDS!) | http://codu.org/logs/_esoteric/.
16:43:35 <elliott_> http://en.wikipedia.org/wiki/Chunked_transfer_encoding
16:43:41 <elliott_> How am I meant to implement a progress bar now?
16:44:25 <elliott_> progress.hs: StatusCodeException 403 (Chunk "Scripts should use an informative User-Agent string with contact information, or they may be IP-blocked without notice.\n" Empty)
16:44:32 <elliott_> Wow Wikipedia, that's very impolite.
16:44:39 <elliott_> Gregor: I can use codu.org logs as a test URLspam location right
16:45:32 -!- sllide has joined.
16:46:52 <Phantom__Hoover> Gregor, have I mentioned that I wrote my folio essay for English on how Comic Sans was awful.
16:47:43 <Gregor> You know what would have gotten you an A? *trollface*
16:47:49 <Gregor> IF YOU HAD WRITTEN IT IN COMIC SANS
16:48:29 <Phantom__Hoover> Nah, the folio was only worth ~20% of the total marks and it was divided into two essays.
16:52:01 <elliott_> [elliott@dinky isolate]$ curl -I http://codu.org/logs/log/_esoteric/2011-10-19
16:52:01 <elliott_> Date: Fri, 04 Nov 2011 16:51:55 GMT
16:52:01 <elliott_> Server: Apache/2.2.21 (Debian)
16:52:04 <elliott_> Content-Type: text/html; charset=UTF-8
16:52:08 <elliott_> Gregor: What's with the lack of Content-Length; why do you hate America
16:52:51 <Gregor> But more specifically, it generates the HTML and spits it out live *shrugs*
16:52:58 <Gregor> And I was too lazy to buffer just to count.
16:53:21 -!- boily has joined.
16:53:41 <elliott_> Gregor: Oh, it's node.js, isn't it :P
16:53:52 <elliott_> Land of the "what the fuck is abstraction, you're dealing with HTTP yourself".
16:54:14 <elliott_> Aha, the raw logs get it right :P
16:54:25 <Phantom__Hoover> Gregor, the glogbot rsync stuff seems to be 'broken' again.
16:54:31 <Gregor> Phantom__Hoover: Uhh ... no?
16:54:58 <Gregor> Phantom__Hoover: E_WORKSFORME
16:54:59 <elliott_> WHAT ARE YOU TRYING TO EXPRSES >_<
16:55:13 <Gregor> elliott_: <elliott_> Land of the "what the fuck is abstraction, you're dealing with HTTP yourself". // no.
16:55:36 <elliott_> Gregor: You can hardly call node.js' API high-level :P
16:57:38 <Gregor> elliott_: Node's API for /what/? For actually running an HTTP server? Or for just generating pages? 'cuz the latter is, y'know, CGI.
16:58:04 <elliott_> Gregor: Uhh, I don't think you're meant to use its CGI stuff if you want to be Best Practices Web Scale (tm) :P
16:58:34 <Gregor> elliott_: Yeah, I definitely need a separate web server to gen logs now and then.
16:58:53 <elliott_> Gregor: I'm not saying it's required, I'm just saying that it's hardly a typical use of Node :P
17:00:07 <Gregor> elliott_: You're totally right that stalker mode should have a talk function.
17:00:28 <Gregor> <glogbot> An anonymous coward says: WHY HALLO THAR
17:00:36 <elliott_> ...Don't build it into glogbot :P
17:00:47 <elliott_> It's meant to be MORE stable than clog :P
17:01:09 <Gregor> * glogannoyingchatterbot has joined #esoteric \ <glogannoyingchatterbot> WORST IMPLEMENTATION EVER? \ * glogannoyingchatterbot has parted #esoteric
17:01:29 <elliott_> Gregor: It would be sooo hard to add another bot :P
17:01:36 <elliott_> You don't have a premade library for that or anything.
17:02:15 <Gregor> I think there are maybe two channels in the history of IRC that are -n :P
17:03:14 <elliott_> Gregor: -minecraft is one of 'em :P
17:03:30 <elliott_> Anyone can talk, but NOBODY CAN KNOW OF ITS EXISTENCE.
17:04:57 <CakeProphet> elliott_: I hope your mother regrets having birthed you. :P
17:05:55 <Phantom__Hoover> :) is the "I desperately need to be punched in the face several times" one.
17:05:59 <Gregor> Gregor's theory of :P is that :P is valid for all circumstances :P :P :P
17:06:15 <Gregor> CakeProphet: Post-punching.
17:06:43 <lambdabot> Data.Sequence (:>) :: Seq a -> a -> ViewR a
17:07:46 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
17:08:08 <elliott_> Gregor: Rharaeraerhgaehwegh why does your HTTP server not send Content-Length /only/ to the Haskell lib
17:08:33 <fungot> CakeProphet: and it's self-modifying techniques." stop immobilizes and disables you. in these bones, i shall return! by the way, the wings! now this is a way to the ocean palace? come to see you back again
17:09:22 <elliott_> Gregor: I think this library is actually TRYING to get a chunked response whenever possible :P
17:10:03 <CakeProphet> fizzie: your bot doesn't let me spam its name in privmsg and get fungotspeak
17:10:36 <elliott_> <fungot> elliott_: to. why, this is for you guys are a lot
17:10:36 <fungot> elliott_: so, let's say i call them mindless games. if we hit every stupid person, any person going, tough one. if we solve it,... i know...
17:10:52 <fungot> Gregor: it's what that guy in medina, a village near the mystic mountain" 65,000,000 b. c.? yes, i'd have done something very brave? fnord 06:22, 29, no. 2, 2, 3, 4, 8, 13, 1(::**) ...bad insn!
17:11:03 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
17:11:10 <fungot> Selected style: sms (National University of Singapore SMS corpus, 2011-08-20)
17:11:17 <fungot> Gregor: i want to sent mesages. but u'l talk
17:11:53 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
17:11:57 <elliott_> fungot: That sword alone can't ____, solve for ____.
17:11:58 <fungot> elliott_: your name is, i am just as confused. emerging from the trials in the brooding. enjoy a bevverage to me or about my fuckin manners for the roof. you have given yourself a very official?
17:12:08 <elliott_> fungot: Wrong! You have three guesses remaining.
17:12:09 <fungot> elliott_: john, the uncarved minitablet. john carved this tablet at the request. it's just a wrapper for your private reading material later
17:12:13 <elliott_> fungot: Wrong! You have two guesses remaining.
17:12:14 <fungot> elliott_: really, it it is pretty conceivable that i was about to get blown up! :o)
17:12:18 <elliott_> fungot: Wrong! You have one guess remaining.
17:12:18 <fungot> elliott_: an old colonel lost, but a new brother gained. together they will ascend, each time you must be adventurin'.
17:12:25 <elliott_> fungot: Wrong! You have no guesses remaining. Have a nice day.
17:12:36 <elliott_> See, it shut up like it's supposed to and all.
17:12:44 <monqy> does cakeprophet mean that he can't spam fungot's name because of the shutup
17:12:44 <fungot> monqy: enter name. and a whole other issue.
17:14:10 <CakeProphet> I think :> is this: http://media.tumblr.com/tumblr_lr8cphyXGf1qmiocn.jpg
17:18:16 <elliott_> ACTUALLY it may be: SOMEONE ELSE'S CODE.
17:23:06 <elliott_> monqy: btw try runhaskelling this to be really unnerved by your terminal: http://sprunge.us/IhEb
17:23:11 <elliott_> you will ask... whence... crahrahchters
17:28:20 <elliott_> monqy: it is like a ghost story...... for your terminale.
17:30:17 <Gregor> elliott_: Dah chunky chunks.
17:30:59 <elliott_> OHHHH, those are /record fielsd/
17:31:03 <elliott_> Suddenly this library makes 10x as much sense.
17:31:41 -!- ais523 has joined.
17:34:20 <Gregor> elliott_: Made it buffer and send all at once I think :P
17:34:35 <elliott_> Gregor: ...but this issue is with the raw logs, which you already send content-lengths for...
17:34:39 <elliott_> Just not whenever I use Haskell.
17:34:48 <elliott_> It's literally detecting whether I'm using Haskell or not and punishing me for it.
17:34:59 <Gregor> elliott_: I thought it was the cooked logs :P
17:35:07 <elliott_> It was before I realised that'd never work :P
17:35:11 <elliott_> Testin' progress bars here, y'understand :P
17:35:18 <Gregor> elliott_: Well Idonno why it's chunked.
17:35:34 <elliott_> I suspect this HTTP library is trying to make it be chunked for ~PERFORMANCE~ >_>
17:37:00 <lambdabot> forall a (m :: * -> *) b. (Monad m) => [a] -> (a -> m b) -> m [b]
17:38:35 <elliott_> status418, statusImATeapot :: Status
17:38:46 <elliott_> -- http://hackage.haskell.org/packages/archive/http-types/0.6.6/doc/html/Network-HTTP-Types.html#v:status418
17:39:28 <monqy> apparently for real
17:39:47 <pikhq> Yes, it's part of an April Fool's RFC.
17:39:57 -!- copumpkin has quit (Read error: Connection reset by peer).
17:40:08 <pikhq> Hyper Text Coffee Pot Control Protocol.
17:40:34 <elliott_> it's just so cute that they actually gave it
17:40:40 -!- copumpkin has joined.
17:41:10 <pikhq> Status 418 is, in fact, 418 I'm a teapot.
17:41:21 <pikhq> The HTCPCP server is a teapot; the corresponding entity may be short and stout.
17:41:22 <elliott_> https://github.com/aristidb/http-types/commit/ec22a919f865f68d3da39ccb75f5d78b331606b2
17:41:41 <CakeProphet> 13:40 <fungot> CakeProphet: this is a really hot look for a stronger! this is so outrageous. hell fucking yes a few more things we can deploy but some things we can deploy but some things we can deploy but some things we can deploy but some things we can deploy but some things we can deploy but some things we can
17:41:42 <fungot> CakePrsw}a{~e^is@]i[iped_a/The-Prophet-Wiza:CakeProphet: what the hell was that? but from what i understand if it is applicable in any sphere, with oceans, trees, networks of pipes, the april issue of the serious business application.
17:41:43 <elliott_> thank you mbbx6spp. good person.
17:41:46 <CakeProphet> deploy but some thing we can deploy but some things we can deploy but some things wee can deploy but some things we can deploy bu
17:41:49 <elliott_> fizzie: Another corruption bug
17:42:03 <fungot> monqy: and so it would continue. second, you could have a 8ody again and his little blinking in and out the back in case. you never know with that crazy. conveniently, you can watch what happened right here on the monitor has not lost his copy to save her!
17:42:35 <fungot> elliott_: but, there are imps around, but you don't have a very exciting 24 hours or so. you say you are only here to deliver a message and then i'll put in the hallway. beyond a lot
17:42:39 <elliott_> and never permanently fucks up beyond repair
17:42:47 <elliott_> it's always "goes wack for half a message"
17:42:56 <CakeProphet> befunge is designed for reliable applications.
17:43:08 <fungot> elliott_: and it just might be all three possible codes, yielding a radically exactly the same of you.
17:43:42 <CakeProphet> yielding a radically exactly the same you.
17:43:45 <elliott_> the "yielding radically exactly the same" is a direct qote
17:43:59 <CakeProphet> `log yielding a radically exactly the same you.
17:44:04 <elliott_> http://www.mspaintadventures.com/?s=6&p=002986
17:44:04 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck* ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
17:44:12 <HackEgo> 2011-11-04.txt:17:43:42: <CakeProphet> yielding a radically exactly the same you.
17:44:15 <elliott_> "You get the BETA (3+1+1+1), now yielding a radically different hash value with the Scrabble function.
17:44:15 <elliott_> Which is to say a radically exactly the same value."
17:44:26 <nooga> Objective-C is soo ugly
17:44:33 <nooga> but still better than C++
17:45:32 -!- MSleep has changed nick to MDude.
17:45:40 <elliott_> [("Date","Fri, 04 Nov 2011 17:44:55 GMT"),("Server","Apache/2.2.21 (Fedora)"),("Last-Modified","Tue, 25 Oct 2011 05:21:24 GMT"),("ETag","\"6a6180d-492e2ed-4b018b5e17d00\""),("Accept-Ranges","bytes"),("Content-Length","76735213"),("Content-Type","application/x-bzip2")]
17:46:08 <lambdabot> forall a b. (Eq a) => a -> [(a, b)] -> Maybe b
17:46:11 <CakeProphet> elliott_: I'm having no such luck with Django 1.4
17:46:20 <CakeProphet> perhaps I shouldn't use pre-alpha releases of giant enterprisey things.
17:47:09 <elliott_> does anyone know where i can download a bunch of really small files
17:48:55 <CakeProphet> http://thepiratebay.org/torrent/6554331/Papers_from_Philosophical_Transactions_of_the_Royal_Society__fro
17:49:10 <elliott_> hello-1.3.tar.gz 23-May-1993 03:00 86K
17:49:10 <elliott_> hello-2.7.tar.gz 28-Mar-2011 18:44 586K
17:49:45 -!- boily has quit (Quit: WeeChat 0.3.6).
17:50:02 <pikhq> GNU hello now includes most of gnulib.
17:50:57 <elliott_> hmm, I think I need some kind of task manager to do this
17:50:58 <CakeProphet> elliott_: I love how django is telling me a template file doesn't exist.
17:51:06 <CakeProphet> and then I go to check on my filesystem if it exists at that path
17:51:06 <elliott_> pikhq: this package manager's ui is going to be so sleek, do you have any idea
17:51:26 <elliott_> pikhq: run this program and you will begin to have idea: http://sprunge.us/IhEb
17:53:25 <elliott_> I like how nooga has been fully reduced to just talking about his OS X development life.
17:53:42 <pikhq> elliott_: God damn.
17:53:54 <elliott_> the sleekest of progress bars. the SLEEKEST.
17:53:57 <nooga> elliott_: at least I have a trusted, permanent enemy
17:55:02 <elliott_> pikhq: btw don't ^C that program, you don't get your cursor back :P
17:55:59 <Gregor> elliott_: How do I shot web and/or install System.Console.ANSI?
17:56:23 <elliott_> Gregor: Search "ansi-terminal" in apt-cache
17:56:27 <elliott_> If recent enough Debian there'll be a -dev package
17:56:42 <pikhq> libghc-ansi-terminal-dev did it for me.
17:56:50 <Gregor> elliott_: sid, biatch, sid!
17:57:11 <elliott_> That progress bar has a similar effect on me to w3m's image support.
17:57:26 -!- derdon has joined.
17:57:33 <elliott_> It makes me stare in horror and wonder how you can even fit that many pixels into a glyph.
17:58:02 <Gregor> elliott_: It phails hardcore for me, I'm betting I'm in some weird no-Unicode configuration due to shitty school configuration + SSH :(
17:58:20 <elliott_> Gregor: Yeah, probably best to run it locally :P
17:58:45 <Gregor> elliott_: That is definitely a progress bar.
17:58:59 <Gregor> elliott_: It is extraordinarily difficult to argue with the notion that that is a progress bar.
17:59:02 <elliott_> IT'S MORE PROGRESS BAR THAN TERMINALS WERE MEANT TO DISPLAY
17:59:16 <elliott_> I CANNOT COPE WITH THE NOTION OF A BAR MOVING LESS THAN ONE VT TABLE CELL AT A TIME
17:59:18 <fizzie> "CakePrs€w}a{~e^is@]i[iped_a/The-Prophet-Wiza:CakeProphet: what the hell was that?" <- how appropriate.
17:59:40 <elliott_> Gregor: But yeah, let's see your fancy APT give you progress bars like that!!!!
17:59:49 <nooga> I hate that when you want to replicate GUI of any known app, you have to handcode every fucking single view BECAUSE Apple gives you only button and window ;F
18:00:38 <Gregor> elliott_: Seems you're right about nooga.
18:01:01 <Gregor> `learn nooga hate OS X. NOOGA SMASH.
18:01:38 <elliott_> So is there any known formula for calculating download speeds and download time remaining?
18:01:47 <elliott_> Like, I want something decent, not something that uses Microsoft minutes.
18:01:54 <elliott_> There has to be some fancy formula with weighting and shit :P
18:02:37 <Gregor> There is only failure.
18:03:01 -!- ais523 has quit (Ping timeout: 248 seconds).
18:03:07 <elliott_> http://stackoverflow.com/questions/798800/whats-the-best-way-to-calculate-remaining-download-time
18:03:08 <elliott_> http://stackoverflow.com/questions/2779600/how-to-estimate-download-time-remaining-accurately
18:03:14 <elliott_> Gregor: Ha, I just neeed an EXPONENTIAL MOVING AVERAGE.
18:06:50 <pikhq> Hmm. It occurs to me... I think, in common law jurisdictions, you could actually get away with signing things using a fucking *seal*.
18:07:36 <Gregor> pikhq: You do mean the animal, right?
18:08:06 <pikhq> Gregor: I do not, sadly.
18:09:35 -!- pumpkin has joined.
18:09:47 <pikhq> Oh, wait, I think you could.
18:09:59 <pikhq> A signature is any mark or action that indicates identity and intent.
18:10:07 <pikhq> Brand your seals and you should be good.
18:10:45 -!- pumpkin has changed nick to copumpkin_.
18:10:55 -!- copumpkin has quit (Disconnected by services).
18:10:59 -!- copumpkin_ has changed nick to copumpkin.
18:12:31 <elliott_> @hoogle Integer -> Integer -> Rational
18:12:31 <lambdabot> Data.Ratio approxRational :: RealFrac a => a -> a -> Rational
18:12:31 <lambdabot> Data.Ratio (%) :: Integral a => a -> a -> Ratio a
18:12:31 <lambdabot> Data.Bits (.&.) :: Bits a => a -> a -> a
18:15:52 <pikhq> Hell. I think tattooing something on you would count as a "signature".
18:16:03 <pikhq> Gotta love common law.
18:21:19 <elliott_> pikhq: Gregor: What does Unicode have to offer in the way of fun spinners???
18:22:42 <elliott_> Spinning arrows??? Spinning SNOWMEN??? GOATS???
18:22:53 <elliott_> Pile of poo becoming slowly more and more gross until a dog eats it???
18:23:42 -!- pumpkin has joined.
18:24:01 <Gregor> elliott_: http://www.fileformat.info/info/unicode/char/2196/index.htm and http://www.fileformat.info/info/unicode/char/2197/index.htm tick-tocking like a metronome.
18:24:43 <pikhq> There's actually a large set of arrows.
18:24:59 <elliott_> Gregor: Ooh, these four are promising:
18:25:01 <elliott_> http://www.fileformat.info/info/unicode/char/21b0/index.htm
18:25:02 <elliott_> http://www.fileformat.info/info/unicode/char/21b1/index.htm
18:25:03 <elliott_> http://www.fileformat.info/info/unicode/char/21b2/index.htm
18:25:05 <elliott_> http://www.fileformat.info/info/unicode/char/21b3/index.htm
18:25:31 <elliott_> Except the set isn't complete >_<
18:26:03 <elliott_> What I'd really like is, like, ten rotations of ↺ :P
18:27:04 -!- copumpkin has quit (Ping timeout: 276 seconds).
18:27:47 <elliott_> OMG wait, there's more right blocks than I thought?
18:28:00 -!- pumpkin has changed nick to copumpkin.
18:28:07 <nooga> oh, Apple took that
18:28:46 <pikhq> elliott_: There's a symbol for each phase of the moon.
18:28:50 <pikhq> Note, not in common fonts.
18:29:10 <elliott_> Argh >_< pikhq: What codepoints are these: ▎▍▌▋▊▉
18:29:38 <elliott_> OMG, what if I cycled rapidly through random Braille characters as my spinner.
18:29:43 <pikhq> http://www.fileformat.info/info/unicode/block/block_elements/list.htm
18:29:46 <pikhq> There's the block.
18:29:49 <Gregor> elliott_: That ... is pretty great, actually.
18:29:58 <pikhq> elliott_: Make it binary counting.
18:30:10 <nooga> maybe something Korean? -> http://lcweb2.loc.gov/diglib/codetables/9.3.html
18:30:13 <elliott_> Gregor: I stole that from a Stack Overflow answer >_> But, god damn, that's such an inspired idea :P
18:30:35 <Gregor> elliott_: Similarly you could use some of the "quadrant" blocks in what pikhq just posted.
18:30:49 <elliott_> pikhq: Note how it has all the ones from the left, but only a few from the right
18:30:53 <elliott_> I need to know where the other ones from the right are :P
18:31:41 <elliott_> Someone write a one-liner to cycle through those, I cannot believe it doesn't look cool.
18:32:47 <elliott_> $ while true; do echo -ne '\r◴'; sleep 0.1; echo -ne '\r◷'; sleep 0.1; echo -ne '\r◶'; sleep 0.1; echo -ne '\r◵'; done
18:35:47 <Gregor> elliott_: 's too small I think.
18:38:28 <Gregor> while true; do echo -ne '\r┭'; sleep 0.1; echo -ne '\r┮'; sleep 0.1; done
18:38:57 <Gregor> It's a spinner, viewed on its side :P
18:42:04 <Gregor> while true; do echo -ne '\r\xE2\x96\x9A '; sleep 0.2; echo -ne '\r\xE2\x96\x9E '; sleep 0.2; done Perfection
18:44:44 <nooga> while true; do echo -ne '\r⁘'; sleep 0.2; echo -ne '\r⁙'; sleep 0.2; done
18:45:38 <CakeProphet> .፧ is definitely like .: but with three arguments.
18:45:55 <CakeProphet> except it's not a valid operator character. :(
18:46:10 <Gregor> elliott_: while true; do echo -ne '\r\xE2\x97\xBB\xE2\x97\xBD\xE2\x97\xBD '; sleep 0.1; echo -ne '\r\xE2\x97\xBD\xE2\x97\xBB\xE2\x97\xBD '; sleep 0.1; echo -ne '\r\xE2\x97\xBD\xE2\x97\xBD\xE2\x97\xBB '; sleep 0.1; echo -ne '\r\xE2\x97\xBD\xE2\x97\xBB\xE2\x97\xBD '; sleep 0.1; done
18:46:29 <elliott_> Gregor: Enjoying ourselves? :P
18:46:35 <Gregor> elliott_: Yes, but this one is legit good.
18:46:45 <elliott_> It is, but I can only use something one char wide >__>
18:47:02 <elliott_> Gregor: Because it'll turn into a ✓ once it's done :P
18:48:20 -!- derrik has quit (Quit: dive).
18:51:41 <Gregor> elliott_: So replace it with space check space *shrugs*
18:53:18 <Gregor> Of course, ideally the Unicode consortium would be adding characters just for this.
18:54:52 <nooga> ELLIOTIAN MEATSPIN *
18:55:06 <elliott_> Wow, this code structure is going to be a pain :P
18:55:21 <elliott_> I need to support fully concurrent, independently-updated tasks and redraw the screen whenever any of them makes progress.
18:55:29 * elliott_ decides to throw threads at the problem.
18:55:50 <nooga> ever thought about.... GUI?
18:56:03 <elliott_> Yeah, I should write a lovely Cocoa program with that wonderful Interface Builder.
18:56:08 <elliott_> It'll make this package manager so much better.
18:56:31 <nooga> you cold write some beautiful NSView subclasses
18:57:12 <nooga> FFFFFFUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ry23q;0482y[09234n]901yn]-9yn]52~nty]]Ō€5~t480ee4q
18:58:47 <Gregor> nooga: Don't worry, it hates you too.
18:59:41 <nooga> the worst part is that I'm my own boss ;F
19:00:29 <elliott_> I suggest: Doing a job that is a different job to that.
19:03:41 -!- ais523 has joined.
19:03:46 <elliott_> Is there a nicer way of getting the terminal width than `tput cols`?
19:04:02 <elliott_> One that doesn't involve shelling out.
19:04:19 <ais523> elliott_: you can simulate tput cols by hand, I guess
19:04:30 <elliott_> ais523: That's sort of what I'm asking.
19:04:36 <Sgeo|web_> I guess the -e makes the \r do something?
19:05:10 -!- Guest63524 has quit (Read error: Connection reset by peer).
19:05:23 <ais523> hmm, Apache have stopped maintaining Harmony?
19:05:42 <ais523> elliott_: as far as I know, it's writing a particular terminal-dependent control string, then reading back from the terminal
19:05:54 <ais523> so I suppose technically, you write stdout then read stdout
19:05:59 <ais523> just in case it's different from stding
19:06:04 <elliott_> Deewiant: You shoulda told me ansi-terminal didn't do width :P
19:06:11 <elliott_> EVERYTHING IS SOMEBODY ELSE'S FAULT
19:06:28 <ais523> it's typically open both ways
19:06:31 <ais523> elliott_: that was a correction on "stding"
19:06:53 <Sgeo|web_> (Note: Not actually going to fix PSOX)
19:07:05 <ais523> elliott_: ah, it isn't, it's an ioctl
19:07:23 <ais523> ioctls are famous for being mostly undocumented
19:07:39 * elliott_ has worked with terminal ioctls before. :-(
19:07:57 <elliott_> you know what, I'll just assume your terminal is 80 columns wide for now
19:08:14 <ais523> elliott_: however, I think that one might be implemented by the Secret Project
19:08:26 <ais523> the only thing worse than trying to use ioctls is trying to implement them, or something like that
19:08:33 <ais523> (note: worse things exist but wouldn't make for as pithy a quote)
19:08:53 -!- Slereah_ has joined.
19:10:53 <elliott_> reimplementing a quarter of wget with a nicer UI sure isn't fun
19:12:30 <ais523> elliott_: does wget have a programmatic interface that lets you connect it to your own progress counter, like fsck does/
19:13:00 <elliott_> (there's no terminal codes, but still)
19:13:35 <elliott_> ais523: why do you think I'm rolling my own? :P
19:13:58 <ais523> I was wondering if there was one and you didn't know of it
19:14:02 <ais523> I didn't know of fsck's for ages
19:14:20 <ais523> (I've never actually used it from code, although the system uses it to display fsck progress on the splash screen)
19:14:36 -!- derrik has joined.
19:14:59 <elliott_> , taskProgress :: TVar Rational
19:14:59 <elliott_> , taskProgressInfo :: TVar String
19:15:02 <elliott_> I guess this is coming together
19:15:18 <elliott_> hmm... maybe that should all be in a single TVar; it's not going to get independently modified
19:16:00 <nooga> but what is the package manager for
19:16:07 <elliott_> ais523: (apparently I can't write an interactive-ish console program without trying to surpass darcs' UI in every way)
19:16:21 <nooga> what was Kitten, again?
19:16:55 <ais523> elliott_: darcs' UI is great although not perfect, so surpassing it is always going to lead to good UIs
19:18:06 <elliott_> ais523: My programs are pretty much either completely unusable requiring like ten shell scripts to thread them together and modifications to work with anyone else's stuff but mine, or COMPLETELY FLAWLESS HANDCRAFTED UIs.
19:19:06 -!- Zuu has joined.
19:19:33 <nooga> elliott_: how it would be different from other linux distros?
19:20:15 <elliott_> nooga: purely functional package and configuration manager (a la Nix), generalised to be a complete service manager; seamless multilib support; hopefully not very crap???
19:22:22 -!- sllide has quit (Read error: Connection reset by peer).
19:23:37 <nooga> do you have packages to manage?
19:25:42 <pikhq> elliott_: Hmm. So, this would probably seamlessly handle multiple libcs.
19:26:05 <pikhq> And thus could be the basis for a musl-and-glibc distro.
19:26:11 <elliott_> nooga: Sure, every package in a Linux distro shall be managed. Also the entirety of language-specific repos like CPAN and Hackage, seamlessly and automatically.
19:26:12 <pikhq> (glibc for everything that can't be musl)
19:26:35 <elliott_> pikhq: Yep. I'm actually intending to start off with a "regular" glibc/gcc setup and then move to musl as it becomes more usable (i.e. C++ support for WebKit :-P)
19:26:46 <pikhq> Sounds about right.
19:26:56 <elliott_> pikhq: The nice thing about the purely-functional package management model is that dynamic linking literally means nothing any more.
19:27:10 <elliott_> It's a minor space tradeoff, a very slight time tradeoff.
19:27:14 <pikhq> ais523: musl is an alternate libc that features better performance than glibc and better size than uclibc.
19:27:18 <elliott_> Saves a bit of network bandwidth for delta updates.
19:27:33 <pikhq> While also being written reasonably well.
19:27:46 <ais523> elliott_: what if the system crashes and the partition with the libraries on can't be mounted?
19:28:09 <pikhq> ais523: Then the system is fucked, *just like any recent Linux distro*. :)
19:28:12 <elliott_> ais523: you mean the only partition that contains packages?
19:28:15 <Gregor> ais523: We all want Web o' Flies, why are you restricting it to elliott_? :(
19:28:23 <ais523> Gregor: I'm PMing it on request
19:28:37 * pikhq requesteth as well
19:28:46 <elliott_> ais523: I leaked a bit of your valuable IP in the form of the jawdropping comments, sry about that :P
19:28:46 <pikhq> Jesus this is too brilliant for me to not look at. :)
19:29:42 <ais523> wow, all the comments on the first screenful are indicative of one insanity or another
19:29:58 <ais523> and that's just in the preprocessor statements to include relevant headers with relevant options
19:30:30 <pikhq> I appreciate your _POSIX_C_SOURCE.
19:30:38 <pikhq> Though _GNU_SOURCE should suffice.
19:30:49 <ais523> pikhq: no, the value I defined it to is significant, believe it or not
19:31:00 <ais523> 199309L is rather higher than the usual setting
19:31:25 <pikhq> Probably disabling some newer POSIX features.
19:32:25 <ais523> oh right, the first bit after the #includes is pretty crazy too
19:33:02 <ais523> I'm defining a couple of structs that aren't in any include files; the docs say you have to define them yourself, and the docs /also/ miss out a field, so if you try to define them to the docs it won't work
19:34:17 <ais523> (that's for the syscall getdents; you're not supposed to use it directly, rather using a wrapper, but you can do a few things with it that you can't via the wrapper, such as listing amazingly large directories, and ofc weboflies is at the receiving end of syscalls so it has to understand getdents, not the libc equivalents)
19:34:28 <pikhq> Oh, it's also x86-specific.
19:35:00 -!- zzo38 has joined.
19:36:32 <pikhq> Where the hell is vt_kd_kbentries, anyways?
19:37:00 <ais523> oh, it's in a separate file, let me paste that too
19:37:13 <ais523> http://sprunge.us/KKPf
19:38:03 <elliott_> ais523: I can give you a build script
19:38:11 <elliott_> gcc -o weboflies -m32 -O2 -g --std=gnu99 -Wall -Wextra -Wno-missing-field-initializers -Wno-missing-braces weboflies.c ktt.c -lrt -lpng
19:38:15 <elliott_> ktt.c is that other file ais523 just pasted
19:38:17 <Vorpal> <ais523> 199309L is rather higher than the usual setting <-- hm?
19:38:26 <ais523> Vorpal: for _POSIX_C_SOURCE, IIRC
19:38:56 <Vorpal> ais523, take a look at man 7 feature_test_macros
19:39:02 <Vorpal> ais523, it should explain how it works
19:39:04 <elliott_> ais523: no, it's usually > 2001 or so
19:39:30 <Vorpal> ais523, defining it to 1 just exposes the original POSIX
19:39:45 <Vorpal> usually I define it to 200112L for POSIX.1-2001
19:39:53 <Vorpal> or 200809L for POSIX.1-2008
19:40:40 <Vorpal> elliott_, I have to say that the way _XOPEN_SOURCE works in is weird. 500,600,700? How does that make sense
19:40:56 <zzo38> On Tuesday, FreeGeek Vancouver fixed the mail, they changed it from GNU mail to BSD mail and it could send/receive properly. But on Wednesday it broke again, somehow reverting to GNU mail. On Thursday, it worked again!
19:40:57 <Vorpal> yes yes, magic constants
19:41:05 <ais523> Vorpal: it's like BASIC line numbers, it's so they can add other values in between
19:41:38 <Vorpal> ais523, but why start at 500 hm
19:41:47 <pikhq> Vorpal: It's "5.0.0", "6.0.0", "7.0.0"
19:42:04 <Vorpal> pikhq, what happened to 4.0.0 though?
19:42:14 <Vorpal> and other lower numbers yeah
19:42:31 <ais523> isn't X's current version at 11, anyway?
19:42:48 <pikhq> Ah. They didn't use that macro for earlier versions.
19:43:06 <Phantom__Hoover> Some idiot is setting fireworks off outside, since they apparently can't count past three.
19:43:06 <pikhq> ais523: This is the X/Open Portability Guide standard.
19:43:16 <pikhq> *Not* the X Windowing System.
19:43:46 <ais523> why would two different things be called X?
19:44:11 <pikhq> Because people believe in confusing you.
19:44:34 <pikhq> = ERROR: stat proc/pid/fd: Permission denied
19:45:07 <elliott_> (you can generalise from two examples! I just did it!)
19:45:22 <ais523> elliott_: I'd /guess/ that something's changed in Linux's handling of perms
19:45:40 <pikhq> http://sprunge.us/fERT And my Makefile.
19:45:45 <ais523> along the lines of "you can't read a process's fds if there's ever been a root-owned process in the history of processes since"
19:46:15 <ais523> I suppose you could just comment out the permission dropping in the main process, but that would be insane
19:46:27 <ais523> (admittedly, it's insane enough as-is, but I don't want to make it even worse)
19:46:44 <ais523> either that, or keep the root perms in reserve for when they're needed; I don't like doing that either, but it's more secure than running as root constantly
19:46:58 <elliott_> "6:54 remaining @ 1 Mio/s" <-- hmm, this seems worryingly long
19:47:04 <elliott_> there's not much space left for the filename
19:47:19 <ais523> what filename lengths are you expecting?
19:47:21 <Vorpal> ais523, hm what kernel version are you on then that make it work?
19:47:53 <pikhq> And I'm testing on 3.0.0-1-amd64.
19:47:58 <elliott_> ^Cibreoffice-af-3.4... 368.0K 398.0K/s 00:00:02 [#####-----------------] 27%
19:47:58 <elliott_> ok, that's what pacman's looks like
19:48:37 <ais523> I think it's only just new enough to run weboflies, which requires something along the lines of 2.6.30
19:49:11 <Vorpal> <elliott_> "6:54 remaining @ 1 Mio/s" <-- hmm, this seems worryingly long
19:49:11 <Vorpal> <elliott_> there's not much space left for the filename
19:49:16 <elliott_> aww, I just had a great idea that would require me to abandon my smooth progress bar format
19:49:31 <elliott_> include the progress at the head of the progress bar itself, white on green
19:49:40 <ais523> elliott_: like AceHack health bars?
19:50:01 <Sgeo|web_> Would there be any problems with killing Flash when it's not in use?
19:50:04 <Vorpal> elliott_, as long as it work over serial console :P
19:50:36 <elliott_> hmm... /me decides that seeing how much of the file in absolute terms has downloaded so far is useless
19:50:42 <elliott_> a progress bar + total filesize is enough
19:51:08 <elliott_> "8 Gio @ 1 Mio/s; 6:54" that's better
19:51:19 <ais523> Sgeo|web_: on this system, Flash isn't even running when it's not in use
19:51:31 <ais523> $ killall plugin-container
19:51:32 <ais523> plugin-container: no process found
19:51:41 <ais523> and I assume other systems are the same
19:52:01 <pikhq> Vorpal: Funny thing is, almost everything that works with a Linux virtual terminal should work over a serial console.
19:52:20 <pikhq> The concept of a "terminal" is such a stupidly naive thing.
19:52:46 <ais523> pikhq: well, it works with a couple of FIFOs and a bunch of lying about the results of ioctls
19:53:17 <Vorpal> pikhq, well one connected to a line printer I meant ;P
19:53:20 <pikhq> It's a heck of a lot of lying to get programs to think it's a serial terminal.
19:53:28 <ais523> ktt.c is a lookup table for the results of the ioctl to get the keyboard translation table
19:53:42 <ais523> I have no idea what it means (and have failed to figure it out via looking at it); I obtained it by experiment
19:53:47 <pikhq> Vorpal: I'd be surprised if even vi worked like that.
19:54:05 <ais523> I'm not getting programs to think it's a serial terminal; I'm getting them to think it's a VT (ctrl-alt-F1 style)
19:54:19 <ais523> and that they have complete control over the keyboard and screen while it's active
19:54:26 <pikhq> ais523: I'm discussing Linux's normal handling of pty's.
19:54:41 <ais523> actually, I think weboflies does connect to a pty
19:54:45 <ais523> but disguises it as a tty
19:54:46 <pikhq> You, obviously, are adding extra magic on top of that. :)
19:56:32 <elliott_> you know, I think I might be concentrating a little too much on this package manager's download UI
19:58:27 <pikhq> More typically, the UI is the hammer. That beats your user.
19:58:29 <olsner> a face of knobs and buttons and a steering wheel? that's not a pretty face
19:58:49 <CakeProphet> tells him or her what's up, provides an... interface... for the user
19:59:16 <olsner> the UI is the anvil upon which the user must beat its head
20:05:06 <Vorpal> <elliott_> you know, I think I might be concentrating a little too much on this package manager's download UI <-- yes
20:05:14 -!- zzo38 has left.
20:05:25 <elliott_> i fucking hate pacman's and apt's
20:05:30 <Vorpal> elliott_, personally I would probably start out just calling out to wget, then later on I would try to format the output a bit
20:05:41 <elliott_> why? a call to wget is one line, there's no point
20:05:54 <elliott_> I don't need to prove-of-concept to myself that I can call wget
20:06:07 <Vorpal> oh I thought you were doing the actual implementation
20:06:25 <Vorpal> I would have done download the easy way
20:06:50 <elliott_> I'll have to replace it later on, anyway
20:12:21 <Phantom__Hoover> "Search within an incognito window to avoid the Google bubble. Or you could get the Tor browser." — Sensible advice from reddit on how to get rid of search tuning temporarily.
20:16:22 <elliott_> progress: thread blocked indefinitely in an STM transaction
20:20:57 <pikhq> elliott_: The thing is that by doing the naive thing first you can get *working* code quickly.
20:21:12 <elliott_> pikhq: I already know how to write a working wget call :)
20:21:23 <pikhq> It is far easier to make working code better than to make perfect ideas work. :)
20:22:03 <nooga> the ancient problem of enginieers: idealism
20:30:18 -!- derrik has left.
20:30:26 -!- zzo38 has joined.
20:31:16 -!- GreaseMonkey has joined.
20:33:49 -!- zzo38 has left.
20:39:21 -!- pumpkin has joined.
20:42:20 -!- copumpkin has quit (Ping timeout: 258 seconds).
20:44:22 <nooga> I'm trying to code patch-bay-like view in cocoa
20:45:42 -!- sebbu has quit (Read error: Connection reset by peer).
20:46:07 -!- sebbu has joined.
20:46:11 -!- sebbu has quit (Changing host).
20:46:11 -!- sebbu has joined.
20:55:53 -!- Sgeo|web_ has quit (Ping timeout: 265 seconds).
20:56:34 -!- Zuu has quit (Ping timeout: 244 seconds).
20:56:55 -!- SgeoN1 has joined.
20:57:50 <SgeoN1> I'm starting to get concerned about the frequency of non REISUBable freezes
20:58:13 -!- Zuu has joined.
20:58:47 <twice11> SgeoN1: hardware troubles?
20:58:55 <SgeoN1> Is there a way to measure wear and tear on a flash drive?
20:59:26 <twice11> Is the flash drive is a recent SSD, it probably reports interesting numbers via SMART.
20:59:51 <twice11> But non-responsive drives should not prevent the B in REISUB from working.
21:00:34 <twice11> For thumb drive, forget it. Maybe there are special controller-vendor-specific tools that could do it.
21:00:58 <twice11> But for that you first would need to know the controller type, and then try to get hold of that tool (if any).
21:02:02 <twice11> Most non-REISUBable freezes I experienced lately were caused by broken laptop mainboards (most likely BGA solder joints broken).
21:03:31 -!- Phantom__Hoover has left ("Leaving").
21:03:36 -!- Phantom__Hoover has joined.
21:07:29 -!- Gregor has set topic: Official support channel for Web o' Flies | EPL evening school assignments! http://tinyurl.com/5stnu5n | It's the end of an era | RIP John McCarthy) | TO SHREDS!) | http://codu.org/logs/_esoteric/.
21:12:52 <monqy> friendship headers?
21:16:10 <Phantom__Hoover> So I learned some topology today, it seems to be the study of blobby shapes?
21:17:24 -!- Ngevd has joined.
21:17:34 <Ngevd> Well, I spent today in a hot stuffy room
21:17:43 <Ngevd> Listening to boring people drone on and on and on
21:18:09 <Ngevd> That's right, I've been to the House of Commons!
21:18:28 <Phantom__Hoover> Did you know that they let you do that for the hell of it?
21:19:17 <monqy> elliott_: about it working ore what
21:19:32 <elliott_> monqy: about no go house comon
21:19:42 <Ngevd> I met Guy Opperman
21:19:58 <monqy> I don't meet that Guy
21:20:17 <Phantom__Hoover> "Guy Thomas Opperman[3] (born 18 May 1965) is a British Conservative Party politician,"
21:20:48 <elliott_> What is it with Conservatives anyway. There are so many of them.
21:22:14 <olsner> I guess we need more klingons
21:23:06 <elliott_> You always need more Klingons.
21:23:32 <olsner> the problem of having too many klingons
21:23:45 <Ngevd> That's the best bit
21:23:46 <monqy> trick answer; there is no such thing
21:23:58 <olsner> hmm, actually... they might start killing each other and solving that problem too
21:23:58 <Ngevd> If you have too many klingons, they start killing eachother
21:24:05 <Phantom__Hoover> olsner, of course it solves that, they're Klingons for christ's sake.
21:24:36 <olsner> what if they decide it's more honorable to increase the number of klingons?
21:24:49 <Ngevd> Then they are no longer Kilingons
21:24:52 <elliott_> test :: IO (TChan TaskStatus -> IO (), IO ())
21:25:03 <elliott_> I guess I will use a TChan for the TChans????
21:35:10 <Ngevd> Wow, there's actually sockpuppeting on the IWC forum
21:35:15 <Ngevd> Over Russian translations
21:39:32 -!- pikhq_ has joined.
21:39:33 -!- pikhq has quit (Ping timeout: 256 seconds).
21:44:35 <Gregor> OK, here we go: http://bitbucket.org/GregorR/web-o-flies
21:49:58 <Ngevd> Supposed to be a broken link?
21:50:03 -!- Patashu has joined.
21:54:27 <Phantom__Hoover> "The cat righting reflex is a cat's innate ability to orient itself as it falls in order to land on its feet. The righting reflex begins to appear at 3-4 weeks of age, and is perfected at 7 weeks."
21:54:56 <Phantom__Hoover> I want to be the person who dropped kittens and checked if they righted themselves.
21:57:23 <Gregor> Ngevd: SHHHH YOU'RE RUINING MY JOKE/TROLLERY
21:57:35 <shachaf> zzo38 is adding Gopher menu format support to Haddock.
22:00:03 <Phantom__Hoover> Fun fact: [[Falling cat problem]] links directly to Yang-Mills theory.
22:04:02 -!- pikhq_ has quit (Ping timeout: 240 seconds).
22:04:21 -!- pikhq has joined.
22:06:00 <elliott_> shachaf: It's great having zzo around in that channel, isn't it?
22:06:56 <shachaf> elliott_: I don't think we've had quite these kinds of proposals from anybody else.
22:07:00 <monqy> zzo channel is good channel
22:09:08 <elliott_> http://upload.wikimedia.org/wikipedia/commons/7/78/Cat_fall_150x300_6fps.gif
22:09:13 <elliott_> Phantom__Hoover: I am so happy you made me find this image.
22:10:21 <monqy> that image because of how good it is reminds me of http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png
22:13:21 -!- zzo38 has joined.
22:14:03 <zzo38> What about the devil?
22:14:21 <elliott_> monqy: i want to know the logic behind that diagram... actually i don't
22:14:35 <elliott_> monqy: i will just choose to believe someone thought of four random things and arranged them on a plus sign
22:15:40 <zzo38> Should Haddock output format have: Plain TeX, gopher menu format, Plain Old Documentation, MediaWiki, etc
22:16:32 -!- derdon has quit (Remote host closed the connection).
22:16:55 <zzo38> I don't particularly like Haddock markup format so I made up idea of a different format: http://sprunge.us/jdWh
22:17:16 <elliott_> It's perfect. Tell #haskell about it.
22:17:32 <coppro> make a replacement for TeX
22:18:00 <zzo38> Phantom__Hoover: Not right now. Maybe later, when they are different people on that channel, such as the people who invented Haddock.
22:18:07 <coppro> zzo38: definitely insist on .doc
22:18:20 <coppro> that's a good descriptive file extenstion that's totally unique
22:19:15 <zzo38> The extension doesn't really matter as long as it is agreed on. Of course anything in this proposal is subject to changing.
22:19:59 <zzo38> It is OK to have more than three letters in the extension if you want to; I do not think Haddock is a DOS program!!
22:20:26 <shachaf> quintopia: So he had to dock the last letter?
22:21:43 <zzo38> Read it and tell me if each individual thing is wrong, please.
22:22:31 <quintopia> i read it. i don't even know what haddock is so i can't answer that question.
22:26:06 -!- Ngevd has quit (Ping timeout: 260 seconds).
22:31:39 <zzo38> Does the people managing the account for HackageDB have UNIX mail? I send a UNIX message to them and I don't know if it work.
22:31:49 -!- elliott_ has quit (Ping timeout: 248 seconds).
22:32:57 <zzo38> Maybe it doesn't work; my name is not on there.
22:44:01 <zzo38> One day I invented a chess variant with the INTERCAL commands.
22:44:16 <shachaf> zzo38: You invent a lot of things.
22:44:57 <zzo38> Probably many people working in esolangs invent a lot of things it seems to be.
22:46:05 <Phantom__Hoover> zzo38 is like that leading character in Lovecraft who only exists for the protagonist to chart the grizzly demise of.
22:54:50 <nooga> Phantom__Hoover: which is your favourite piece by Lovecraft?
22:55:17 <Phantom__Hoover> Haven't read many; I read The Colour Out Of Space and didn't sleep that night.
23:03:02 <fizzie> fungot: So what about those queer angles that can be used for extradimensional travel?
23:03:03 <fungot> fizzie: for hours he climbed with aching and fnord hands, induced to purchase escape at the price of the fnord and i wondered whether asenath could possibly have covered. yet nothing of what i had
23:19:49 -!- ais523 has quit (Remote host closed the connection).
23:23:35 <zzo38> Why does it says "No instance for (IsString ByteString)" even though it says it does?
23:25:04 <shachaf> Import the right module -- .Char8 -- or, better yet, don't use ByteStrings as Strings (they're not).
23:26:33 -!- sllide has joined.
23:48:00 <zzo38> Some Ukranian guy appears to have been overloading my server sometimes.
23:48:42 <zzo38> Or at least their ISP is Ukranian.
23:49:09 <Gregor> Solution: Bomb Ukraine.
23:50:45 -!- CakeProphet has quit (Ping timeout: 248 seconds).