←2011-07-21 2011-07-22 2011-07-23→ ↑2011 ↑all
00:00:34 <oerjan> oh hm you limit kipple stacks to length 32256 iiuc
00:01:07 <oerjan> also it's spelled "instantiate" ;D
00:03:30 <oerjan> Gregor: can ORK do recursive objects, and so e.g. linked lists?
00:03:43 <Gregor> oerjan: I don't recall :)
00:03:56 <oerjan> hm
00:08:51 -!- FireFly has quit (Quit: swatted to death).
00:30:44 <Sgeo> http://www.reddit.com/r/DebateReligion/stylesheet.css huh, they're actually interfering with RES
00:32:54 <Sgeo> Gah, there's a lot of vitriol in that subreddit
00:35:17 <Gregor> DebateReligion -> "there's a lot of vitriol in that subreddit" -> duh
00:47:58 <Sgeo> That's a little creepy
00:48:00 <Sgeo> Oh, oops
00:48:03 <Sgeo> /** 'Force' users to use the subreddit style **/
01:07:32 <Lymee> @src reverse
01:07:33 <lambdabot> reverse = foldl (flip (:)) []
01:17:34 <Sgeo> lol, told someone I was playing with Minecraft, he thought I meant minesweeper
01:18:05 <Sgeo> Oh, or maybe he was joking
01:22:44 <oerjan> _someone_ probably made minesweeper in minecraft
01:22:53 <oerjan> with real explosions
01:24:26 <pikhq> Yes, someone actually did.
01:52:36 -!- copumpkin has quit (Ping timeout: 240 seconds).
01:53:01 -!- copumpkin has joined.
02:00:08 -!- CakeProphet has quit (Ping timeout: 276 seconds).
02:02:05 -!- cheater_ has quit (Ping timeout: 255 seconds).
02:15:07 -!- cheater_ has joined.
02:21:04 -!- pikhq_ has joined.
02:24:17 -!- pikhq has quit (Ping timeout: 258 seconds).
03:21:17 -!- azaq23 has quit (Ping timeout: 255 seconds).
03:38:17 -!- azaq23 has joined.
03:46:08 -!- BeholdMyGlory has quit (Remote host closed the connection).
04:08:28 -!- quintopia has quit (Read error: Operation timed out).
04:08:36 -!- quintopia has joined.
04:08:47 <pikhq_> Linux 3.0 is out.
04:09:21 <Lymee> !python sum(['aaa','bbb','ccc'])
04:09:22 <EgoBot> Traceback (most recent call last):
04:09:41 <Lymee> Is there any reason why sum doesn't work on any data type that defines '+'?
04:12:51 <Lymee> With the possible condition that it's order is not guaranteed if it's not cumulative, not associative or has side effects?
05:08:54 -!- atehwa has joined.
05:16:35 -!- zzo38 has joined.
05:17:05 <zzo38> I played D&D game today. Can you guess the number of each of our experience points (me and my brother) (including both individual and group XP)?
05:18:51 <Sgeo> Yes. Do I have any decent chance of guessing correctly? No.
05:21:09 <quintopia> 69?
05:22:17 <zzo38> No. More than 69. Note we have experience level 20 currently
05:22:42 <zzo38> And that it is not enough to go to level 21
05:24:18 <pikhq_> zzo38: 19,0000 experience?
05:24:44 <zzo38> That is the starting experience for level 20. (Also the comma doesn't belong there)
05:24:48 <pikhq_> Erm. 190,000, and why the hell did I do Japanese/Chinese grouping for that.
05:24:56 <pikhq_> Yes.
05:25:01 <pikhq_> That's the joke.
05:25:14 <zzo38> I meant the amount gained, not the total amount.
05:25:17 <pikhq_> Though I wonder if that's actually doable in a single encounter.
05:25:26 <pikhq_> Yes.
05:26:16 <zzo38> We don't use encounter experience anyways; the DM assigns XP based on other things, including encounters and other stuff
05:27:06 <zzo38> (But not the encounter experience table used in the book; instead XP is assigned based on what is achieved, meaning if an encounter is achieved then that counts too but based on achievements rather than encounter levels)
05:27:18 <pikhq_> I suppose if you somehow stumbled across a vorpal sword at level one and then killed a deity, you could hit level 20.
05:27:38 <zzo38> pikhq_: No. Because we also use the rule no more than 1 level up per session.
05:27:52 <pikhq_> zzo38: Lame.
05:28:05 <zzo38> And like I said we use achievement-based XP, not encounter-based XP. I prefer these differences in rules actually.
05:28:08 <quintopia> that is indeed lame
05:28:13 <coppro> pikhq_: standard D&D rule is max 1 level per encounter
05:28:19 <quintopia> what if you decide to play twice as long one day
05:28:32 <quintopia> you have to arbitrarily break into smaller sessions?
05:28:35 <zzo38> quintopia: Then a session break is added at one point, when XP is counted
05:28:48 <quintopia> lame
05:28:52 <pikhq_> coppro: Lame.
05:29:25 <zzo38> We use max 1 level per session, and I like it this way so do the other players and the DM
05:29:53 <pikhq_> *Personally*, I prefer to have the DM arbitrarily do a level bump.
05:29:58 <pikhq_> But that's just me.
05:30:28 <zzo38> So, XP is never counted except at the end of a session. You cannot level up during a session, even if there is a magic effect that adds XP to your total, in which case it is done immediately but does not level up until end of session
05:30:31 <pikhq_> (I happen to dislike CR and experience costs)
05:30:52 <zzo38> I also happen to dislike CR.
05:31:07 <zzo38> Experience costs though, I don't dislike as much.
05:31:07 <Sgeo> You can kill deities in D&D without being one?
05:31:11 <pikhq_> Sgeo: Yes.
05:31:23 <pikhq_> Sgeo: D&D deities are just extraordinarily strong beings.
05:31:24 <zzo38> Sgeo: Depends on the campaign too.
05:31:43 <pikhq_> Presuming a "standard" setting; some settings can very well have omnipotent, immortal deities.
05:31:57 <zzo38> pikhq_: Yes. Depends on the campaign.
05:32:20 <coppro> nearly every roleplaying game has an omnipotent immortal deity
05:32:31 <pikhq_> Of course, in most RPGs everything can be modified by the campaign.
05:32:34 <pikhq_> coppro: The DM?
05:32:55 <coppro> pikhq_: yeah
05:35:57 <zzo38> Well, in Forgotten Realms, there is one metadeity (the book says it is a deity but I don't believe them)
05:36:49 <pikhq_> Ao?
05:37:47 <zzo38> Yes, I mean Ao
05:38:54 <zzo38> Do you believe me or do you believe the book (or do you believe both)?
05:39:48 <pikhq_> I'm inclined to call Ao the in-setting manifestation of the DM, personally.
05:39:53 <pikhq_> Or a metadeity.
05:42:58 <zzo38> O, so you have your own opinion. That is OK, too.
05:44:48 <zzo38> I updated the pre-game copies of the character sheets on my computer since both of our character also speak Thesk language too.
05:46:24 <zzo38> (Since both of us are escaped slaves from the Thesk island, him a arena slave and me a magical assistance slave. We are saved by a dwarf who says we need to do them a favor or be dead by magic, but we don't even know what that favor is!)
05:54:18 -!- zzo38 has quit (Remote host closed the connection).
06:14:05 <itidus20> so i discovered visualboy advance emulator already contains an interframe filter.. i thought i was clever thinking of interframe filters for emulators the other day but clearly some movement has been made in that direction already
06:32:37 -!- oerjan has quit (Quit: Good night).
06:40:34 <Lymee> So. In Java you can mess with boxing with reflection. In Scala, a lot of language features use boxing "backstage"
06:40:50 <Lymee> I wonder what kind of tangled messes you can create with that kind of functionality.
06:44:48 <Lymee> (maybe "functionality" should be in quotes)
06:51:27 -!- Sgeo has quit (Ping timeout: 255 seconds).
06:55:33 -!- azaq23 has quit (Quit: Leaving.).
07:01:50 -!- Sgeo has joined.
07:27:42 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)).
07:28:05 -!- monqy has quit (Quit: hello).
07:28:09 <NihilistDandy> ping
07:29:23 <fizzie> Ping ping here and a ping ping there and... I'm sure there's a song like that.
07:29:26 -!- rodgort has joined.
07:29:40 <NihilistDandy> Undoubtedly
07:30:06 -!- CakeProphet has joined.
07:30:06 -!- CakeProphet has quit (Changing host).
07:30:06 -!- CakeProphet has joined.
07:50:53 -!- CakeProphet has quit (Ping timeout: 240 seconds).
07:52:51 -!- CakeProphet has joined.
08:22:46 -!- Taneb has joined.
08:38:55 -!- NihilistDandy has quit (Read error: Operation timed out).
08:40:06 -!- NihilistDandy has joined.
08:44:47 -!- Nihilist1andy has joined.
08:47:21 -!- copumpkin has quit (Ping timeout: 250 seconds).
08:47:45 -!- copumpkin has joined.
09:17:47 -!- CakeProphet has quit (Ping timeout: 240 seconds).
09:47:02 -!- copumpkin has quit (Ping timeout: 246 seconds).
09:47:38 -!- copumpkin has joined.
10:29:58 -!- shachaf has quit (Remote host closed the connection).
10:54:43 -!- CakeProphet has joined.
10:54:48 -!- CakeProphet has quit (Changing host).
10:54:48 -!- CakeProphet has joined.
10:58:06 -!- NihilistDandy has quit (Quit: leaving).
10:58:07 -!- Nihilist1andy has quit (Quit: leaving).
10:59:44 <CakeProphet> > map (\x -> join((+) `ap` (+x)) x) [1..]
10:59:45 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> b
11:00:03 <CakeProphet> > map (\x -> (+) `ap` (+x) x) [1..]
11:00:04 <lambdabot> No instance for (GHC.Enum.Enum (a -> a))
11:00:04 <lambdabot> arising from a use of `e_11' at...
11:00:22 <CakeProphet> :t (+) `ap` (+3)
11:00:23 <lambdabot> forall a. (Num a) => a -> a
11:00:43 <CakeProphet> > map (\x -> (+) `ap` (+x) x x) [1..]
11:00:44 <lambdabot> Occurs check: cannot construct the infinite type: t = t -> a -> a
11:01:41 <CakeProphet> @pl (\x -> (+) `ap` (+x) x x)
11:01:42 <lambdabot> ((+) `ap`) . join (join (+))
11:01:54 <CakeProphet> :t (
11:01:55 <lambdabot> parse error (possibly incorrect indentation)
11:02:05 <CakeProphet> :t (\x -> (+) `ap` (+x) x x)
11:02:07 <lambdabot> Occurs check: cannot construct the infinite type: t = t -> a -> a
11:02:07 <lambdabot> Probable cause: `x' is applied to too few arguments
11:02:07 <lambdabot> In the second argument of `(+ x)', namely `x'
11:02:26 <CakeProphet> uh...
11:02:31 <CakeProphet> :t (\x -> (+) `ap` (+3) x x)
11:02:32 <lambdabot> Occurs check: cannot construct the infinite type: t = t -> a -> a
11:02:32 <lambdabot> Probable cause: `x' is applied to too few arguments
11:02:32 <lambdabot> In the second argument of `(+ 3)', namely `x'
11:03:04 <Deewiant> ?ty ap (+) (+3)
11:03:05 <lambdabot> forall a. (Num a) => a -> a
11:03:16 <CakeProphet> :t (\x -> (+) `ap` (+3) x)
11:03:17 <lambdabot> forall a. (Num a) => (a -> a) -> a -> a
11:03:30 <CakeProphet> > map (\x -> (+) `ap` (+3) x) [0..]
11:03:32 <lambdabot> No instance for (GHC.Enum.Enum (a -> a))
11:03:32 <lambdabot> arising from a use of `e_130' a...
11:03:36 <CakeProphet> and now that.
11:03:47 <Deewiant> ?ty ap (+) ((+3) 0)
11:03:48 <lambdabot> forall a. (Num a) => a -> a
11:04:43 <CakeProphet> :t (\x -> (+) `ap` (+x) x)
11:04:45 <lambdabot> forall a. (Num a) => (a -> a) -> a -> a
11:04:50 <CakeProphet> @pl (\x -> (+) `ap` (+x) x)
11:04:50 <lambdabot> ((+) `ap`) . join (+)
11:06:43 <Deewiant> @pl (\x -> (+) `ap` (x+x))
11:06:44 <lambdabot> ((+) `ap`) . join (+)
11:08:24 <CakeProphet> huh?
11:08:45 <CakeProphet> > (+) `ap` 3
11:08:46 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
11:08:46 <lambdabot> arising from a use of `...
11:09:03 <CakeProphet> :t (+) `ap` 3
11:09:05 <lambdabot> forall a. (Num a) => a -> a
11:09:08 <CakeProphet> :t (+) `ap` 3 4
11:09:10 <lambdabot> forall a. (Num a) => a -> a
11:09:34 <CakeProphet> um okay.
11:09:34 <atehwa> does anyone know whether there has been serious attempts at implementing a rewriter engine for undirected graphs?
11:10:12 <CakeProphet> not that I know of, it doesn't sound impossible at all though.
11:10:34 <fizzie> Weren't there some attempts at Eodermdrome implementation?
11:10:52 <atehwa> That's where the design of grrr died off, and that's where eodermdrome is lacking.
11:11:23 <atehwa> grrr was supposed to be "graph reduction renderer", to visually explore undirected (but labeled) graph rewriting
11:12:01 <atehwa> visualisation would be even more useful for eodermdrome, though.
11:12:47 <fizzie> From March of this year:
11:12:48 <fizzie> <Phantom__Hoover> I am also totally disappointed at the lack of interest in my plans for an Eodermdrome implementations.
11:12:48 <fizzie> <fizzie> Phantom__Hoover: The language is cursed: people always just talk about implementing it, but never do. (Did oklopol have an eodermdrome thing or how was it?)
11:12:48 <fizzie> <fizzie> [2008-07-17 19:06:16] < oklopol> i implemented eodermdrome
11:13:29 <atehwa> hmmm
11:14:28 <fizzie> I have a vague feeling that oklopol's implementation was something incredibly slow.
11:14:51 <atehwa> I wouldn't be surprised
11:14:54 <fizzie> http://www.vjn.fi/pb/p565155612.txt
11:15:01 <fizzie> Hmm, no, that was just a running example.
11:15:02 <Deewiant> CakeProphet: Caleskell has instance Num (a -> a), which can make some things confusing
11:15:53 <atehwa> Because basically, you can just brute-force the search for rewritable subnets
11:16:03 <atehwa> and that _is_ incredibly slow.
11:16:13 <fizzie> http://www.vjn.fi/pb/p646231414.txt <-- yeah, okay, so it's not quite an implementation of the language yet.
11:16:56 <fizzie> There might be later pastes too.
11:17:09 <fizzie> It's just that oklopol's not very good at sharing what he does with others.
11:18:29 <fizzie> I do recall wondering whether NAUTY would have been of any use in an Eodermdrome impl.
11:18:59 <fizzie> But it might be that it doesn't help in the subgraph isomorphism problem at all.
11:19:54 <atehwa> hmmm
11:19:56 <fizzie> There are of course other libraries too.
11:20:14 <atehwa> the esolang community has a great record of wasting work :)
11:20:45 <fizzie> Googling with the obvious words finds Python bindings for something called "VF" that speaks of subgraphs, isomorphisms, and has functions that start with "match", which is of course a good sign.
11:20:55 <fizzie> Haven't bothered to read any documentation.
11:21:40 <atehwa> it might be almost a comparable effort to find out whether some given program does what I was talking about, as to write the frigging program.
11:25:20 <atehwa> wow, seems I _have_ actually documented grrr partially
11:25:26 <atehwa> Maybe I'll have to add that to the wiki.
11:29:09 <Taneb> I've just made a surprisingly good BF Joust program
11:29:39 <atehwa> I'm all ears.
11:29:40 -!- mycroftiv has quit (Ping timeout: 264 seconds).
11:30:50 -!- mycroftiv has joined.
11:30:57 <Taneb> !bfjoust lowgate >>>>>>>>>([[-[++]]]>)*21
11:31:06 <EgoBot> ​Score for Taneb_lowgate: 13.4
11:32:01 <Taneb> Not mad
11:32:12 <Taneb> Quite bad, though
11:32:29 <atehwa> why does it have double [[]] ?
11:32:52 <Taneb> So it doesn't commit suicide if it wins
11:32:56 <atehwa> The [++] loop may get locked if there is an odd cell
11:33:14 <Taneb> That would explain why it loses so often
11:34:19 <fizzie> atehwa: There's that GrGen graph rewriting systemajomatic -- http://www.info.uni-karlsruhe.de/software/grgen/index.php -- I suppose it's more commonly used with directed labeled graphs, but the feature list seems to suggest the edges can be undirected too. I don't know the details of the pattern-matching/rewriting language it uses though.
11:34:40 <Taneb> I'll translate my python system into JavaScript
11:34:50 <Taneb> So it's faster
11:35:02 <Taneb> Then, I'll learn C and translate it into that
11:35:05 <atehwa> fizzie: I just checked out NAUTY, and it is only partially applicable
11:35:17 <atehwa> because IIUC it does not search for subgraphs
11:35:37 <Taneb> Then my genetic program will RUE THE DAY
11:35:38 <atehwa> and brute-forcing subgraphs then checking for graph isomorphism is even worse
11:35:51 <fizzie> atehwa: Right. The VF library seems rather more applicable, but the website for that seems to be a bit down.
11:36:21 <atehwa> maybe the website has a difficult life situation :(
11:36:24 <fizzie> Taneb: That "fizzie_evo_4" on the hill has also been evolvamated. (Well, for some values of, anyway.)
11:39:03 <atehwa> VFlib seems to be a library of _graphs_ :)
11:40:00 <fizzie> I think that's just misleading body text.
11:40:20 <atehwa> yes, seems so.
11:40:56 <fizzie> http://portal.acm.org/citation.cfm?id=840896 describes what they use.
11:41:07 <fizzie> The library itself lives in some .it address that doesn't want to speak to me.
11:41:23 <fizzie> It's Italy, maybe it's on strike. (Who said the art of stereotypisms is dead?)
11:41:47 <atehwa> http://www.cs.sunysb.edu/~algorith/implement/vflib/distrib/
11:42:40 <fizzie> That would involve untarballing a tarball to see what it has eaten, far too much work.
11:43:14 <fizzie> There is also http://www710.univ-lyon1.fr/~csolnon/LAD.html
11:43:21 <atehwa> well, it has the library and some documentation. But you need not bother, this was my quest originally anyway :)
11:43:59 <fizzie> LAD's based on a later-published algorithm than VF, so it's unambiguously better.
11:44:14 <fizzie> (I mean, they wouldn't have gotten it published if it were worse, right?)
11:44:46 <atehwa> LAD seems good, on the surface, at least :)
11:45:07 <fizzie> They do benchmark against VF. :p
11:45:50 <atehwa> LAD seems to be really minimalistic, too.
11:46:02 <atehwa> so it could be rather easy to extend.
11:46:18 -!- shachaf has joined.
11:50:44 <atehwa> although, it might not make sense to build a graph rewriting implementation on pure static subgraph isomorphism matcher, either
11:51:12 <atehwa> because different rewritings can fire others, and there's much room for optimisation there
11:51:23 <atehwa> but maybe it's a good starting point anyway.
11:53:05 <atehwa> oh. Seems LAD's algorithm might not be applicable to graph patterns where there are constraints that some edges _not_ exist
11:53:16 <atehwa> which is the case of eodermdrome "closed" nodes
12:00:56 <atehwa> This is a lot more interesting that I'd thought :)
12:05:06 <fizzie> Right, Eodermdrome matching is sort of between finding an isomorphic subgraph and an isomorphic induced subgraph.
12:05:22 <atehwa> yep
12:05:34 <atehwa> actually the matching rules for eodermdrome are smart indeed
12:06:13 <atehwa> it's a very nifty way to specify _two_ kinds of constraints on the graph.
12:06:34 <atehwa> namely, the existence of some arcs, and the absence of others
12:06:53 <atehwa> while still being able to leave the existence of some arcs as "don't care"
12:08:05 <fizzie> It's also very "intuitive" how to do the replacement, with the open nodes being the ones that are used to "hang" the new graph in place to the larger state graph.
12:08:47 <cheater_> this is super-perplexing
12:08:52 <atehwa> ?
12:09:04 <cheater_> python is caching something somewhere, and i have no idea where it's happening and how to turn it off
12:09:35 <atehwa> fizzie: true, although the rules make it impossible to disconnect arbitrary subgraphs
12:10:05 <atehwa> because in order to leave a node open, you have to mention it on both sides
12:10:27 <atehwa> and in order to mention two nodes on RHS, you have to connect them directly or indirectly
12:11:36 <atehwa> so anytime you want to disconnect a node from some other node, you have to close it - and that means it cannot have a subgraph behind it
12:12:31 <atehwa> but effectively, the rules of eodermdrome just enforce that the rewrite rules never even produce disjoint graphs.
12:13:04 <atehwa> cheater_: reload(module)?
12:20:26 <cheater_> yeah, except uwsgi doesn't reload the module on every refresh :p
12:20:32 <cheater_> i've fixed it tho
12:29:32 <atehwa> :/
12:36:33 <Taneb> I keep typing undefined as underfined
12:36:49 <Taneb> Got an error message: underfined is not defined
12:37:02 <Taneb> Thought it was ironic until I realised my typo
12:37:25 <CakeProphet> @pl scanl f a = map (foldl f a) . inits
12:37:26 <lambdabot> scanl = flip flip inits . (((.) . map) .) . foldl
12:45:35 <Taneb> I've translated my BFJoust interpreter to JavaScript
12:47:04 <CakeProphet> why would you do such a th--oh, cool.
12:49:55 <CakeProphet> I think Perl was the earliest language in the C family to have map and filter operators.
12:50:09 <CakeProphet> depending on when they were added.
13:09:07 <CakeProphet> @pl map f (x:xs) = f x : map f xs
13:09:08 <lambdabot> map = fix (flip flip tail . (ap .) . flip flip head . ((.) .) . liftM2 flip (((.) . (:)) .))
13:09:55 <CakeProphet> @pl map f ls = case ls of [] -> []; (x:xs) -> f x : map f xs
13:09:56 <lambdabot> (line 1, column 26):
13:09:56 <lambdabot> unexpected ">" or "-"
13:09:56 <lambdabot> expecting variable, "(", operator or end of input
13:20:51 <CakeProphet> does anyone out there actually use F#?
13:20:58 <CakeProphet> have you guys ever used F#?
13:22:40 <fizzie> I don't know any F# users, no.
13:32:37 -!- copumpkin has changed nick to nmcblanket.
13:32:53 -!- nmcblanket has changed nick to copumpkin.
13:33:30 <CakeProphet> according to wikipedia it is a variant of ML
13:35:22 -!- BeholdMyGlory has joined.
13:37:46 <CakeProphet> The other sort of algebraic data type mentioned, "discriminated unions" (type-safe versions of C unions), can be defined to hold a value of any of a pre-defined type.
13:37:59 <CakeProphet> why does Microsoft have to rename everything terribly.
13:38:32 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
13:38:35 <CakeProphet> I actually heard someone use the term "managed language" in a conversation recently.
13:39:33 <CakeProphet> which I'm pretty sure just means that it runs on a virtual machine and is bytecode compiled.
13:39:53 <CakeProphet> but for some reason Microsoft has to define these new names for things and use those instead, as though it is different somehow.
13:43:09 <fizzie> The managed/unmanaged distinction is theirs, yes.
13:45:29 <CakeProphet> this person said they do not like managed languages. I ask them what they thought that meant
13:45:44 <CakeProphet> they said it means that it has "hidden code" such as garbage collectors.
13:45:45 <fizzie> As far as I understand it, managed code is anything represented in the CIL bytecode, though the runtime does not actually run that, it native-code compiles it. I guess it counts as a form of JIT.
13:45:49 <CakeProphet> I was like... are you serious?
13:46:42 <CakeProphet> This was spoken in the context of not liking managed languages. So in essence he was saying he doesn't like garbage collection or virtual machines.
13:47:04 <CakeProphet> infuriating, but oh well.
13:47:13 <fizzie> Well, I guess that's his prerogative?
13:47:17 <CakeProphet> indeed.
13:47:26 <CakeProphet> even if it is based on stupidity...
13:47:57 <CakeProphet> I asked him if he had any problem with using libraries, since this is "hidden code that could potentially cause bugs not in your own code"
13:48:01 <CakeProphet> he was ambivalent.
13:48:15 <fizzie> I'm sure there are still happy assembly coders who don't like any safety features either.
13:48:50 <CakeProphet> it's just the idea that using a garbage collector will somehow result in all of these bugs that you have no control over
13:48:58 <CakeProphet> it is a silly one.
13:49:10 <fizzie> Oh, I thought it was about the performance issue.
13:49:18 <CakeProphet> nope. hidden code.
13:49:27 <CakeProphet> causes bugs.
13:49:48 <CakeProphet> but if you "aren't new to programming" then manual memory management is practically bugfree....
13:49:49 <fizzie> Just saying "hidden code" might equally well mean performance overhead. But I guess you were there.
13:49:57 <fizzie> Well, that is silly.
13:50:21 <CakeProphet> yeah, I was saying that manual memory management will result in /more/ bugs than using a well-tested garbage collector.,
13:51:24 <CakeProphet> and his rebuttal was that experienced programmers don't have to worry about that.
13:51:27 <CakeProphet> or something.
13:51:38 <CakeProphet> I don't know. I am infuriated. :P I should stop remembering this conversation.
13:52:51 <CakeProphet> I can't wait to interact with these people in a work environment.
13:53:14 <CakeProphet> they will hate me because I will be all snobby about everything. :P
13:53:25 <CakeProphet> JUST WAIT.
13:53:33 <CakeProphet> a few years from now.
13:53:37 <CakeProphet> when I have graduated.
13:54:49 <CakeProphet> I wonder what language I will be programming in when I get a job. My money is on Java or C# if it's a software company. Or Javascript, PHP, Python if it's web programming.
13:55:26 <fizzie> People do serious web-things in quite a plethora of languages nowadays.
13:55:29 <CakeProphet> but there's a lot of possibilities, these are just common languages for those things.
13:55:32 <CakeProphet> yes.
13:55:47 <CakeProphet> Ruby or even Perl is a possibility for web programming.
13:56:09 <CakeProphet> ActionScript for sure
13:57:11 <CakeProphet> I once found a programming gig for SBCL (Lisp)
13:57:33 <CakeProphet> but I didn't have any qualifications for it, unfortunately.
13:57:53 <CakeProphet> I was looking forward to mind-numbing layers of parentheses.
13:58:17 <fizzie> SSH Communications famously (well, not quite) mentioned they use Scheme a lot in one of their job ads.
13:58:25 <CakeProphet> in possibly the oldest language that is still in common use.
13:58:55 <CakeProphet> in the form of dialects, granted.
14:01:24 -!- copumpkin has joined.
14:01:39 <fizzie> I once got a summer job at Nokia (well, their research side) for knowing Perl. Or maybe Befunge.
14:02:05 <fizzie> Perl is what they wanted done, but esolangs were discussed quite a lot at the interview.
14:02:05 <CakeProphet> lol, nice.
14:02:15 <CakeProphet> I should list my esolangs then. :)
14:02:44 <CakeProphet> I might list Lisp even though I don't really know it, lol.
14:03:01 <CakeProphet> meaning I don't comfortably know a common dialects idioms.
14:04:16 <CakeProphet> but I read SICP, so that counts for something. :P
14:05:01 <CakeProphet> fizzie: did they care about having any kind of work experience with Perl, or was just knowing Perl enough?
14:06:03 <fizzie> Well, they wanted someone who knew Perl, not just knew about Perl. But certainly no Microsoft Certified Perl Expert qualifications.
14:06:35 <CakeProphet> right, I'm just wondering how they verified such things.
14:07:16 <fizzie> By asking me, basically.
14:07:31 <CakeProphet> ah, cool.
14:07:40 <CakeProphet> this is promising.
14:07:45 <fizzie> There was no Perl quiz or anything, I mean. They just asked me how well I knew it.
14:07:54 <CakeProphet> because it means I can use knowledge of multiple languages in a job interview as an advantage.
14:07:54 <fizzie> Then I had to formulate some sort of an answer.
14:08:11 <Elizacat> https://gist.github.com/1023982 oh god I'm gonna barf.
14:08:13 <cheater_> apparently fizzie has had too many fried beans today
14:09:29 <cheater_> http://www.rte.ie/news/2011/0722/oslo.html
14:09:30 <CakeProphet> Elizacat: what's wrong with that?
14:09:36 <CakeProphet> that looks perfectly reasonable to me.
14:09:42 <Taneb> There's been an explostion in Oslo.
14:09:58 <Elizacat> a class with lambdas
14:10:02 <Elizacat> that one really just made me puke
14:10:05 <Elizacat> whoever does that needs to be killed
14:10:14 <CakeProphet> it's not that lambdas are bad
14:10:20 <Elizacat> don't use them like THAT
14:10:21 <CakeProphet> it's just that Python's lambdas are bad.
14:10:36 <Elizacat> I don't find lambdas very useful outside of functional programming languages
14:10:36 <Elizacat> :P
14:10:54 <CakeProphet> well, when you can add multiple statements to it
14:10:55 <CakeProphet> it is.
14:10:59 <cheater_> python's lambdas aren't bad, they're just useless
14:11:09 <CakeProphet> I think this is a subset of "bad"
14:11:19 <CakeProphet> useless is bad.
14:11:19 <Elizacat> cheater_, yet everyone whines when they are proposed for removal... :p
14:11:32 <cheater_> i would much rather like anonymous functions
14:11:40 <cheater_> nobody uses lambdas
14:12:04 <CakeProphet> yes, anonymous functions are lambdas technically. this is what I'm referring to.
14:12:31 <CakeProphet> but Python has a terrible way of delimiting blocks and so anonymous functions are syntactically difficult.
14:14:28 <CakeProphet> !perl print map {s/a/b/g;s/c/d/g;} "abcdefg"
14:14:29 <EgoBot> Modification of a read-only value attempted at /tmp/input.11021 line 1.
14:15:12 <CakeProphet> lame
14:15:25 <CakeProphet> !perl print map {s/a/b/gr . s/c/d/gr;} "abcdefg"
14:15:25 <EgoBot> Bareword found where operator expected at /tmp/input.11157 line 1, near "s/a/b/gr"
14:16:12 <CakeProphet> turns out I apparently don't know Perl
14:16:18 <CakeProphet> even though that's what I've been programming in for the past few months.
14:18:28 <CakeProphet> but anyways, point to be made is: Perl has anonymous subroutines. people use them.
14:18:50 <CakeProphet> the whole "lambdas are bad style" thing in Python is probably a result of lambdas looking ugly and being highly constrained in Python.
14:20:05 <CakeProphet> but hey, the lambda-only class definition actually doesn't look too bad. It's kind of fun to see how you could write a class functionally in Python.
14:21:17 -!- lambdabot has quit (Ping timeout: 240 seconds).
14:22:01 <cheater_> CakeProphet, not in python
14:22:21 <cheater_> CakeProphet, a lambda is an expression, in python a function can be multiple expressions, unlike in many languages that have lambdas
14:22:34 <CakeProphet> ...yes, I know how it works in Python.
14:22:39 <cheater_> it's because python is descriptive rather than declarative
14:22:51 <cheater_> or rather prescriptive
14:22:58 <CakeProphet> ...imperitive?
14:23:38 <CakeProphet> I don't think you describe computations in Python by how they "should" work
14:23:40 <cheater_> well, i think "imperative" does not focus on the important aspect of the difference between so called "imperative" languages and so called "functional" langauges
14:23:44 <CakeProphet> well, maybe you do that in all languages. I don't know.
14:23:59 <cheater_> i mean you can perfectly well say that python is an imperative, functional language
14:24:13 <CakeProphet> except it's not really all that functional.
14:24:25 <cheater_> functional means a function is a first class object
14:24:31 <cheater_> which it is, because you can manipulate functions
14:24:33 <CakeProphet> it has first-class functions. that's pretty much the extent of it.
14:24:48 <cheater_> i rather like to use "declarative" for what people call "functional" because you can say that the nature of those languages is that they say what things are, rather than how to build them
14:24:53 <CakeProphet> but it's not really a functional paradigm. but sure, it's functional.
14:25:01 <cheater_> that's the problem
14:25:07 <cheater_> that's why i say "declarative" instead
14:25:08 <CakeProphet> I suppose.
14:25:15 <CakeProphet> that makes sense.
14:25:35 <cheater_> and that's why i call "imperative" prescriptive, because it prescribes how to get something
14:25:35 <CakeProphet> but I think "has first class functions" is a very flimsy definition of a functional language.
14:25:55 <cheater_> i'd word your concern differently
14:25:56 <CakeProphet> not really what I connotate from the word functional.
14:26:07 <cheater_> "functional" is a very flimsy description of haskell, erlang, ocaml and lisp
14:26:47 <CakeProphet> C has first-class function pointers. is it functional? :P
14:27:01 <cheater_> i don't know C well enough to answer that question
14:27:15 <CakeProphet> I could write a map in C, it would just need an extra length parameter.
14:27:47 <cheater_> yeah but it wouldn't be declarative
14:28:28 <CakeProphet> I could write it recursively if that's what you mean.
14:28:46 <cheater_> you wouldn't declare the map function as its first argument applied to the head of the second, plus map applied to the first argument and tail of the second
14:29:15 <cheater_> yeah, but that's unnatural for the language, and wrong, because it would probably give you a stack overflow
14:29:33 <CakeProphet> without adding several more parameters it would also be in-place.
14:30:07 <CakeProphet> stack overflow depends on the length of the array and the size of the call stack of course.
14:30:13 <cheater_> yes
14:30:24 <cheater_> alternatively, if your recursion would just mean you pass the recursed function the pointer+1, then you're again iterating
14:30:38 <cheater_> which is not really declarative
14:30:43 <CakeProphet> but by your very weak definition of functional, C is functional.
14:30:51 <cheater_> i don't know
14:30:55 <cheater_> but i wouldn't be surprised?
14:30:58 <CakeProphet> if not declarative (aka what I consider functional to mean)
14:31:03 <cheater_> i mean in C you can have SMC
14:31:16 <cheater_> and you can create, modify, append, concatenate, and remove functions
14:31:26 <cheater_> you can copy and overwrite them
14:31:43 <cheater_> so to that extent, C is very much functional
14:32:00 <cheater_> it has even features no other languages have such as concatenation of function bodies
14:32:29 <CakeProphet> also, I don't really see the distinction between incrementing a pointer recursively as "iterating" and getting the head and tail of a linked list as being "declarative"
14:33:11 <cheater_> well let's think of it as an index, rather than a pointer, that starts at 0, then it's 1, 2, and so on
14:33:34 <cheater_> this index gives you, at any point, information about the global structure
14:34:00 <cheater_> it tells the body of the function "at this point, you are at the 60th element"
14:34:03 <cheater_> that is iteration
14:34:05 <CakeProphet> not really.
14:34:14 <CakeProphet> I can't go back to the 0th element from a recursive call.
14:34:26 <cheater_> with head/tail you can't
14:34:44 <cheater_> because you don't know where you are - your context always assumes that what you're passed is the whole thing
14:34:46 <CakeProphet> yes, also with recursive pointer increments and a length parameter, you cannot deduce where the start of the list is.
14:34:56 <CakeProphet> excuse me, array.
14:34:59 <cheater_> why can't you?
14:35:17 <CakeProphet> because it's not just an index, you can't just set it back to 0
14:35:26 <CakeProphet> and you have no other information to get you back to the original index.
14:35:40 <CakeProphet> the length parameter won't help you.
14:35:56 <cheater_> but that's what i was talking about
14:35:57 <cheater_> an index
14:36:01 <cheater_> my function is something like f(i, list, func) { list[i] = func(list[i]); f(i++, list, func); }
14:36:20 <CakeProphet> it's a reference to a location in memory, that I am shifting forward one location each recursive iteration.
14:36:36 <CakeProphet> similar to how a linked list works, but contiguous in memory.
14:36:56 <cheater_> of course, if you're given a pointer, then it would be f(start, size, list, func) { list[start] = func(list[start]); f(start+size, size, list, func); }
14:37:03 <cheater_> ok, i know what you mean
14:37:37 <CakeProphet> it's the same thing basically, that if the expressions have no side effects, then what you do in the recursion does not matter. The distinction between iteration and recursion is meaningless because they are equivalent.
14:37:44 <cheater_> but in what i just wrote you're still describing HOW to do something, instead of what you are getting
14:38:01 <cheater_> you're describing the action of going form list to map(list, func)
14:38:40 <cheater_> in haskell, you are describing the structure of map list func and you are describing it with the nouns "map", "list" and "func"
14:39:40 <cheater_> so maybe it's that in a prescriptive language basically you have nouns and verbs, in a declarative language you have no verbs
14:40:09 <cheater_> you don't "do <action> to <item>"
14:40:35 <CakeProphet> I use verbs all the time in Haskell.
14:40:38 <cheater_> instead you say "<item> is an <adjective> <item2>"
14:40:46 <cheater_> can you give me an example?
14:40:49 <CakeProphet> map...
14:40:56 <CakeProphet> map f over list
14:41:00 <CakeProphet> it's a command.
14:41:04 <CakeProphet> fold as well
14:41:05 <cheater_> well, that's just a way to read it
14:41:12 <CakeProphet> yes, as is your definition of nouns and verbs...
14:41:56 <cheater_> i would say, map paintRed fence = "a fence which is red"
14:42:09 <cheater_> you would say map paintRed fence = "a fence which has been painted red"
14:42:30 <CakeProphet> I suppose. I'm just saying a function is very much like a verb.
14:42:46 <cheater_> well, i wouldn't say so
14:42:54 <cheater_> i would say a function is just a parametrized value
14:43:14 <CakeProphet> when you define the function, you *declare* what it is
14:43:20 <CakeProphet> but when you use it, you are using it like a verb.
14:43:33 <cheater_> not really - when you use the function, you declare what the output is
14:43:40 <cheater_> y = f x
14:43:58 <cheater_> i declare y to be an x-ish f
14:44:12 <cheater_> "y is an f of subtype x"
14:44:18 <CakeProphet> this is just completely arbitrary.
14:44:26 <CakeProphet> to perspective.
14:44:32 <CakeProphet> > map (+1) [1..]
14:44:44 <CakeProphet> "hey computer, map this function over this list"
14:44:51 <cheater_> "a list of 1, 2, .. incremented by one"
14:45:13 <cheater_> where "incremented by" is an adverb
14:45:22 <CakeProphet> lol
14:45:38 <CakeProphet> so map isn't a verb, it's "a list of" :P
14:45:40 <CakeProphet> which is a nount
14:45:41 <CakeProphet> got it.
14:45:59 <cheater_> well, that's just what i think when i see map (+1) [1..]
14:46:12 <CakeProphet> the reason I say functions are like verbs is because they take arguments
14:46:18 <CakeProphet> similar to how language verbs have subjects and objects.
14:46:36 <CakeProphet> nouns are more like the constants.
14:47:05 <cheater_> this discussion resonates quite a lot with what i thought when i first started studying mathematics at the university and first started hearing how people actually talk about mathematical objects at work
14:47:14 <CakeProphet> adjectives and adverbs are also like functions in that they augment or modify existing things (aka their argument)
14:47:31 <cheater_> it was always a case of "function f is ...", never a case of "to get the value of function f, you do ..."
14:47:46 <CakeProphet> right, but functions /do/ things.
14:47:49 <CakeProphet> they compute
14:47:56 <cheater_> i differ
14:47:56 <CakeProphet> you declare them, by stating what they are, yes.
14:48:21 <cheater_> a function in mathematics is a constant value, with an argument, which is applied via the substitution principle
14:48:42 <cheater_> let's say you have your value q = 1+2
14:49:28 <cheater_> then you can have your value q(x) = 1+x, where what you do is you first take say q(100), then you expand it to 1+x, and then you substitute x := 100
14:49:29 <CakeProphet> but a function is also an abstraction of a computation. It maps one set of values to another set.
14:49:47 <cheater_> yes, but a map is a static object
14:49:52 <cheater_> it doesn't change, move, or run
14:49:55 <cheater_> it just is there
14:49:58 <CakeProphet> ...sure.
14:50:14 <cheater_> every function exists already in Functions
14:50:23 <cheater_> Functions is the set of all functions. :p
14:50:35 <CakeProphet> I'm not saying you describe functions by saying what they do. I'm saying that functions themselves describe an action.
14:50:52 <cheater_> there's a very important notion in mathematics that mathematical objects do not get created, they get discovered
14:50:59 <cheater_> they've been there all the time, behind your back
14:51:28 <cheater_> so in this way, the \Gamma function wasn't discovered, it was described
14:51:30 <CakeProphet> that's a philosphical point I don't think I necessarily agree with. At least not for every mathematical object.
14:51:43 <cheater_> er
14:51:51 <cheater_> *it wasn't created, it was described
14:51:55 <CakeProphet> to me it's just a system. it's arbitrary in its man-made rules.
14:52:02 <cheater_> can you name a mathematical object which was *created*?
14:52:13 <CakeProphet> no, you don't create concepts.
14:52:32 <cheater_> but you said you don't agree and that some objects were created
14:52:42 <cheater_> unless you were referring to something else?
14:53:21 <CakeProphet> I just don't believe they are discovered. As if they had existed this whole time. I believe they are constructed at which point they become defined. I don't think nature cares about our abstractions.
14:53:42 <CakeProphet> we just describe what already existed in nature with concepts we create over time.
14:53:48 <CakeProphet> so... I suppose I am saying they are created.
14:54:52 <cheater_> ah, instead i see it this way.. imagine you're in a huge town where you've never been, everyone speaks a language you don't know
14:55:07 <cheater_> you start out at some point and there are trees and you can punch them
14:55:24 <cheater_> you can go to places, and see new things
14:55:31 <CakeProphet> but they do not have to correspond to anything that actually exists. I could devise a completely arbitrary set of rules. would I have simply discovered that mathematical system or did I create it artificially?
14:55:34 <cheater_> if you remember the path to those things, that's your definition
14:55:44 <cheater_> however, those things were there before you have defined them
14:55:46 <CakeProphet> and if I discovered it, where was it hiding all of this time? :P
14:55:58 <cheater_> well why are you on that island first of all?
14:56:11 <cheater_> i mean what is your business there sir?
14:56:22 <CakeProphet> er, I wasn't referring to your metaphor, actually.
14:57:07 <cheater_> well, your set of rules is the pathway in your mental considerations of mathematics
14:57:24 <cheater_> which lets you arrive at the concept of that mathematical system
14:57:35 <cheater_> it was there, you just haven't ever taken this path before
14:58:17 <CakeProphet> it just seems somewhat arrogant to say that mathematics, which is inherently a human conception, somehow /is/ the innate properties of the universe, and not merely an artificial description.
14:58:42 <cheater_> ah, but mathematics has nothing to do with the universe
14:58:49 <cheater_> it's completely disconnected
14:59:05 <cheater_> trying to assign cosmical properties to mathematical objects is called physics
14:59:19 <cheater_> and then they only say that the mathematics in question are a model, not that they're the real thing
14:59:22 <CakeProphet> but I kind of associate existence with being a part of the universe..
14:59:44 <CakeProphet> so basically what you are saying to me is that you can discover mathematical objects, but they don't really exist.
14:59:46 <cheater_> no physicist will tell you that the string theory is the nature of the universe
15:00:11 <cheater_> er, no
15:00:17 <CakeProphet> I don't know, existence is a tricky thing.
15:00:36 <cheater_> i'm saying that mathematical objects exist, and that they always have, and that they are not assigned to any physical objects.
15:00:42 <CakeProphet> right.
15:00:56 <cheater_> physical in the meaning of "tangible"
15:01:26 <CakeProphet> ideas exist, certainly. But how do you discover ideas?
15:01:39 <CakeProphet> they must be made by an intelligence being at some point.
15:01:50 <CakeProphet> *intelligent
15:02:22 <CakeProphet> (don't give me that platonic ideal crap :P )
15:02:23 <cheater_> i would say that definitions can be made
15:02:30 <cheater_> there might have been no definition of the idea
15:02:39 <cheater_> which means the idea was outside of your holographic bubble
15:02:59 <cheater_> you can create a definition, by which you arrive at the concept
15:03:17 <cheater_> but the creation of the definition is a secondary concern, it's a means to an end: the concept
15:03:31 <CakeProphet> I don't know, I just find it strange to thing that the idea of freedom of speech existed before any intelligent life thought it up.
15:03:31 <cheater_> the concept, in itself, is what interests us, not the definition of it
15:03:45 <CakeProphet> s/thing/think
15:04:08 <cheater_> notice how even in english you can "have" an idea, but not "create" an idea
15:04:15 <cheater_> you have it, meaning you grasp it
15:04:22 <cheater_> it's in your hand
15:04:45 <cheater_> before, it was not available
15:04:56 <cheater_> sort of like a fruit high up on a tree
15:05:13 <CakeProphet> yes I can understand all of that. I just don't believe there's much distinction then, really.
15:05:23 <cheater_> well there is
15:05:31 <CakeProphet> what we are talking about is practically the same. because an idea might as well not exist until it is available to us.
15:05:42 <cheater_> because look at it: the definition of an idea is secondary to the idea itself, would you agree?
15:05:45 <CakeProphet> so... whether ot not it existed before someone thought of it is somewhat irrelevant.
15:05:52 <cheater_> the definition being our action of discovering the idea
15:06:43 <CakeProphet> I guess. This is just all too human-centered (or intelligence-centered, if you prefer) to really convince me that these things existed since the dawn of time.
15:07:04 <cheater_> ah, but look at it this way
15:07:15 <cheater_> the time interval known as a second has existed before humanity
15:07:29 <cheater_> it would be very egoistic to think that seconds have not existed before humans described them
15:07:49 <CakeProphet> the interval of time existed sure, but seconds as an idea didn't.
15:07:52 <cheater_> there were intervals of time of length one second before humanity!
15:07:57 <cheater_> well, anyways
15:08:27 <cheater_> what i'm trying to say is that the difference between the idea and definition is similar to the difference between declarative and prescriptive definitions
15:08:45 <CakeProphet> I... guess?
15:08:49 <cheater_> idea :: definition == declarative definition :: prescriptive definition
15:09:00 <cheater_> a prescriptive definition is that one step further from the idea
15:09:24 <CakeProphet> I will write a language that goes one step closer than declarative!
15:09:38 <cheater_> that would be neat
15:09:41 <cheater_> i wonder what that would be
15:09:42 <CakeProphet> where the ideas just exist without definition or something.
15:09:52 <CakeProphet> magic.
15:10:04 <CakeProphet> or impossible probably.
15:10:25 <Taneb> Impossible magic
15:10:26 <CakeProphet> hmmm, can I be an agnostic on the matter?
15:10:35 <cheater_> well you can see that a prescriptive definition could be improved
15:10:43 <cheater_> i wonder what the next step would be
15:11:14 <cheater_> i mean in prescriptive definitions, imo, we have verbs, nouns, and adjectives from which we make those definitions
15:11:16 <CakeProphet> we can't know if the idea existed before the point of grasping because it was not known to us before that point.
15:11:27 <cheater_> in declarative definitions we seem to have nouns and adjectives
15:11:33 <cheater_> can we do with just adjectives?
15:11:59 <CakeProphet> I don't think natural language makes a very good metaphor for programming languages.
15:12:01 <cheater_> can i say "x is five-element, rising, starting-with-one"?
15:12:15 <cheater_> would that be a definition for [1, ... 5]?
15:12:21 <CakeProphet> some of the worst ideas in Perl are based on natural language metaphor
15:12:41 <CakeProphet> I mean, they're comparable.
15:12:52 <CakeProphet> but sentences cannot have as deep of a structure as a program expression.
15:13:07 <cheater_> could you call this a "descriptive language"?
15:13:09 <CakeProphet> do the distinction between verbs and adjectives and adverbs as separate modifiers becomes more irrelevant.
15:13:26 <CakeProphet> descriptive, imperitive, or interrogative
15:13:48 <cheater_> no i mean this "adjectives only" language
15:13:52 <CakeProphet> oh.
15:13:53 <cheater_> can it be called "descriptive"?
15:14:01 <CakeProphet> uh, well, I would call any language descriptive.
15:14:08 <CakeProphet> because that is what language is for.
15:14:21 <cheater_> but really, if you define things with adjectives, you define everything by describing it, right?
15:14:43 <CakeProphet> yes. I can't really imagine how you would not describe something in a language.
15:14:50 <CakeProphet> how do I write an algorithm in C without describing it in some way?
15:15:37 <cheater_> well you construct things
15:15:39 <Taneb> By not using any comments?
15:15:48 <cheater_> in C you basically construct things
15:15:50 <Taneb> And obfuscating it loads?
15:15:57 <CakeProphet> yes, but I describe those constructions.
15:16:07 <CakeProphet> with elements of a language.
15:16:12 <cheater_> yeah but that's on meta-level to the language
15:16:16 <cheater_> don't mix those up
15:16:49 <cheater_> in C you say "take some flour, some eggs, some water, and baking powder, mix them together, and you have dough"
15:17:02 <cheater_> in haskell you say "dough is a micture of flour, eggs, water, and baking powder"
15:17:10 <CakeProphet> yes, you describe the steps. functions are descriptions of algorithms.
15:17:19 <cheater_> you don't describe the steps on haskell
15:17:27 <CakeProphet> indeed, you describe what it is.
15:18:11 <CakeProphet> basically what I am saying is that all languages are descriptive. You cannot have a language that does not describe something.
15:18:13 <cheater_> maybe not with dough, but with e.g. a milk shake it's not important if you first put the strawberries, the milk, or the sugar in the mixer
15:18:38 <Taneb> Unless you have a chocolate milkshake
15:19:07 <cheater_> which means that you don't need to be told the consequence of actions of putthing those things in the shaker
15:19:10 <cheater_> Taneb, heh
15:19:17 <cheater_> CakeProphet, yes, on a meta-level you're right, but you're again talking in terms of the meta-language, not the language itself
15:19:24 <cheater_> sure, C describes actions..
15:19:33 <cheater_> but the language itself is actions.
15:19:47 <cheater_> or rather
15:19:53 <cheater_> a PROGRAM in C is actions
15:19:57 <CakeProphet> the language is a...... description of actions.
15:19:58 <cheater_> C is the description of those actions
15:20:02 <cheater_> yeah ok
15:20:09 <cheater_> that's good, we have converged there nicely
15:20:22 <cheater_> a haskell program is a declaration of objects
15:20:31 <cheater_> or items
15:20:38 <Taneb> The declarations are describtions
15:20:55 <cheater_> well, i wouldn't say so.
15:21:07 <cheater_> is a cookie dough recipe a description of a ready cookie?
15:21:14 <CakeProphet> the thing with declarative programming languages is that they still semantically perform computations
15:21:15 <cheater_> not so much
15:21:17 <cheater_> is it?
15:21:20 <CakeProphet> and I often prefer to think in this way when I am writing in them.
15:21:23 <Taneb> It is a description of how to make a cookie
15:21:30 <cheater_> yeah
15:21:36 <cheater_> but it's the cookie that interests us
15:21:37 <Taneb> Still a description
15:22:04 <cheater_> in C, you define cookie as "take dough igredients, put in dish one by one, stir, put on pan, bake in 180 degrees for 1 hour"
15:22:12 <cheater_> that's probably a very wrong recipe
15:22:30 <Taneb> It doesn't have any chocolate chips
15:22:47 <CakeProphet> but sometimes my approach is flawed. For example, using the approach of asking "how do I get the fibonacci sequence in Haskell", I would never think of the this definition
15:22:52 <cheater_> in haskell, you define cookie as "a heat-treated mixture of dough ingredients"
15:22:59 <CakeProphet> fibs = 0 : 1 : zipWith (+) fibs (tails fibs)
15:23:07 <Taneb> With chocolate chips
15:23:08 <CakeProphet> er *tail
15:23:33 <cheater_> CakeProphet, i'm not even debating the practicality of those families of languages
15:23:36 <cheater_> anyways, think about this
15:23:44 <CakeProphet> yeah I wasn't even debating with those statements. :P
15:23:52 <cheater_> in prescriptive and declarative languages, you *start out with something*
15:24:16 <cheater_> meaning that you have to have items, and from these items new items are generated
15:24:17 <CakeProphet> sure, can't make something from nothing. :P
15:24:24 <cheater_> or rather: new items are defined in relation from old items
15:24:26 <cheater_> well you sure can
15:24:57 <cheater_> it's sort of similar to a definition of a geometric complex
15:25:02 <cheater_> is that the right word?
15:25:11 <cheater_> let me quickly google
15:25:13 <CakeProphet> like a... building?
15:25:17 <CakeProphet> or do you mean like geometric series?
15:25:25 <Taneb> I think he means like a pentagon
15:25:38 <CakeProphet> to me "geometric complex" means a building. lol
15:25:51 <CakeProphet> geometric structure? geometric object? geometric construction?
15:26:00 <Taneb> The last one sounds right
15:26:04 <CakeProphet> those are all pretty synonymy
15:26:10 <CakeProphet> with complex. except object.
15:26:16 <cheater_> or better yet
15:26:20 <cheater_> let's talk about just sets
15:26:27 <CakeProphet> mathematics loves sets.
15:26:30 <cheater_> a convex set is simple to describe
15:26:30 <CakeProphet> sounds fun.
15:26:48 <cheater_> a convex set is the intersection of convex sets
15:27:04 <cheater_> a convex geometrical complex is even simpler to describe
15:27:12 <cheater_> it's an intersection of half-spaces
15:27:38 <cheater_> a half-space is a set where on one side of a surface it's full, and on the other side it's empty
15:27:38 <CakeProphet> don't you need to define certain sets as convex sets in order to actuall have any convex sets?
15:27:56 <cheater_> so you make a convex geometrical complex by taking a block of wood, and lopping off bits in straight cuts
15:28:09 <cheater_> nope, you don't need to
15:28:13 <cheater_> it was just an example
15:28:46 <CakeProphet> but the definition is recursive. I don't see how it could apply to anything if there's nothing that is innately convex.
15:28:58 <cheater_> exactly
15:29:01 <oklopol> "<cheater_> a convex set is the intersection of convex sets" <<< what :D
15:29:02 <cheater_> but it's declarative
15:29:22 <CakeProphet> right, but... it declares nothing.
15:29:39 <oklopol> that is true for any family of sets
15:30:02 <cheater_> NOT FOR CONCAVE SETS, SUCKER
15:30:09 <CakeProphet> is {1,2,3} a convex set? What are the convex sets it is an intersection of, and how are those sets convex?
15:30:28 <cheater_> CakeProphet, yeah, that was not a definition, it was just a picture i used
15:30:36 <cheater_> a visualization
15:30:44 <cheater_> look at the convex geometrical complex
15:30:50 <CakeProphet> oh so it's just a property of convex sets and not the definition.
15:30:53 <cheater_> it's defined as an intersection of half-spaces
15:31:25 <cheater_> i have defined half-spaces declaratively, and i have defined convex geometrical complexes declaratively
15:31:36 <CakeProphet> what was the point again? :P
15:31:40 <cheater_> well here's the thing
15:32:19 <cheater_> you can also define convex sets like this. it's a bit more complicated, but you define some starting sets, and then you can create all convex sets from them.
15:32:27 <cheater_> BUT
15:32:32 <cheater_> you can also define convex sets like this:
15:32:51 <cheater_> a convex set is a set which is convex
15:32:56 <cheater_> meaning, it has the property of convexity
15:33:02 <CakeProphet> lol
15:33:04 <cheater_> a test for the property of convexity looks like this:
15:33:10 <CakeProphet> a true statement is a statement that is true.
15:33:32 <cheater_> for any two points of the set, create a line segment between those two points. if the line segment is a subset of the set in question, then that set is convex.
15:33:48 <cheater_> this has to hold for all pairs of points.
15:33:57 <cheater_> the wording there isn't perfect :)
15:34:16 <cheater_> i understand that it looks banal right now
15:34:29 <cheater_> but once you start adding more and more adjectives you can e.g. define a torus, a sphere, and so on
15:34:44 <CakeProphet> my perfectionistic brain is formulating all kinds of nasty inconsistencies in your terribly non-rigorous definition.
15:34:50 <CakeProphet> (not really)
15:35:50 <cheater_> a ball is a set which is open and which has the property of neighbourhood, meaning that all points are within a neighbourhood to a special point called the center
15:36:18 <oklopol> "<cheater_> NOT FOR CONCAVE SETS, SUCKER" <<< a concave set is the intersection of concave sets, but i guess you meant convex sets are closed under intersection? so are the finite sets.
15:36:31 <CakeProphet> ice cream is delicious
15:36:39 <cheater_> however i am still starting with the definition of "set"
15:36:41 <cheater_> BUT!
15:36:56 <cheater_> in mathematics, you can lead everything back to the definition of a set
15:37:23 <cheater_> meaning that if you start out with any definition, it turns out it's just a bunch of sets glued together in special ways.
15:37:33 <cheater_> the "set" is the Ur-Element
15:37:45 <cheater_> it's what the whole world is made out of, in mathematics
15:38:11 <cheater_> in computer languages you have many non-equal Ur-Elements
15:38:11 <CakeProphet> yep, turns out stuff is just groups of stuff.
15:38:26 <cheater_> you have functions, integers, floats, etc
15:39:16 <cheater_> anyways, what i think i'm saying is that in a declarative language you define things with other things
15:39:16 <CakeProphet> typeglobs, don't forget those.
15:39:31 <cheater_> whereas in a descriptive language, you would define things without other things
15:39:48 <cheater_> i wonder if that's a good idea at all
15:39:55 <CakeProphet> the fiboncci sequence is......
15:40:04 <CakeProphet> uh, what do I say now?
15:40:09 <cheater_> yeah, good question
15:40:33 <cheater_> let's look at it differently
15:40:48 <cheater_> let's talk about.. cars
15:42:24 <cheater_> in C you'd say to get a maserati GT you'd take a ferrari 430, you'd then change the body work, and then you'd furnish it with a nice interior
15:43:13 <cheater_> in haskell, you'd say a maserati gt is a ferrari 430 - bodywork - interior + new body work + new interior
15:43:27 <CakeProphet> actually in C a masterati GT is just a bunch of pointers.
15:43:38 <CakeProphet> and bytes.
15:44:00 <cheater_> in a descriptive language, you'd say a maserati gt is a car which is this and this long, it's this and this high, its dimensions are this and that, and its parts are made out of the following materials
15:44:25 <cheater_> basically, you have just defined a maserati GT without ever knowing that there's something called a ferrari 430
15:44:52 <CakeProphet> so to program descriptively is to program declaratively in a roundabout way.
15:44:53 <cheater_> of course, if your description is detailed enough, you will have defined a car which requires what we know as the ferrari 430 engine
15:44:59 <cheater_> well not really
15:45:12 <cheater_> because you can describe things imprecisely or more precisely
15:45:33 <cheater_> you could say "a ball is a set with the property of neighborhood"
15:45:48 <cheater_> and for most things, this will fit well enough
15:46:05 <cheater_> of course, for a real ball, d(B) = {}
15:46:14 <cheater_> whereas for our imprecise ball, d(B) = S
15:46:42 <cheater_> however, that's not really important if you're just using balls to, say, define what a 3-dimensional object is
15:47:09 <cheater_> i guess that's an improvement over declarative languages
15:47:56 <cheater_> a different example
15:48:06 <cheater_> persons
15:48:13 <cheater_> people :)
15:48:56 -!- FireyFly has joined.
15:49:07 <cheater_> you can say in C "to construct Joe, you take Chandler's sperm, and Monica's egg, you fertilize it, you grow the fetus in a womb, and then you let it mature for 30 years and you have Joe"
15:49:22 <cheater_> in Haskell you can say "Joe is the son of Chandler and Monica"
15:50:02 <cheater_> in a descriptive language you would say "Joe has medium-short dark hair, black eyes, of italian descent, is 30 years old, slightly overweight, and likes sandwiches"
15:51:49 <CakeProphet> > (`replicateM` "+-[]<>.,") >>= [0..]
15:52:23 <CakeProphet> in brainfuck, you'd say one of the strings that this Haskell program produces
15:52:31 <CakeProphet> I wasn't really sure how to work that in English so I did that instead.
15:52:41 <CakeProphet> +is Joe
15:53:57 <cheater_> i'm not sure how that is related.
15:54:06 <cheater_> i'm not saying it's unrelated, i just can't parse this.
15:57:47 -!- MDude has joined.
16:00:46 <cheater_> did i explain well what "descriptive" is?
16:02:17 <Taneb> Would it be wrong to improve other's BF Joust programs and submit them to EgoJoust as my own?
16:02:39 <oklopol> no it would be cool
16:02:49 -!- FireyFly has changed nick to FireFly.
16:03:02 <Taneb> Even if it was only an extremely minor improvement?
16:03:13 <cheater_> EVEN MORE SO.
16:03:14 <cheater_> lol
16:03:20 <Taneb> Oh, I'm feeling to guilty.
16:03:37 <Taneb> FireFly? I improved your BF Joust program "meh"
16:03:53 <FireFly> Heh
16:04:03 <Taneb> Do you want it?
16:04:13 <FireFly> Sure, why not
16:04:26 <Taneb> "->(+>->)*4([-]>)*21"
16:04:41 <Taneb> Your original stopped just short of the finish on the longest tape length
16:04:48 <FireFly> ah
16:11:11 <Taneb> You going to submit that, or can I?
16:12:09 <oklopol> well SOMEONE submit it already :\
16:12:19 <oklopol> think about the children
16:12:46 <Taneb> !bfjoust fireflys_meh_improved ->(+>->)*4([-]>)*21
16:12:48 <EgoBot> ​Score for Taneb_fireflys_meh_improved: 20.6
16:27:27 <FireFly> You could just.. you know, borrow it
16:27:29 <FireFly> I don't mind
16:27:50 <FireFly> and also rename it :P
16:36:29 <Taneb> How do I rename it?
16:36:36 <Taneb> And what should I rename it to?
16:42:37 -!- MigoMipo has joined.
16:42:39 -!- copumpkin has quit (Ping timeout: 276 seconds).
16:44:51 <Taneb> Hang on, switching computers
16:45:00 -!- copumpkin has joined.
16:45:34 -!- Taneb has quit (Remote host closed the connection).
16:50:56 -!- Taneb has joined.
17:03:20 <Taneb> I've adjusted my random BF program generator to only make ones with matching brackets
17:09:28 <Taneb> Well, apparently Python has a maximum recursion depth
17:09:30 <Taneb> Damn
17:10:17 <Taneb> Makes a ridiculously long error message
17:13:50 -!- calamari has joined.
17:19:19 <Taneb> While loops work almost as well
17:29:35 -!- augur has quit (Ping timeout: 240 seconds).
17:34:27 -!- calamari has quit (Quit: Leaving).
17:34:36 <oklopol> yeah python only does fail recursion
17:34:39 -!- augur has joined.
17:45:45 -!- Taneb has quit (Ping timeout: 252 seconds).
17:54:31 -!- zzo38 has joined.
17:59:03 -!- Taneb has joined.
18:00:23 -!- quintopia has quit (Ping timeout: 240 seconds).
18:03:30 -!- ais523 has joined.
18:04:49 -!- monqy has joined.
18:09:28 <ais523> wow, that was an unexpected security update
18:09:34 <ais523> arbitrary code execution in logrotate, of all things
18:09:36 <zzo38> Which one?
18:09:44 <Vorpal> drivers/net/loopback.c is so strange... 217 lines... And absolutely no code related to handling packets at all. Just some statistics stuff and driver registering/deregistering code
18:09:45 <Vorpal> wtf
18:09:53 <ais523> zzo38: the Debian/Ubuntu package
18:09:54 <Vorpal> ais523, what...?
18:09:57 <Vorpal> ais523, how?
18:10:00 <ais523> also vlc, but that's more plausible
18:10:15 <ais523> Vorpal: giving it a malformed config filename on the command line
18:10:25 <ais523> presumably it calculates its length wrong and does a buffer overflow, or something
18:10:37 <Vorpal> ais523, so it requires root then basically on normal setups?
18:11:00 <Vorpal> I'm not too worried then. No obvious way to use this for privilege escalation.
18:11:39 <ais523> Vorpal: indeed, it seems not to be suid
18:11:40 <ais523> so it's probably OK
18:11:45 <fizzie> There was a privilege escalation bug in logrotate earlier.
18:11:50 <fizzie> Though not in the default configuration.
18:12:02 <ais523> fizzie: I assume it has some SUID configuration?
18:12:25 <fizzie> "A shell command injection flaw was found in the way logrotate handled the shred directive. A specially-crafted log file could cause logrotate to execute arbitrary commands with the privileges of the user running logrotate (root, by default). Note: The shred directive is not enabled by default. (CVE-2011-1154)"
18:12:31 -!- Taneb has quit (Ping timeout: 252 seconds).
18:12:34 <fizzie> Though you'd still need to be able to craft that logfile.
18:12:46 <fizzie> I don't know how specially it would need to be crafted.
18:12:59 <fizzie> I.e. would it be enough to just write a user-agent field in an apache log or something.
18:13:04 <ais523> they never do say, for good reason
18:14:08 <fizzie> The summary may also be a bit misleading; from the CVE overview it looks like you'd need to put shell metacharacters in the log file name itself.
18:14:28 <fizzie> So just being able to insert stuff in a logfile wouldn't be enough.
18:14:37 <ais523> is logrotate written in shellscript? or just uses the shell to do some of its commands?
18:15:07 <fizzie> "The shred_file function in logrotate.c in logrotate 3.7.9 and earlier might allow --"
18:15:14 <fizzie> So the latter.
18:16:09 <ais523> my mind immediately went "bash has functions, and a .c extension doesn't necessarily mean anything"
18:16:12 <ais523> but I admit you're probably right
18:16:35 <fizzie> The "shred" configuration directive causes it to use an external command for supposedly-secure log file deletion.
18:16:46 <fizzie> I guess it was passing the log file name to that without worrying about metacharacters.
18:17:15 <fizzie> And did it in a systemy fashion and not an execy one.
18:17:18 -!- BeholdMyGlory has quit (Remote host closed the connection).
18:17:33 <zzo38> Depends whether it goes through the shell parsing and whether the filename starts with -
18:17:56 <Vorpal> ais523, hm.... echo -n '#!/bin/bash\n...' > foo.hs
18:18:09 <Vorpal> err
18:18:11 <Vorpal> echo -e
18:18:13 <Vorpal> not -n
18:18:15 <Vorpal> duh
18:19:10 -!- BeholdMyGlory has joined.
18:20:23 <zzo38> One thing you can do on shebang lines is to type -- after the name of the program, at least, is my idea. But modern kernel don't do suid with #! scripts anyways... but I still type -- when a shell script meant to be run on root account anyways
18:34:36 <ais523> Vorpal: don't you need both?
18:34:43 <ais523> echo has to quote its command line literally if the first arg isn't -n
18:34:54 <ais523> so in POSIX mode, you have to do -n -e in order to get escaping with GNU echo
18:35:17 <Vorpal> ais523, heh
18:35:22 <Vorpal> ais523, I didn't know that
18:35:26 <Vorpal> ais523, what about -ne?
18:35:33 <ais523> I think they have to be separate
18:35:48 <ais523> (POSIX leaves -n's behaviour impl-defined; GNU echo defines it as "suppress final newline and also accept the -e option")
18:36:05 <Vorpal> ais523, implementation defined? Seriously?
18:36:14 <ais523> Vorpal: there's a lot of impl-defined stuff in POSIX
18:36:17 <Vorpal> ais523, so... what do other echos do with -n
18:36:28 <ais523> Vorpal: some echo it literally
18:36:41 <Vorpal> heh
18:36:57 <pikhq_> Vorpal: That's the traditional UNIX behavior.
18:37:07 <ais523> I've been discovering all sorts of interesting things about POSIX recently
18:37:13 <ais523> such as mount(2) being nonstandard
18:37:23 <ais523> it's Linux-specific; I certainly didn't expect that
18:37:23 <Vorpal> pikhq_, so why did POSIX say that -n was implementation defined at all? Why not just don't have it?
18:37:35 <ais523> Vorpal: because some echos do suppress final newline on -n
18:37:40 <Vorpal> ais523, afaik mount(1) is non-standard too
18:37:51 <pikhq_> Vorpal: Echo cannot accept arguments.
18:37:59 <Vorpal> pikhq_, yes it can... -n :P
18:38:04 <ais523> Vorpal: mount(1) isn't a syscall, so I didn't look at it
18:38:07 <pikhq_> Vorpal: No.
18:38:18 <pikhq_> Vorpal: POSIX forbids echo from accepting arguments.
18:38:20 <Vorpal> pikhq_, according to ais523 and POSIX?
18:38:34 <pikhq_> Vorpal: It also leaves "-n" implementation-defined.
18:38:38 <Vorpal> right
18:38:47 <pikhq_> Vorpal: But it's not an argument.
18:38:48 <Vorpal> pikhq_, which leaves a way open for it to accept options :P
18:38:52 <ais523> oh, so it doesn't take -n as an argument, it takes it as a string that might cause it to act differently
18:38:57 <Vorpal> hehe
18:39:01 <pikhq_> ais523: Precisely.
18:39:09 <Vorpal> ais523, though at least freebsd has mount(1) I know. Probably a few other *nix too
18:39:26 <pikhq_> Vorpal: mount(1) is available in pretty much every UNIX.
18:39:29 <ais523> I imagine most *nix do, because the FHS is written in a way that expects mount(1) exists
18:39:34 <ais523> so I'm pretty surprise it isn't standard
18:39:51 <ais523> and I'd expect mount(2) to exist in a range of Unices too, just because mount(1) has to do the mounting somehow
18:40:05 <Vorpal> pikhq_, hm. what is the difference between POSIX and Unix exactly? The SuS I guess? But I haven't seen that for ages
18:40:21 <pikhq_> Vorpal: POSIX is a "portable operating system" specification.
18:40:36 <Vorpal> pikhq_, where is Unix defined then, the extra bits like mount(1) and so on
18:40:37 <pikhq_> Vorpal: UNIX is a class of operating systems which generally meet the above spec.
18:40:44 <pikhq_> Loosely defined.
18:40:52 <ais523> for instance, I think Cygwin aims to be POSIXy, not UNIXy
18:40:57 <Vorpal> pikhq_, Single Unix Specification, remember seeing that somewhere...
18:41:04 <Vorpal> but that was like years ago
18:41:06 <ais523> btw, I went and wrote my own statically-linked version of true(1)
18:41:08 <ais523> and straced it
18:41:11 <Vorpal> 2004 edition or something
18:41:14 <pikhq_> The SUS is a strict superset of POSIX.
18:41:17 <Vorpal> ais523, and?
18:41:21 <ais523> any guesses as to which syscalls it uses? (it uses three of them)
18:41:30 <Vorpal> pikhq_, I haven't seen any SUS for POSIX.1-2008 yet
18:41:38 <ais523> err, four, I think there's a call to brk in there too
18:41:39 <Vorpal> ais523, well exit is one
18:41:44 <pikhq_> Vorpal: It exists.
18:41:46 <ais523> yep, that's the obvious one
18:41:51 <pikhq_> SUSv4.
18:42:01 <ais523> it also uses mmap (presumably startup code getting memory)
18:42:03 <Vorpal> pikhq_, isn't that for the 2001 version?
18:42:06 <ais523> and uname, which is the WTFy one
18:42:08 <Vorpal> ais523, hm.
18:42:15 <Vorpal> yeah wtf
18:42:17 <zzo38> You could make "true" and "false" programs shell builtins or write them as programs using machine code, it would not be too difficult to do on each machine; you can also have a C version of the program in case using on computers that it hasn't been ported yet.
18:42:32 <pikhq_> Vorpal: No, that's v3.
18:42:33 <ais523> zzo38: true generally doesn't need to be massively optimised
18:42:39 <ais523> although I'm a little unsure as to what it's doing calling uname
18:42:40 <pikhq_> Also, mount is not SUS.
18:42:41 <Vorpal> zzo38, it is a shell built-in in bash
18:42:50 <Vorpal> $ type true
18:42:50 <Vorpal> true is a shell builtin
18:42:51 <ais523> and this is a version of true I wrote myself, it called no functions
18:42:55 <Vorpal> same for false
18:42:58 -!- Taneb has joined.
18:42:58 <ais523> Vorpal: $ type `which true`
18:43:06 <Vorpal> ais523, yes, it is that as well
18:43:11 <Vorpal> I know
18:43:14 <zzo38> Of course it doesn't *need* to be massively optimized, although it can be done so easily since you don't need all the C stuff and so on.
18:43:22 <pikhq_> zzo38: You need to be able to exec true and false in POSIX.
18:43:23 <Vorpal> $ type `which true`
18:43:23 <Vorpal> /bin/true is /bin/true
18:43:24 <Taneb> Hello
18:43:27 <ais523> happily, ls isn't segfaulting any more
18:43:27 <Vorpal> (silly output)
18:43:44 <ais523> I think I may actually have found a kernel bug; my statically-linked version of cat ended up with two stacks at one point, which overlapped
18:43:59 <pikhq_> Vorpal: Also fun: there is precisely one file guaranteed to exist in POSIX.
18:44:02 <ais523> but it's hard to tell, because what I was doing was insane
18:44:03 <Vorpal> ais523, how?
18:44:04 <pikhq_> Vorpal: /dev/null.
18:44:04 -!- copumpkin has quit (Ping timeout: 264 seconds).
18:44:07 <ais523> I'll see if I can reproduce it standalone
18:44:07 <Vorpal> hm
18:44:13 <Vorpal> pikhq_, :D
18:44:23 <ais523> Vorpal: it turns out that Linux doesn't like you mmaping to the stack guard page
18:44:30 <Vorpal> ais523, I can imagine that
18:44:31 <zzo38> pikhq_: Yes you can just make a machine code file. Such optimization is not particularly important although it can be done very easily.
18:44:34 -!- copumpkin has joined.
18:44:35 <Vorpal> ais523, why the fuck would you even do that
18:44:35 <ais523> (the page before the stack that's unallocated so stack overflows can cause segfaults)
18:44:45 <ais523> Vorpal: well, nothing was using it...
18:44:57 <ais523> but it reacts to it by allowing the map and shrinking the stack one page
18:45:00 <zzo38> (You might even be able to store the program in the ELF header, and this can be done for some other programs too)
18:45:02 <Taneb> Damn
18:45:02 <Vorpal> pikhq_, where is /dev/zero defined btw? I kind of relied on that in some shell scripts I think. Nothing to serious if the file is not there
18:45:10 <Taneb> Just wrote =+ 1 instead of += 1
18:45:13 <ais523> the bug seems to happen if you do it repeatedly, after doing it twice I ended up with two stacks of different lengths, according to /proc/self/maps
18:45:28 <Vorpal> <ais523> Vorpal: well, nothing was using it... <-- were you out of other available pages to mmap?
18:45:33 <ais523> Vorpal: no
18:45:38 <Taneb> Plus side is, I have ice cream
18:45:44 <Vorpal> ais523, did you even *need* to specify a specific address to mmap it at?
18:45:45 <ais523> but I'd written "mmap the last available page before the stack", without thinking of implications
18:45:48 <ais523> and yes, I did
18:45:54 <pikhq_> Vorpal: Traditional behavior.
18:46:01 <Vorpal> ais523, why on earth? Hardware related?
18:46:03 <ais523> although the exact value didn't matter, I needed to specify something
18:46:06 <ais523> and no, not because of that
18:46:10 <Vorpal> ais523, then what
18:46:18 <Vorpal> pikhq_, ouch
18:46:20 <ais523> this program is insane, I thought you'd realised that by now
18:46:32 <ais523> I mean, how else can you make ls segfault?
18:46:34 <Vorpal> ais523, how soon until you can tell us what on earth it does
18:46:42 <ais523> Vorpal: when I've finished it)
18:46:42 <pikhq_> It's also LSB.
18:46:51 <ais523> s/\)//
18:46:54 <pikhq_> Along with /dev/tty, and *nothing else*.
18:46:56 <zzo38> The reason they purchased ice cream is because ice cream is good to eat and anyways they don't sell cane. O no, their mother will get mad at them when they get home.
18:47:00 <Vorpal> ais523, any idea when that is? next week? next month? next year? in 10 years?
18:47:14 <ais523> about a week of actually working on it
18:47:19 <ais523> and I probably won't work on it continuously
18:47:22 <Vorpal> ais523, You are making interest sky rocket when you keep mentioning it like this :P
18:47:27 <ais523> Vorpal: I know
18:47:40 <ais523> btw, what API does X use to actually draw on screen? framebuffer?
18:47:46 <Vorpal> ais523, I will be feel very let down if it isn't something spectacular!
18:47:55 <Vorpal> ais523, I presume it depends on the driver.
18:48:01 <ais523> hmm, that makes sense
18:48:07 <ais523> annoying, but makes sense
18:48:11 <ais523> I don't want to have to reimplement X too
18:48:13 <Vorpal> ais523, for most drivers, part is done in kernel
18:48:25 <Vorpal> ais523, not only for binary drivers
18:48:34 <ais523> reimplementing init was easy, reimplementing mmap only took a day or so (because I hadn't realised that ASLR was turned on, and then it took me a while to figure out how to turn it off for just one process)
18:49:28 <Vorpal> ais523, my guess for something like nvidia binary driver would be that it mmaps a range of shared pages with the kernel module... And what the kernel does is hard to know, some DMA thing probably
18:49:40 <pikhq_> ais523: The fuck are you *doing*?
18:49:52 <ais523> pikhq_: it's a secret for now
18:50:01 <Vorpal> ais523, I would presume a similar setup for most other drivers
18:50:09 <ais523> at the moment specifically, I'm making a list of all the syscalls in Linux and sorting them into categories
18:50:10 <Vorpal> ais523, at least all that have hardware acceleration
18:50:34 <Vorpal> ais523, somehow I can't imagine controlling a screen by PIO using syscalls for each written byte :P
18:50:35 <pikhq_> Anyways, *most* Linux X drivers are actually going through the DRM layer.
18:50:36 <ais523> Linux actually has undocumented syscalls, but from a grep of the kernel, they all appear to do nothing
18:50:42 <pikhq_> Which is not even *slightly* X-specific.
18:51:00 <Vorpal> ais523, undocumented ones such as?
18:51:03 <ais523> what I'm trying to do with that is to confuse X into thinking it's talking to the kernel, when in fact it's talking to a usermode process
18:51:08 <ais523> and to grab its output/input
18:51:14 <ais523> Vorpal: let me check
18:51:29 <pikhq_> ais523: Um, good luck in the general case.
18:51:37 <ais523> Vorpal: _newselect
18:51:40 <ais523> pikhq_: indeed
18:51:47 <Vorpal> ais523, that uh... How would you grab it's output? That doesn't even make sense. Use a X server that targets vnc or such instead. Much saner
18:51:55 <pikhq_> ais523: It's effectively a kernel-mode process for some drivers.
18:51:56 <Vorpal> I seen some of those
18:51:57 <ais523> I'm trying to work out whether it's easier or harder than reimplementing X
18:52:21 <Vorpal> ais523, just reuse an X server that uses vnc as backend
18:52:23 <Vorpal> that exists
18:52:30 <zzo38> There is also Wayland, although in my opinion neither X nor Wayland is designed perfectly.
18:52:35 <ais523> hmm, that might be worth considering
18:52:39 <pikhq_> Namely, anything where it needs to have the GPU's framebuffer mmaped.
18:52:59 <Vorpal> ais523, I assume you don't care about hardware acceleration anyway... Because that will be impossible in your setup.
18:53:03 <ais523> what about SDL? it appears to use framebuffer as a fallback (I actually ran Wesnoth on the control-alt-F1 console, although I had to be root), but I can't figure out what it's using as its first choice
18:53:10 <ais523> Vorpal: I do care, I want to make sure it isn't being used
18:53:18 <pikhq_> ais523: Depends on environment variables.
18:53:26 <Vorpal> ais523, then the vnc variant should work :P
18:53:28 <ais523> hmm, good to know
18:54:02 <Vorpal> ais523, I believe there is an x11-framebuffer server too
18:54:12 <Vorpal> forgot what it was called
18:54:21 <ais523> the one thing I've pretty much admitted defeat on is UIDs, I don't think you can namespace those in Linux
18:54:44 <ais523> Vorpal: well, if everything went through framebuffer, then it'd make life easier, as framebuffer is just the one character special device
18:54:47 <ais523> to implement
18:54:48 <Vorpal> pikhq_, do you know where the code for the loopback interface is in the kernel? It isn't drivers/net/loopback.c, at least not for the actual packet handling...
18:55:24 <Vorpal> ais523, that is just one X11 backend though. You are not going to pull this off for the general case.
18:56:20 <ais523> it doesn't need to be the general case wrt X backends
18:56:22 <ais523> just wrt programs
18:56:25 <pikhq_> Meh, a conforming C environment is permitted to make X just summon nasal demons, anyways.
18:56:37 <ais523> most programs don't care about the backend, just the frontend
18:57:14 <zzo38> What I would think can be good is to have a SDL-like interface, where you have different windows and the window manager owns the root window and can intercept things from the child windows and do some other stuff. And can also have clipboard buffers such as PRIMARY, SECONDARY, CLIPBOARD. The "screen size" is actually the size of the window
18:57:22 <Vorpal> ais523, well as long as you don't plan to get nvidia-settings, catalyst-control-center or other similar softwares running :P
18:57:34 <ais523> Vorpal: heh, I think I'll give a miss on nvidia-settings
18:57:39 <pikhq_> Vorpal: Nasal demons.
18:57:41 <ais523> I don't think I'd expect that to work
18:57:43 <pikhq_> Vorpal: :)
18:57:47 <ais523> even ping(1) I'm putting off for later
18:57:57 <Vorpal> pikhq_, right
18:58:17 <Vorpal> ais523, hm shouldn't be TOO hard in 3.0 what with the new SOCK_ICMP thingy
18:58:48 <ais523> yep, it's doable, it's just not a priority
18:58:55 <Vorpal> ais523, http://kernelnewbies.org/LinuxChanges#line-69
18:58:58 <ais523> the problem is simulating the other end of the connection
18:59:08 <ais523> to get it to send the pong
18:59:09 <Vorpal> ais523, what the...
18:59:38 <Vorpal> ais523, you know what might be easier? Running two linux in qemu and set up a virtual network between them
18:59:45 <Vorpal> linux instances*
18:59:48 <zzo38> It should do so that you can run Linux properly with various devices but not needing any proprietary drivers running on the CPU.
19:00:09 <zzo38> (And not even included in the system)
19:00:37 <ais523> Vorpal: well, yes, that seems like the simplest method
19:00:46 <Vorpal> ais523, I'm pretty certain you are doing some sort of layer-above-kernel to virtualise or emulate user space programs, making them not know what their environment is
19:00:58 <Vorpal> I don't know why you are doing it this insane way you are doing though
19:01:08 <Vorpal> so probably I have missed some important thing here
19:01:13 <ais523> Vorpal: yes, that's a decent description for what I'm doing, although it doesn't explain why
19:01:19 <ais523> as you've noted
19:01:51 <zzo38> Is there USB Plan 9 Protocol drivers for Windows and Linux? (and also FreeBSD and Mac OS X)
19:02:12 <Vorpal> ais523, oh there are plenty of reasons, I just don't know which one. Could be as a security measure for example. Or for running older software. Or for a controlled testbed environment (the "simulating the other end of the connection" bit seems to point at this)
19:02:19 <Vorpal> and there are plenty of other options
19:02:50 <Vorpal> ais523, that "always pid 2" points towards a controlled reproducible testbed environment too
19:03:01 <zzo38> Are there any USB devices that use Plan 9 Protocol?
19:03:08 <ais523> zzo38: I doubt it
19:03:13 <Vorpal> .... what
19:03:15 <ais523> Plan 9 isn't all that popular among hardware manufacturers
19:03:24 <Vorpal> wouldn't USB devices use the USB protocol?
19:03:38 <Vorpal> I mean, how the fuck would it even work otherwise
19:04:18 <zzo38> Vorpal: No, I mean using the Plan 9 Protocol on top of the USB protocol.
19:04:36 -!- Phantom_Hoover has joined.
19:04:39 <Vorpal> zzo38, on top of which USB device type protocol?
19:04:50 <Vorpal> I mean it defines things like mass storage, HID, and so on iirc
19:05:09 <Vorpal> hm I guess there is some type reserved for "vendor specific"
19:05:12 <zzo38> I don't know, maybe it is necessary to add a new device type (or maybe not)
19:05:51 <zzo38> Or as an alternate data on top of an existing protocol depending on the device (if this is possible)
19:06:19 <Vorpal> no idea
19:06:49 <zzo38> Because I think they should be designed any new kind of USB device, instead of using proprietary protocols you can use Plan 9 Protocol instead.
19:08:01 <zzo38> Does Plan 9 even have a driver for using Plan 9 Protocol on USB?
19:08:18 <Vorpal> what /is/ the plan 9 protocol exactly?
19:08:56 <pikhq_> Vorpal: It's Plan 9's remote filesystem protocol.
19:09:05 <pikhq_> And, being Plan 9, therefore Plan 9's remote everything protocol.
19:09:15 <Vorpal> pikhq_, so not suitable for general purpose USB really?
19:09:20 <pikhq_> Sure it is!
19:09:25 <Vorpal> pikhq_, what about interrupts?
19:09:29 <pikhq_> Remember, everything is a file.
19:09:40 <pikhq_> For reals.
19:10:00 <Vorpal> pikhq_, yes I know. But what about interrupts, suspending the usb bus, and so on
19:10:29 <pikhq_> Dunno.
19:14:20 * Phantom_Hoover notes that Dresden Codak remains on the tenth strip of an arc that began over a year ago.
19:14:30 <Sgeo> Hmm.
19:14:39 <Sgeo> I want to try OS/2 Warp now
19:16:40 * pikhq_ notes that Dresden Codak has the worst update schedule.
19:16:52 <Phantom_Hoover> pikhq_, ah, I see your mistake.
19:17:01 <Phantom_Hoover> You are assuming that there *is* an update schedule.
19:17:10 <pikhq_> Phantom_Hoover: That is the worst update schedule.
19:17:38 <Phantom_Hoover> pikhq_, can it be called an update schedule if there are no updates?
19:17:42 <Vorpal> pikhq_, what about that webcomic that elliott talk about. That hardly ever updates?
19:17:52 <Vorpal> I forgot what it was called?
19:17:52 <Phantom_Hoover> Perry Bible?
19:17:57 <Vorpal> s/?//
19:18:02 <Vorpal> Phantom_Hoover, I think it had Torvalds in it
19:18:19 <Vorpal> and RMS and so on
19:18:22 <Phantom_Hoover> Oh, Everybody Loves Eric Raymond.
19:18:36 <Vorpal> Phantom_Hoover, that hardly ever updates either
19:18:39 <Phantom_Hoover> The one which, when it updates, will be the harbinger of the apocalypse.
19:18:49 <Vorpal> right
19:19:11 <Vorpal> my point was, that must be a worse update schedule
19:20:39 <Phantom_Hoover> You are making the same mistake.
19:20:56 <Phantom_Hoover> For there to be an update schedule, updates must, at some point, come out.
19:21:06 <Vorpal> Phantom_Hoover, it is an update-schedule: int days_to_next_updates = random()
19:21:16 <ais523> can't they be scheduled to come out once every ten years, or whatever?
19:21:18 <Phantom_Hoover> You could just as well ask the update schedule of a banana.
19:21:21 <ais523> Vorpal: what's RAND_MAX on your system? 2^32-1?
19:21:31 <Vorpal> ais523, well random returns a long int on my system
19:21:35 <Vorpal> hm
19:21:42 <Vorpal> ais523, rand() != random() though
19:21:47 <ais523> oh, right
19:21:49 <Vorpal> different types on return value
19:21:55 <Phantom_Hoover> ais523, indeed, but to infer this two updates ten years apart would have to have come and less than ten years would have had to have passed since the last.
19:22:36 <ais523> Phantom_Hoover: what if it was stated rather than inferred?
19:23:05 <Phantom_Hoover> ais523, then it would only be worth considering if it was not completely at odds with the evidence.
19:23:26 <fizzie> random() in POSIX is said to return in the [0, 2^31-1] range.
19:23:33 <Vorpal> hm
19:23:51 <Phantom_Hoover> Admittedly, as it stands, ELER is scheduled to update on 21st December 2012.
19:23:52 <fizzie> While rand() returns from 0 to RAND_MAX, and RAND_MAX >= 32767.
19:23:54 <ais523> ooh, thanks for linking me that page about changes in 3.0
19:24:14 <ais523> setns() looks... useful for what I'm doing
19:24:22 <ais523> although the workaround with clone() flags is working well for me so far
19:24:25 <Vorpal> ais523, lol
19:25:00 <Vorpal> ais523, I presume you are using ptrace for this? To be able to catch system calls happening
19:25:07 <ais523> indeed
19:25:19 <ais523> I tried single-step but it was too slow
19:25:28 <Vorpal> ais523, that still doesn't deal with stuff like me opening /dev/console and doing ioctls on it
19:25:36 <Vorpal> I have a program that does that even
19:25:39 <ais523> I'm going to have to, umm, reimplement all of /dev
19:25:50 <ais523> except /dev/null and /dev/zero, those were easy
19:25:58 <Vorpal> ais523, fun. ALSA is going to be very very latency sensitive :P
19:25:59 <ais523> as the existing devices work for those
19:26:07 <pikhq_> ais523: Add /dev/tty and you will have reimplemented everything a LSB application can use.
19:26:10 <pikhq_> :)
19:26:15 <ais523> pikhq_: LSB?
19:26:20 <Vorpal> pikhq_, what, really!?
19:26:21 <pikhq_> Linux Standard Base.
19:26:24 -!- oerjan has joined.
19:26:29 <Vorpal> oerjan, hi
19:26:36 <pikhq_> Vorpal: Yes, really.
19:26:38 <ais523> I'm probably going to make a pty and connect stdout/in/err to it
19:26:43 <ais523> I may as well place it at /dev/tty too
19:26:51 <ais523> you can copy ptys just by copying device numbers, right?
19:26:52 <Vorpal> what *is* /dev/null btw?
19:26:55 <oerjan> hi Vorpal
19:26:58 <pikhq_> Vorpal: EOF
19:27:04 <Vorpal> pikhq_, and that isn't in LSB?
19:27:04 <ais523> Vorpal: it's a character special file, reads always return EOF, writes always succeed but do nothing
19:27:15 <pikhq_> Vorpal: /dev/null, /dev/zero, and /dev/tty are in LSB.
19:27:17 <fizzie> ais523: Don't forget /dev/full.
19:27:18 <Vorpal> and why on earth is /dev/full useful?
19:27:23 <ais523> Vorpal: for testing programs
19:27:26 <Vorpal> aha
19:27:32 <oerjan> /dev/bull
19:27:34 <pikhq_> Vorpal: That is the entire contents of the LSB /dev hierarchy.
19:27:34 <ais523> you can redirect stdout to /dev/full, and see if they behave gracefully or stupidly
19:27:54 <ais523> $ cp /etc/passwd /dev/full
19:27:56 <ais523> cp: writing `/dev/full': No space left on device
19:28:18 <ais523> it's a great way of checking to see if people are checking the return value of fclose()
19:28:19 <Vorpal> ais523, hm... there are some devices in my /dev that would be very hard to do in user space
19:28:35 <ais523> Vorpal: well, it depends on if people are actually using them
19:28:39 <Vorpal> pikhq_, what about /dev/urandom?
19:28:46 <ais523> I'm starting off with an empty /dev, and implementing things in it as necessary
19:28:50 <Vorpal> ais523, /dev/random and /dev/urandom will be easy too
19:28:55 <ais523> oh no they won't :)
19:29:06 <Vorpal> ais523, ... definitely testbed :P
19:29:32 <ais523> I thought of putting /dev/zero at each of them, but I'm worried some programs will go into infinite loops if their randomness sources do that
19:29:36 <Vorpal> ais523, /dev/snapshot, /dev/vga_arbiter /dev/rtc0, /dev/sda
19:29:48 <Lymee> Make /dev/random return this:
19:29:52 <Vorpal> ais523, of course if you don't want to implement fake "running as root" it will be way easier
19:29:53 <ais523> /dev/sda is easy, it's readable only by root
19:30:00 <ais523> and I'm not faking running as root
19:30:03 <Lymee> > map (%256) [0..]
19:30:10 <ais523> partly because root can trivially escape a chroot
19:30:12 <pikhq_> Vorpal: Nope.
19:30:20 <ais523> (mkdir x; chroot x; cd ..; chroot .)
19:30:26 <Vorpal> ais523, then you make a lot of system calls return EACCESS or similar
19:30:28 <Lymee> lambdabottttt
19:30:31 <Lymee> ;a;
19:30:31 <oerjan> lambdabot is missing? :(
19:30:34 <ais523> I think that mechanism of escaping chroots is in there deliberate
19:30:38 <ais523> *deliberately
19:30:43 <ais523> Vorpal: I'm not emulating every system call
19:30:46 <ais523> just tinkering with their params a bit
19:30:49 <ais523> and return values
19:30:58 <pikhq_> ais523: Stallman didn't design the chroot syscall.
19:31:00 <Vorpal> ais523, I see...
19:31:19 <oerjan> Lymee: you can use EgoBot, although it is a bit different, and has trouble with infinite list output (so use take to shorten it)
19:31:22 <Vorpal> ais523, also /proc/self will be fun
19:31:42 <Vorpal> ais523, especially the very weird symlinks found in there...
19:31:43 <ais523> Vorpal: that's one of the few things I have workign correctly already
19:31:54 <tswett> You know, NOMW could be made Turing-complete (or whatever the probabilistic equivalent is) using a crossover square, I think.
19:31:55 <oerjan> Lymee: oh also % won't be imported by default
19:31:56 <ais523> in fact, I'm catting things in /proc/self in order to test my program
19:31:58 <Vorpal> ais523, what? symlinks to removed files in /dev/fd wortk?
19:32:00 <Vorpal> work*
19:32:11 <tswett> Say that if a square is +, then a bobule can enter it, but it cannot leave by a 90-degree angle from the way it entered.
19:32:15 <ais523> did you know that Linux allows you to mount multiple proc filesystems /that give different results/?
19:32:19 <oerjan> !haskell take 80 $ map (Ratio.%256) [0..]
19:32:24 <EgoBot> ​[0%1,1%256,1%128,3%256,1%64,5%256,3%128,7%256,1%32,9%256,5%128,11%256,3%64,13%256,7%128,15%256,1%16,17%256,9%128,19%256,5%64,21%256,11%128,23%256,3%32,25%256,13%128,27%256,7%64,29%256,15%128,31%256,1%8,33%256,17%128,35%256,9%64,37%256,19%128,39%256,5%32,41%256,21%128,43%256,11%64,45%256,23%128,47%256,3%16,49%256,25%128,51%256,13%64,53%256,27%128,55%256,7%32,57%256,29%128,59%256,15%64,61%256,31%128,63%256,1%4,65%256,33%128,67%256,17%64,69%256,35%128,71%256,9%32
19:32:29 <Vorpal> ais523, yes, all that fancy namespace crap
19:32:32 <Lymee> um
19:32:33 <ais523> that's what I'm doing
19:32:34 <Vorpal> ais523, my kernel is compiled without it
19:32:41 <Vorpal> because to me, it is useless
19:32:44 <ais523> well, you won't be able to run my program then
19:32:46 <ais523> it's pretty useful to me
19:32:49 <Lymee> !haskell take 80 $ map ((flip mod) 256) [0..]
19:32:52 <tswett> Boom, transistors.
19:32:52 <EgoBot> ​[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79]
19:33:00 <Vorpal> ais523, well if you tell me what your program is I might recompile the kernel :P
19:33:05 <ais523> heh
19:33:07 <oerjan> Lymee: you can use (`mod` 256)
19:33:15 <ais523> those options are on by default, right?
19:33:17 -!- elliott_ has joined.
19:33:19 <Vorpal> ais523, btw, have you check if plash does what you want?
19:33:23 <ais523> othewrise everyone will have to recompile their kernel
19:33:31 <elliott_> ais523: oh, have you revealed what it is?
19:33:36 <ais523> no
19:33:39 <Vorpal> ais523, uh no idea. I incrementally updated my .config over the years
19:33:45 <ais523> Vorpal's been guessing, and come to similar conclusions to you
19:34:04 <Vorpal> elliott_, no but he leaked enough and I'm pretty certain he is doing something like virtualisation or emulation of user space programs
19:34:15 <elliott_> that's the obvious part
19:34:23 <elliott_> "for what purpose" is the part I guessed at
19:34:24 <Vorpal> elliott_, *probably* for some sort of controlled reproducible test bed system.
19:34:50 <ais523> that is a good description, although I don't mind you figuring out that part, because it's reasonably obvious and not the whole thing
19:35:02 <Vorpal> elliott_, since it seems he wants to emulate remote network (wrt ping) and /dev/urandom "wouldn't be easy"
19:35:07 <ais523> no, I don't
19:35:10 <Sgeo> Don't you hate it when you try to do something awesome, then realize it's completely mathematically impossible?
19:35:11 <ais523> I turned off networking so I wouldn't have to do that
19:35:16 <Vorpal> ais523, right
19:35:37 <ais523> Sgeo: it doesn't happen too much
19:35:41 -!- sebbu2 has joined.
19:35:41 -!- sebbu2 has quit (Changing host).
19:35:41 -!- sebbu2 has joined.
19:36:10 <oerjan> Lymee: every ordinary identifier can be turned into an operator by putting `` around it, and every operator identifier can be turned into an ordinary one by putting () around it. (although you cannot iterate this)
19:36:33 -!- sebbu has quit (Ping timeout: 258 seconds).
19:37:17 <oerjan> although you need a ghc option to do it for types
19:38:28 <Vorpal> oerjan, it is sad that you can't iterate it. That would allow stuff like `(* 2 +)` or such
19:38:32 <Vorpal> (well not exactly that)
19:38:54 <oerjan> Vorpal: that's not quite iterating, although yes that might be useful
19:39:01 <Vorpal> oerjan, indeed
19:39:09 <Lymee> That could be an extension, right?
19:39:13 <oerjan> yeah
19:39:21 <Vorpal> oerjan, but iterating it is only really useful if you can build up expressions between the iterations
19:39:24 <oerjan> but afaik it hasn't been implemented
19:39:38 <Vorpal> oerjan, I mean `(`(+)`)` is utterly useless
19:39:44 <oerjan> yeah
19:39:57 <ais523> Agda seems to use _+_ rather than (+); is there any reason for the change?
19:40:09 <ais523> _+_ looking more mathematical, perhaps?
19:40:17 <ais523> (its syntax is otherwise mostly identical to Haskell's with a few extensions)
19:42:36 <oerjan> ais523: isn't that sort of part of its mixfix syntax, you can have as many _'s as you want
19:42:49 <ais523> aha, that may be what it's about
19:42:51 <ais523> I didn't know it did that
19:42:53 <zzo38> Can a Haskell code be prettyprinted?
19:42:57 <ais523> and that's quite a nifty feature
19:43:00 * oerjan doesn't actually know agda
19:43:00 <ais523> zzo38: I don't see why not
19:43:05 <ais523> oerjan: neither do I
19:43:12 <zzo38> And what is _+_ and (+) means?
19:43:13 <ais523> but it turns out I have an Agda fanatic as a coworker
19:43:19 <ais523> and want to be able to at least vaguely understand what he's doing
19:43:39 <oerjan> zzo38: those are agda's and haskell's way of referring to the + operator as a value, respectively
19:43:59 <oerjan> (of function type)
19:44:07 <ais523> oerjan: actually, in Agda there's no + operator by default, you have to implement it by hand
19:44:13 <oerjan> ah
19:44:18 <Sgeo> http://www.impredicative.com/ur/tutorial/intro.html not that far down, but so far, I think I can wrap my brain around it
19:44:45 <Sgeo> I spoke too soon, this syntax I need to slow down for
19:45:32 <Sgeo> Awesome, compose is more understandable than id :/
19:45:47 <oerjan> zzo38: there is a program called hs2tex or something like that which prettyprints haskell, i believe people sometimes use it for math papers. it replaces -> and stuff with proper math symbols.
19:45:51 <zzo38> Yes I do think being able to refer to operators as function value can be useful in some cases.
19:45:57 <Sgeo> (Well, compose has more... elaboration in its syntax, which makes it more uunderstandable by context)
19:46:04 <Sgeo> fun id [a] (x : a) : a = x
19:46:09 <Sgeo> fun id [a] (x : a) : a = x
19:46:10 <Sgeo> oops
19:46:15 <Sgeo> fun compose [a] [b] [c] (f : b -> c) (g : a -> b) (x : a) : c = f (g x)
19:46:40 <oerjan> zzo38: also ghc has an option for allowing unicode for many things
19:46:41 <zzo38> oerjan: Does it just put every line without > at the start directly as TeX codes?
19:47:01 <Vorpal> <ais523> oerjan: actually, in Agda there's no + operator by default, you have to implement it by hand <-- not in the standard library!?
19:47:08 <zzo38> And lines with > prettyprinted Haskell codes converted to TeX?
19:47:11 <ais523> Vorpal: you even have to implement integers by hand
19:47:16 <oerjan> zzo38: hm i would guess it uses the \begin{code} convention
19:47:22 <Vorpal> ais523, what does the standard library have then
19:47:25 <ais523> my coworker's master's project was about automatically detecting people trying to implement integers and optimising them into native integers
19:47:31 <Vorpal> heh
19:47:43 <Vorpal> ais523, why not make a standard library with these in?
19:48:14 <ais523> possibly there is one; I'm not too clear on the details
19:48:50 <oerjan> <zzo38> Yes I do think being able to refer to operators as function value can be useful in some cases. <-- it is quite frequently used
19:48:51 <zzo38> Well I suppose it can be modified to use > if you prefer that way
19:49:20 <oerjan> !haskell zipWith (+) [1..10] [100, 200.. 1000]
19:49:23 <EgoBot> ​[101,202,303,404,505,606,707,808,909,1010]
19:49:35 <zzo38> oerjan: Well, in Haskell perhaps it is very useful although in other programming language with function values it can be useful in a few cases to be able to make such thing.
19:51:35 <oerjan> <Sgeo> fun id [a] (x : a) : a = x <-- i guess agda's type system requires that for flexible use. the a would be an implicit type parameter, i think?
19:51:49 <Sgeo> Agda?
19:52:00 <Sgeo> That's Ur that I pasted
19:52:03 <oerjan> oh.
19:52:04 <zzo38> For proper Knuth-style literate programming, you would also have index, table of contents, named chunks, and possibly a macro preprocessor if it is useful. (As well as commands that affect how the different kind of operators and so on are treated when making the printout)
19:52:37 <oerjan> Sgeo: i thought you were still talking about agda. although my guess for what the ur means still stands.
19:52:58 <Sgeo> I was never talking about Agda. Other people were talking about Agda.
19:53:12 <Sgeo> And... I _think_ that guess is correct
19:53:21 <zzo38> Are there symbols or combinations of symbols not used in Haskell? I read the documentation. Is `` (with nothing in between) invalid, for example? Others?
19:53:25 <oerjan> Sgeo: which is why i was confused, you gave a link and i frequently don't bother to visit links
19:53:31 <Sgeo> "Then there's parametric polymorphism. Unlike in ML and Haskell, polymorphic functions in Ur/Web often require full type annotations. That is because more advanced features (which we'll get to in the next chapter) make Ur type inference undecidable."
19:53:36 <oerjan> so i assumed you were linking to an agda tutorial
19:54:12 <oerjan> Sgeo: oh it's that dependent web language that was posted on reddit?
19:54:43 <oerjan> with a for hire ad, iirc
19:54:44 <Sgeo> I didn't know it was posted on Reddit, but "dependent web language" sounds right. Well, for Ur/Web. Ur itself is not necessarily web related
19:54:58 <oerjan> *hiring
19:55:16 <oerjan> oh so there's a plain ur too...
19:55:28 * oerjan may not have bothered to visit that link either ;D
19:55:29 <zzo38> But what else I want to have is Literate LLVM, maybe I will invent that some day (I can call it LWEB maybe)
19:55:40 <zzo38> (with file extension .llw)
19:55:57 <ais523> I dislike LLVM, it makes all sorts of assumptions that are true in practice but I don't like
19:56:30 <monqy> is C-- dead?
19:56:31 <zzo38> There are a few things I also dislike about LLVM, although I have made suggestions to correct these things.
19:56:45 <elliott_> 02:59:42: <itidus20> Yet Another Haskell Tutorial by some guy Hal Daume
19:56:45 <elliott_> oh dear
19:56:57 <elliott_> monqy: it's only ever been alive in GHC, I think
19:56:58 <zzo38> One thing I like to have would be constraint analysis.
19:57:10 <monqy> about what is that itidus20 quote
19:57:18 <elliott_> monqy: what he's reading
19:57:19 <zzo38> (I even have ideas about how constraint analysis would work.)
19:57:22 <elliott_> oh wait this is an ancient log
19:57:23 <elliott_> well
19:57:25 <elliott_> ancient =a day
19:57:36 <oerjan> zzo38: well if you use latex you can use its table of contents feature, i assume
19:57:49 <oerjan> zzo38: i believe `` is a syntax error, yes.
19:58:04 <elliott_> <oerjan> zzo38: well if you use latex you can use its table of contents feature, i assume
19:58:09 <elliott_> oerjan: don't talk to zzo about latex :O
19:58:18 <oerjan> O KAY
19:58:27 <ais523> Oracle have bought ksplice?
19:58:30 <ais523> I didn't see that one coming
19:58:36 <ais523> although in retrospect, it's not a ridiculous thing for them to do
19:58:36 <oerjan> but that's what most people using hs2tex would be doing
19:59:12 <zzo38> That is, you can use things that would be syntax error in Haskell to get out of Haskell code mode, if making a Knuth-style literate programming system for Haskell...
19:59:17 <Sgeo> Hmm
19:59:38 <Sgeo> I don't know if I understand enough ML to grasp this module system stuff :/
19:59:52 <oerjan> zzo38: i believe (almost?) every printable ascii character is either alphanumeric, a legal operator character, or used in the syntax.
19:59:55 <Sgeo> My understanding of everything prior was fueled by my understanding of Haskell
19:59:57 <oerjan> (in haskell)
19:59:58 <Vorpal> <ais523> Oracle have bought ksplice?
19:59:59 <Vorpal> ouch
20:00:01 <Vorpal> just ouch
20:00:45 <zzo38> oerjan: Yes, but some combinations can be syntax errors, which is why you can use those combinations for such things.
20:01:05 <zzo38> Is `` the only one such or is other combinations possible that can do that?
20:01:07 <oerjan> zzo38: and mostly everything which does not combine into an operator or an identifier (which might be a keyword in either case) will split
20:01:22 <ais523> most characters are legal inside strings
20:01:30 <ais523> I suppose """ may be a combination that isn't legal in any context at all but comments
20:01:38 <ais523> how do Haskell comments work again?
20:01:57 <ais523> (or can you write a "string1""string2" in Haskell?)
20:02:03 <ais523> > (++) "a""b"
20:02:08 <oerjan> zzo38: '' is also illegal at the start of a token i think, since ' needs to be escaped inside character classes. and also anything with ' ...more than one character representation... '
20:02:15 <ais523> @eval (++) "a""b"
20:02:19 <oerjan> *character literals
20:02:48 <oerjan> inside strings, you can get errors due to nonexisting escapes
20:02:56 <oerjan> !haskell "\fnord"
20:02:58 <EgoBot> ​"\fnord"
20:03:01 <oerjan> oops
20:03:02 <Vorpal> oerjan, could do that as an extension. Overloaded Character literals or something
20:03:09 <oerjan> oh wait \f _is_ an escape
20:03:20 <oerjan> !haskell "\possibly not fnord"
20:03:33 <Vorpal> oerjan, it probably drops errors
20:03:34 <oerjan> that gave an error
20:03:39 <Vorpal> it does for me anyway
20:03:42 <oerjan> Vorpal: no, it sends them in DCC
20:03:49 <Vorpal> oerjan, ah.. DCC is broken for me
20:03:55 <Sgeo> Ok, so if I understand this correctly, kinds are ... bigger in Ur than in Haskell, in that they encompass more than just types
20:04:05 <Sgeo> Kinds are the "types" of more than types
20:05:15 <Sgeo> Oh, derp, I misunderstood what it meant by "type families", so now that bit's clearer. What I said just before is still true though
20:05:27 <oerjan> Sgeo: i don't know.
20:06:30 <oerjan> zzo38: mind you '' is still legal inside other identifiers, because of haskell's decision to support the common mathematical x', x'' naming
20:06:55 <Sgeo> Ok, I think I'm getting this
20:07:28 <zzo38> I read the document it seems the "\&" is good, some C document says only 2 hex digits after \x but I have had it allow any number of "\x000000000000000" is still a single character, for example. So, if it had "\&" like Haskell then you can avoid that. Maybe I can make a next version of Enhanced CWEB to support such things and convert it to work with a C compiler.
20:08:08 <oerjan> zzo38: ,+ is another sequence which i don't think is legal, because most operators cannot begin an unparenthesized expression
20:08:37 <oerjan> (, being a delimiter and so not part of an operator)
20:09:12 <Vorpal> oerjan, it would be legal in a haskell comment
20:09:46 <zzo38> Yes, and in strings, but there would be a parser to check for these things which needs to do so anyways for prettyprinting and indexing.
20:10:35 <oerjan> <ais523> I dislike LLVM, it makes all sorts of assumptions that are true in practice but I don't like <-- well if you're big enough you can probably get a patch in to add options, like the ghc people did
20:10:48 <ais523> oerjan: it's more its fundamental design
20:10:54 <Vorpal> ais523, what sort of things does it assume?
20:11:07 <zzo38> Maybe some things can be done using LLVM metadata?
20:11:20 <elliott_> 12:49:55: <CakeProphet> I think Perl was the earliest language in the C family to have map and filter operators.
20:11:20 <elliott_> FSVO C family
20:11:24 <ais523> Vorpal: that all its commands can be implemented via native-code commands that have the same semantics as one of its operators
20:11:33 <ais523> Perl is C family?
20:11:35 <zzo38> That is, have a metadata to tell it what thing not to assume, maybe
20:11:37 <elliott_> according to CakeProphet
20:11:39 <pikhq_> Perl's Awk family.
20:11:49 <pikhq_> If it can be said to have a family at all.
20:12:12 <Vorpal> ais523, uh they probably can. Using something like libgcc in worst case
20:12:20 <oerjan> <elliott_> oh dear <-- you think YAHT is too obsolete? i already advised him that he should get the haskell platform instead of hugs if he was serious (he said, hypocritically >:) )
20:12:25 <ais523> Vorpal: it's a false assumption for BF
20:12:47 <Vorpal> ais523, Ah, what in specific can you not implement by emulation?
20:12:52 <elliott_> oerjan: Yeah, I told him about LYAH later I think
20:13:01 <ais523> gcc tries not to make that assumption; it doesn't actually /work/, but that's due to bugs not design issues
20:13:03 <elliott_> oerjan: and I saw that at the time, that's what made me realise it was an old conversation
20:13:05 <pikhq_> I mean... Haskell's more C family than Perl.
20:13:12 <pikhq_> Because Haskell allows for direct memory access.
20:13:14 <elliott_> pikhq_: Well, er, no.
20:13:17 <pikhq_> Well.
20:13:20 <ais523> Vorpal: well, BF requires a temporary to do the equivalent of MOV from x86
20:13:27 <pikhq_> Technically, C doesn't. Just common implementations do.
20:13:33 <ais523> gcc has actually taken that possibility into account; LLVM hasn't
20:13:47 <pikhq_> elliott_: I realise that Haskell isn't very C-like. Neither is Perl.
20:14:04 -!- CakeProphet has quit (Ping timeout: 264 seconds).
20:14:08 <monqy> bye
20:14:08 <ais523> Perl also allows for direct memory access, I think, somehow
20:14:13 <Vorpal> ais523, okay, but surely that could be done in the code gen by having every other cell be a temporary?
20:14:13 <ais523> probably a really obscure method involving libraries
20:14:23 <pikhq_> Oh, right, it *is* Perl.
20:14:26 <pikhq_> It has everything.
20:14:28 <ais523> Vorpal: gcc-bf reserves a temporary for that
20:14:48 <elliott_> oh no
20:14:48 <Vorpal> ais523, right
20:14:54 <ais523> but it's ugly having to do most of the code generation in ld
20:14:55 <Vorpal> ais523, so it can be done then in bf
20:15:02 <oerjan> <ais523> (or can you write a "string1""string2" in Haskell?) <-- yes
20:15:04 <ais523> I'd rather have the compiler do it
20:15:04 <Vorpal> I mean it isn't fundamentally impossible
20:15:23 <ais523> gcc-bf I mostly gave up on when it came to implementing rightshifts and multiplication
20:15:26 <elliott_> > "a""b"
20:15:28 <ais523> too much effort
20:15:30 <Vorpal> ais523, ah
20:15:40 <ais523> elliott_: I've been getting no reply from lambdabot trying that
20:15:48 <ais523> looking at the users lists, I suspect it's because lambdabot isn't here
20:15:51 <Vorpal> :D
20:15:53 <ais523> rather than because it barfs on it, though
20:16:06 <elliott_> heh
20:16:07 <Vorpal> !haskell "a""b"
20:16:07 <ais523> not on Freenode, in fact
20:16:12 <elliott_> Vorpal: won't work
20:16:19 <elliott_> !haskell print "oh""no"
20:16:22 <Vorpal> hm
20:16:23 <ais523> !haskell putStr ((++) "a""b")
20:16:25 <EgoBot> ab
20:16:31 <ais523> I win, I think
20:16:34 <Vorpal> yes
20:16:34 <monqy> rest in peace lambdabot????
20:16:41 <ais523> monqy: it'll probably be back later
20:16:48 <monqy> nap in peace
20:16:50 <elliott_> rest in pace;sdgfh
20:16:57 <elliott_> `addquote <monqy> rest in peace lambdabot???? <ais523> monqy: it'll probably be back later <monqy> nap in peace
20:17:00 <Vorpal> ais523, hm I wonder why pthread_cancel is defined as a weak symbol in my libgcc
20:17:01 <HackEgo> 528) <monqy> rest in peace lambdabot???? <ais523> monqy: it'll probably be back later <monqy> nap in peace
20:17:14 <Vorpal> along with a few more pthread functions
20:17:23 <ais523> Vorpal: I'm not sure, I don't think I'm going to get pthreads workign
20:17:24 <ais523> *working
20:17:32 <elliott_> 14:22:39: <cheater_> it's because python is descriptive rather than declarative
20:17:32 <elliott_> 14:22:51: <cheater_> or rather prescriptive
20:17:32 <elliott_> 14:23:40: <cheater_> well, i think "imperative" does not focus on the important aspect of the difference between so called "imperative" languages and so called "functional" langauges
20:17:32 <elliott_> this log is unbearably bad
20:17:36 <ais523> at least, not if the threads use futexes, which they probably will
20:17:45 <ais523> as they do too much in userspace
20:17:50 <pikhq_> elliott_: *wince*
20:17:52 <Vorpal> ais523, maybe some other libgcc function depends on pthread calls iff pthread is loaded?
20:17:55 <ais523> elliott_: wait what?
20:18:02 <ais523> I can't figure out if that's wrong or meaningless
20:18:04 <Vorpal> ais523, and just stubs it out if it doesn't need to care about threads?
20:18:09 <ais523> or correct but pointless, like a tautology
20:18:13 <ais523> Vorpal: perhaps
20:18:15 <ais523> maybe errno
20:18:20 <elliott_> ais523: that applies to most things cheater_ says
20:18:30 <elliott_> 14:23:59: <cheater_> i mean you can perfectly well say that python is an imperative, functional language
20:18:36 <elliott_> cool story, tell me more
20:18:44 <elliott_> 14:24:25: <cheater_> functional means a function is a first class object
20:18:44 <elliott_> i see
20:19:02 <monqy> dying
20:19:05 <elliott_> 14:26:07: <cheater_> "functional" is a very flimsy description of haskell, erlang, ocaml and lisp
20:19:05 <elliott_> common lisp is not a functional language. nor is scheme.
20:19:11 <elliott_> the others are. well, maybe not erlang.
20:19:13 <Vorpal> ais523, possibly some functions like __register_frame_info_table_bases or __emutls_register_common that are in there
20:19:23 <Vorpal> __enable_execute_stack? What? Come on
20:19:35 <Vorpal> some unwind functions there too
20:19:37 <zzo38> I have a lot of ideas of how constraint analysis could work in LLVM. There can be forward constraints, and in some cases (such as reaching "unreachable") backward constraints, and then constranits based on trap values (such as "add nuw"), etc
20:19:45 <ais523> so, any idea what _newselect(2) is for?
20:19:51 <ais523> it isn't documented, and it isn't implemented either AFAICT
20:20:06 <ais523> not even as a redirect to _ni_syscall like the other unimplemented syscalls
20:20:16 <ais523> I suppose I could try calling it to see what error I got, but that feels messy
20:20:19 <Vorpal> ais523, where is it even mentioned it?
20:20:24 -!- KingOfKarlsruhe has joined.
20:20:32 <ais523> Vorpal: in the kernel headers that specify syscall numbers
20:20:33 <Vorpal> s/it\?/it/
20:20:37 <Vorpal> heh
20:20:48 <ais523> and the number doesn't seem to clash with any others
20:20:50 <Vorpal> ais523, is it a low or high number?
20:20:54 <ais523> mediumish
20:20:56 <Vorpal> hm
20:21:04 <Vorpal> could be some abandoned thing
20:21:11 <ais523> the leading underscore confuses me too
20:21:13 <zzo38> What else I would like in LLVM is if you can tell it to store constant values in code space if possible (in the alignment padding, or in case it exactly matches an instruction), and store variables in the immediate operands to instructions if possible, etc
20:21:15 <ais523> syscall names normally don't start with one of those
20:21:20 <ais523> abandoned thing is my guess too
20:22:14 <Vorpal> ais523, greping kernel sources reveals #define __NR__newselect in lots of arch/*/include/asm/unistd.h plus this line:
20:22:17 <Vorpal> ./scripts/checksyscalls.sh:#define __IGNORE__newselect
20:22:32 <ais523> Vorpal: indeed, I did that too
20:22:33 <Vorpal> ./arch/blackfin/include/asm/unistd.h:/* 142 __NR__newselect obsolete */
20:22:33 <Vorpal> hm
20:22:37 <Vorpal> well
20:22:45 <ais523> asm/unistd.h is the file responsible for syscall numbers (in the various arches)
20:22:47 -!- nooga has joined.
20:22:55 <Vorpal> ais523, I find this quite amusing: ./arch/mips/include/asm/unistd.h:#define __NR__newselect(__NR_Linux + 142)
20:22:58 <ais523> and checksyscalls.sh checks to see that every syscall is implemented on every arch, minus the ones defined as ignored
20:22:59 <Vorpal> __NR_Linux?
20:23:14 <ais523> Vorpal: maybe it's trying to avoid a number clash with some other OS
20:23:24 <Vorpal> #define __NR_Linux 4000
20:23:31 <Vorpal> * Linux o32 style syscalls are in the range from 4000 to 4999.
20:23:50 <Vorpal> heh
20:23:55 <Vorpal> there is a huge #ifdef here
20:24:00 <Vorpal> * Linux 64-bit syscalls are in the range from 5000 to 5999.
20:24:00 <Vorpal> */
20:24:00 <Vorpal> #define __NR_Linux 5000
20:24:02 <Vorpal> further down
20:24:11 <Vorpal> and then the entire define list AGAIN
20:24:22 <Vorpal> why the hell do they repeat the lines like:
20:24:24 <Vorpal> #define __NR_read (__NR_Linux + 0)
20:24:33 <Vorpal> oh god
20:24:37 <Vorpal> it is different for different modes
20:24:39 <Vorpal> #define __NR_syscall (__NR_Linux + 0)
20:24:41 <Vorpal> for another one
20:24:53 <ais523> x86 and x64 have different syscall numbers
20:25:03 <ais523> and one syscall (mmap2) actually takes different parameters on the two architectures
20:25:07 <zzo38> Do you know anything about constraint analysis?
20:25:07 <Vorpal> ais523, why on earth?
20:25:13 <Vorpal> * Linux N32 syscalls are in the range from 6000 to 6999.
20:25:13 <Vorpal> */
20:25:13 <Vorpal> #define __NR_Linux 6000
20:25:21 <ais523> Vorpal: well, mmap2 is designed for 32-bit systems to open files larger than 32 bits
20:25:26 <Vorpal> heh
20:25:32 <ais523> and ditto for 64 bits, but they changed the scaling factor
20:25:32 <Vorpal> ais523, so it isn't needed on 64-bit then
20:25:39 <Vorpal> ais523, err what
20:25:49 <ais523> mmap2 is like mmap but you specify the offset in units of 4K
20:25:54 <ais523> (4KiB, that is)
20:26:01 <Vorpal> ais523, you mean larger than 64 bits on x86-64?
20:26:09 <ais523> except on 64-bit, you specify the offsets in units of the page size
20:26:10 <ais523> Vorpal: I think so
20:26:15 <ais523> which might not be 4KiB exactly
20:26:29 <Vorpal> ais523, err x86/x86-64 page size *is* 4KiB
20:26:44 <ais523> Vorpal: that makes the man page look a bit weird
20:26:58 <Vorpal> ais523, unless you mean huge-pages, but they are the exception, not the nrom
20:26:58 <ais523> perhaps they're allowing for a potential future change in page size, but think it'll only happen on 64-bit platforms not 32-bit platforms
20:26:59 <Vorpal> norm*
20:27:12 <Vorpal> like, allows you to create specially crafted 1 MB or larger pages
20:27:21 <ais523> it's probably about that, then
20:27:21 <oerjan> <elliott_> common lisp is not a functional language. nor is scheme. <-- i think that's a rather big shift from the historical use of the phrase. like refusing to call neanderthals humans.
20:27:40 <Vorpal> ais523, no it can't be... because that is decided on by a per-page basis
20:27:50 <Vorpal> ais523, so that doesn't make any sense here
20:28:18 <elliott_> oerjan: OK, Scheme probably counts
20:28:23 <elliott_> oerjan: But Common Lisp is unquestionably non-functional
20:28:25 <elliott_> Ask any Lisper
20:28:30 <ais523> it's hard to define functional languages well
20:28:46 <elliott_> oerjan: Higher-order functions are rare in Common Lisp outside of things like map
20:28:55 <elliott_> And those are usually done with LOOP or ITERATE, even
20:29:01 <ais523> my working definition of non-imperative is languages in which assignment to mutable variables is nonidiomatic
20:29:15 <ais523> in common Lisp, setq is fairly common, isn't it?
20:29:17 <Vorpal> $ getconf PAGESIZE
20:29:21 <Vorpal> 4096
20:29:27 <ais523> Vorpal: it's 4096 on my system too
20:29:36 <elliott_> ais523: setf is common, steq isn't
20:29:38 <elliott_> setq
20:29:41 <Vorpal> ais523, any x86 system will give that. Same for x86-64
20:29:46 <ais523> what does setf do?
20:29:53 <elliott_> 14:41:56: <cheater_> i would say, map paintRed fence = "a fence which is red"
20:29:53 <elliott_> 14:42:09: <cheater_> you would say map paintRed fence = "a fence which has been painted red"
20:29:59 <elliott_> this is the stupidest thing ever omg shut up you idiot
20:30:17 <elliott_> ais523: (let ((x (cons 9 0))) (setf (car x) 0) x) ==> (0 . 0)
20:30:19 <monqy> wow what
20:30:21 <monqy> i
20:30:23 <ais523> elliott_: I'd interpret "map paintRed fence" as "what results when every component of a fence is painted red"
20:30:24 <elliott_> basically it's setq that can set forms with defined setters, too
20:30:39 <ais523> ah, OK, a generalised version
20:30:40 <elliott_> so it doubles as a raw variable setter and a structure mutator
20:30:49 <elliott_> yep, it's generally referred to as generalised setq
20:30:52 <elliott_> the f is for Form
20:30:54 <elliott_> setq is set quote
20:30:58 <elliott_> because it used to be (set 'var x)
20:31:05 <elliott_> back when lisps were dynamically scoped and also crap
20:31:13 <ais523> like in C++, setq corresponds to memcpy(&a, &b, sizeof b) and setf corresponds to a=b?
20:31:53 <elliott_> ais523: Sure, although it's more like a=b where a must be a variable name
20:31:58 <elliott_> That memcpy can also write to structure members
20:32:30 <Vorpal> $ getconf -a | grep PAGE
20:32:30 <Vorpal> PAGESIZE 4096
20:32:30 <Vorpal> PAGE_SIZE 4096
20:32:31 <Vorpal> what?
20:33:11 <oerjan> PAGES_I_ZE
20:33:29 <Vorpal> oerjan, alas, they forgot that one
20:34:22 <ais523> actually, isn't it possible to overload & in C++?
20:34:25 <oklopol> oesrijgreoijg
20:34:43 <pikhq_> elliott_: memcpy(&a + offsetof(foo, b), &b + offsetof(foo, b), sizeof(b.foo)); ?
20:34:46 <pikhq_> ais523: Yes.
20:34:49 <pikhq_> ais523: Also *.
20:34:54 <ais523> what about sizeof?
20:34:55 <pikhq_> ais523: And cast to void*.
20:34:59 <ais523> overloading unary * makes more sense
20:35:03 <Vorpal> ais523, not -> though afaik
20:35:06 <Vorpal> or maybe
20:35:07 <Vorpal> hm
20:35:25 <fizzie> -> is overloadable, IIRC.
20:35:27 <Vorpal> isn't it either -> or . you can't overload?
20:35:33 <Sgeo> "[...] demos that intentionally use incorrect style because it's easier to present in a short demo [...]
20:35:33 <Sgeo> That one"
20:35:33 <fizzie> But the "." is not, and neither is the ternary operator.
20:35:35 <fizzie> Or sizeof.
20:35:40 <Sgeo> http://www.reddit.com/r/programming/comments/hidsa/opa_one_language_for_all_the_stack_forget/
20:35:57 <pikhq_> operator-> is overloadable.
20:35:58 <fizzie> And the :: namespace thing, and the ".*" pointer-to-member mess.
20:36:04 <pikhq_> Also ->*
20:36:10 <ais523> what does .* actually do?
20:36:38 <elliott_> Sgeo: OPA is similar to Ur/Web
20:36:45 <pikhq_> Oh, it's possible to overload *every cast* in C++.
20:36:47 <elliott_> but with more marketing, and unfortunately less typing
20:36:48 <fizzie> ais523: It's used when invoking a pointer-to-member-function.
20:36:52 <elliott_> "also, not to be an ass, but generally speaking and talking about UR (that you mentioned), i don't really trust a web framework with such a raw site." lol
20:36:59 <elliott_> i wish webtards would stop finding Ur
20:37:20 <monqy> is ur any good should i learn it
20:37:32 <Sgeo> elliott_, is that a Opa person who said that or a random person?
20:37:46 <monqy> is opa any good should i learn it
20:37:58 <elliott_> Sgeo: a random person
20:38:03 <elliott_> monqy: ur is good
20:38:10 <elliott_> oh lol, Ur's site has now been updated
20:38:11 <Vorpal> pikhq_, you can't overload casts *between* built in types though
20:38:14 <Vorpal> not even with friend
20:38:18 <monqy> i'll learn ur
20:38:39 <fizzie> ais523: "Foo foo; void (Foo::*)(int) bar = &Foo::baz; foo.*bar(42);" is basically "Foo foo; foo.baz(42);" except messier.
20:39:03 <nooga> C++ sucks so badly
20:39:04 <ais523> ah, I see
20:39:16 <elliott_> nooga: Shhh, C++ is good because of C++ sudoku
20:39:22 <nooga> what
20:39:57 <elliott_> nooga: it's where you try to accomplish some usually-functional-programming-related task in C++0x
20:40:07 <elliott_> It's great, it's the best game, I play it regularly
20:40:20 <elliott_> for instance: maybe<T> in C++ seems easy, but you _cannot_ do it with just a pointer to T
20:40:25 <elliott_> because that forbids T from being a reference type
20:40:37 <elliott_> you have to end up taking advantage of everything being convertible to a bunch of chars and back
20:42:09 <nooga> ingenious
20:44:33 <elliott_> 14:59:05: <cheater_> trying to assign cosmical properties to mathematical objects is called physics
20:44:38 <elliott_> stop
20:44:39 <elliott_> talking
20:44:39 <elliott_> in the past
20:45:48 <monqy> isnt that backwards wow is cheater_ serious in the past
20:45:49 <cheater_> elliott_, only if you promise never to get born
20:45:59 <monqy> cheater_ are you serious in the past
20:46:05 <cheater_> monqy, totally srs
20:46:12 <monqy> :o
20:46:16 <elliott_> cheater_: fuck off
20:46:33 <cheater_> elliott_, are you trying to annoy me or arouse me?
20:46:46 <ais523> I'm wondering whether to logread to see if elliott_'s cheater quotes are real or fake quotes designed to make him look stupid
20:47:03 <elliott_> cheater_: are you trying to be a boring, egotistic shitheadeaded idiot or does it come without effort
20:47:05 <cheater_> ais523, no they're real quotes that are designed to make me look stupid
20:47:06 <elliott_> ais523: real
20:47:19 <elliott_> "shitheadeaded" im good with words
20:47:34 <cheater_> elliott_, it comes naturally
20:47:35 <ais523> you're missing a d at the end
20:47:48 <elliott_> shitheadeadedison
20:48:06 <elliott_> jesus christ how long does this log go on for
20:48:20 <cheater_> YOUR
20:48:21 <elliott_> 15:42:24: <cheater_> in C you'd say to get a maserati GT you'd take a ferrari 430, you'd then change the body work, and then you'd furnish it with a nice interior
20:48:21 <elliott_> 15:43:13: <cheater_> in haskell, you'd say a maserati gt is a ferrari 430 - bodywork - interior + new body work + new interior
20:48:21 <elliott_> this is literally the worst car analogy i've ever read
20:48:21 <cheater_> WHOLE
20:48:22 <cheater_> LIFE.
20:48:32 <cheater_> that's how long this log goes on for.
20:48:42 <ais523> elliott_: that isn't quite as stupid as some of the tohers
20:48:46 <ais523> *others
20:48:50 <elliott_> ais523: the others aren't car analogies
20:48:51 <ais523> although admittedly that isn't difficult
20:49:10 <cheater_> elliott_, i'm glad, i really like car analogies, it's great to reach something outstanding
20:49:11 <ais523> I don't consider car analogies inherently stupid, incidentally
20:49:39 <cheater_> ais523, monads are like cars
20:49:44 <monqy> what isnt stupid about car analogies
20:49:57 <ais523> most car analogies don't compare things to cars in general
20:50:03 <ais523> but specific parts of cars or models of car
20:50:07 <cheater_> monqy, elliott_ is smart about everything.. so i'd say elliott
20:50:25 <monqy> elliott_ is like a car analogy?
20:50:40 <cheater_> monqy, i think he's like a bad car analogy
20:51:17 <cheater_> monqy, i'd say elliott :: humans == maserati gt analogy :: car analogies
20:52:53 <elliott_> monqy: is he really trying to deconvert a cultist of zepto
20:53:43 <ais523> elliott_: oh, disaster: sg(1) is an actual command, so we can't call scapegoat that
20:53:55 <ais523> it's the group equivalent of sg(1)
20:54:00 <ais523> *of su(1)
20:54:06 <elliott_> how have I never tried to run sg before?
20:54:19 <elliott_> ais523: we could lobby for sg to be renamed :-P
20:54:22 <ais523> because it isn't very useful except on a very large system
20:54:23 <monqy> i take it car anaology analogies are unzepto
20:54:26 <elliott_> Or just assume the truth, that nobody uses it
20:54:31 <elliott_> ais523: no but I mean, when talking about scapegoat
20:54:38 <ais523> and is redundant to newgrp anyway
20:54:42 <ais523> elliott_: ah, I see
20:54:57 <ais523> wait, why do sg and newgrp both exist?
20:55:07 <Sgeo> Huh.
20:55:11 <elliott_> ais523: see, we can totally call it sg, it'll be our campaign against redundancy
20:55:25 <elliott_> ais523: oh, sg lets you execute a command, but newgrp doesn't
20:55:26 <Sgeo> I know that, mathematically, something can't work, but I can't figure out what's wrong with my idea of how to do it
20:55:27 <elliott_> so sg is redundant
20:55:31 <ais523> sg appears to have a better name and slightly more options
20:55:31 <elliott_> because the shell does that job with newgrp
20:55:37 <Sgeo> I can't see the flaw that I know must be there
20:55:39 <elliott_> ais523: yes but we deserve that name more >:|
20:55:42 <cheater_> well, back to reading about 12DL8
20:55:44 <elliott_> Sgeo: sigh what is it
20:55:55 <ais523> who do I complain to about design flaws in UNIX?
20:56:05 <Sgeo> elliott_, actually, I'm currently rethinking it in terms of something simpler
20:56:22 <elliott_> ais523: I wish I knew
20:56:29 <ais523> wow, sg has an amateurish manpage
20:56:33 <elliott_> ais523: I'd have a nice cup of tea and a sit down with them
20:56:34 <ais523> it's like it's trying to justify its existence
20:56:36 <elliott_> And talk for about three days
20:56:48 <elliott_> User Commands 02/14/2011 SG(1)
20:56:49 <ais523> I wonder which is specified by POSIX?
20:57:00 <ais523> also contains typos, like "doesnt"
20:58:12 <Sgeo> Derp, that was obvious
20:59:50 <Sgeo> (I thought maybe you could enumerate through all uncountably infinite states of an infinite 2d binary grid by starting at one point, on and off, then expanding it, etc. I finally realized that those are counting through finite pieces of the grid, not the actual infinite grid
20:59:57 * Sgeo can be slow sometimes
21:00:13 <elliott_> X_X
21:00:52 <Sgeo> And yes, I had to rephrase that in terms of 1d before I got it :(
21:01:31 <ais523> what were you trying to count? the polyset of R**2?
21:01:34 <ais523> *powerset
21:01:39 <ais523> I don't know if polyset is even a real word
21:02:09 <Sgeo> In fairness, the motivating thoughtss were in terms of Game of Life, where even on an infinite grid, any particular finite subgrid, at any particular finite time, could only have been influenced by a finite area around it
21:03:22 <elliott_> ais523: you can't do struct foo = ((struct foo){...}) in C99, right?
21:03:26 <elliott_> it has to be struct foo = {...}
21:03:28 <ais523> there are a countable number of black/white colored 2D grids that have only finitely many black squares, I think
21:03:35 <ais523> elliott_: I think you can, actually
21:03:42 <ais523> as you can put any expression you like as an initializer
21:03:57 <ais523> it's the difference between putting a struct initializer there and a struct constant there, but I think they're both legal
21:04:12 <elliott_> ais523: ISTR it not working, but -- oh, I rememberw hat was wrong
21:04:15 <ais523> struct foo = {} is almost certainly more efficient, though
21:04:17 <elliott_> you can do
21:04:18 <ais523> or equal
21:04:22 <elliott_> struct foo = {a,b,{c,d}}
21:04:24 <elliott_> but you can't do
21:04:28 <elliott_> struct foo = {a,b,(struct bar){c,d})
21:04:30 <elliott_> struct foo = {a,b,(struct bar){c,d}}
21:04:31 -!- quintopia has joined.
21:04:32 -!- quintopia has quit (Changing host).
21:04:32 -!- quintopia has joined.
21:04:32 <elliott_> for whatever reason
21:04:39 <ais523> because semantically, ((struct foo){...}) should make a new struct then copy
21:04:47 <ais523> and yes, the reason there is that it doesn't know what type the outside struct should be
21:05:20 <elliott_> err, howso?
21:05:37 <ais523> because C isn't like Perl, context comes from the inside not the outside
21:05:47 <ais523> so it sees type var = expression, not type var = initializer
21:05:51 <ais523> and then doesn't know what type the expression is
21:05:56 <ais523> from the expression itself
21:07:48 <Sgeo> Anyways, it should be perfectly possible to make a viewer that lets you view finite pieces of a infinite GoL soup (given unbounded disk space)
21:07:51 <elliott_> 18:40:05: <Vorpal> pikhq_, hm. what is the difference between POSIX and Unix exactly? The SuS I guess? But I haven't seen that for ages
21:07:54 <elliott_> SuS requires XSI
21:07:56 <elliott_> POSIX doesn't
21:08:00 <Sgeo> I think
21:08:09 <Vorpal> elliott_, that's all!?
21:08:10 <Sgeo> Maybe not efficiently, but that's not the same as impossible
21:08:18 <ais523> what's XSI?
21:08:20 <Vorpal> elliott_, XSI isn't really that big
21:08:22 <ais523> a binary standard?
21:08:39 <pikhq_> ais523: No, just a handful of extra things.
21:08:40 <Vorpal> ais523, last I checked strdup was XSI but not POSIX
21:08:43 <Vorpal> for example
21:08:44 <ais523> ah, aha
21:08:53 <ais523> pretty much everything does strdup even if it isn't standard, though
21:08:57 <ais523> I've been known to actually use it
21:09:11 <pikhq_> I'm pretty sure even Win32 C environments have it.
21:09:12 <Vorpal> `addquote <ais523> pretty much everything does strdup even if it isn't standard, though <ais523> I've been known to actually use it
21:09:13 -!- FireFly has quit (Quit: swatted to death).
21:09:13 <HackEgo> 529) <ais523> pretty much everything does strdup even if it isn't standard, though <ais523> I've been known to actually use it
21:09:25 <ais523> I can't remember if I've ever used alloca
21:09:57 <elliott_> Vorpal: follow the standard
21:09:59 <pikhq_> Oh, in recent POSIX it's actually base, not XSI.
21:10:04 <elliott_> also, how was that funny
21:10:06 <zzo38> strdup is still useful function, but they don't have memdup.
21:10:08 <Vorpal> ah
21:10:39 <ais523> zzo38: have you ever written a program in which memdup would be useful?
21:10:54 <ais523> I find even memcpy, memset, etc, I don't use very often (although I use them occasionally)
21:10:54 <Sgeo> Suppose you want to look at a 5x5 piece at generation 20
21:10:56 <pikhq_> ais523: Actually, memdup could be useful with a somewhat smart libc.
21:11:05 <zzo38> ais523: I do not remember.
21:11:05 <pikhq_> ais523: Namely, one that manages to get the kernel to COW it.
21:11:07 <ais523> pikhq_: what for?
21:11:10 <ais523> ah, I see
21:11:23 <Sgeo> Then, just randomly generate that pieces, as well as 20 cells surrounding it at all sides, and evolve it
21:11:25 <ais523> that would only really work for entire pages
21:11:33 <Sgeo> (Store what you use somewhere)
21:11:50 <zzo38> I have never used alloca in C, although if I write a program in LLVM, I might use it sometimes (LLVM optimizers can change alloca to SSA in some cases)
21:11:52 <Sgeo> The 5x5 piece is correct, even if the 20 cells surrounding it aren't
21:12:02 <elliott_> 18:45:02: <Taneb> Damn
21:12:02 <elliott_> 18:45:10: <Taneb> Just wrote =+ 1 instead of += 1
21:12:04 <elliott_> Ritchie? Is that you?
21:12:28 <pikhq_> No reason you couldn't check to see if the memory block in question is wholy contained on pages.
21:12:32 <ais523> alloca does have genuine use-cases, I sort-of wish it was standard
21:12:35 <elliott_> 18:46:42: <pikhq_> It's also LSB.
21:12:35 <elliott_> 18:46:54: <pikhq_> Along with /dev/tty, and *nothing else*.
21:12:37 <elliott_> /dev/null isn't LSB?
21:12:38 <ais523> *were
21:12:49 <pikhq_> elliott_: /dev/null is as well.
21:12:49 <Vorpal> elliott_, it is. /dev/null is even POSIX
21:12:53 <pikhq_> elliott_: We went over this.
21:13:01 <zzo38> Whoever decided to make =+ to add instead of += made a stupid mistake on the day that they did so.
21:13:02 <elliott_> pikhq_: OK :P
21:13:06 <elliott_> ais523: just use recursion to do alloca
21:13:23 <pikhq_> ais523: It's less useful with variable arrays, though.
21:13:23 <ais523> elliott_: heh, that could get a bit messy
21:13:24 <Vorpal> elliott_, that has a lot of overhead
21:13:33 <zzo38> (Even smart people make a stupid mistake sometimes... but that is how you can learn from it, too.)
21:13:33 <Vorpal> elliott_, and might insert things in the middle
21:13:34 <pikhq_> Which, incidentally, are no longer guaranteed in C.
21:13:42 <Vorpal> elliott_, it would work for linked lists I guess
21:13:48 <Sgeo> Am I just being boring?
21:14:19 <quintopia> always
21:14:38 <elliott_> 18:54:02: <Vorpal> ais523, I believe there is an x11-framebuffer server too
21:14:45 <elliott_> Xfbdev from XDrive, now standard Xorg
21:14:45 <ais523> pikhq_: which version did they remove them in?
21:14:49 <ais523> elliott_: thanks
21:14:56 <elliott_> variable arrays?
21:15:01 <Vorpal> ah
21:15:13 <ais523> at least Wesnoth was a little buggy running in framebuffer, though; it was leaving cursor droppings
21:15:16 <ais523> elliott_: presumably VLAs
21:15:43 <Vorpal> <ais523> at least Wesnoth was a little buggy running in framebuffer, though; it was leaving cursor droppings <-- that was not Xfbdev I think
21:15:47 <elliott_> ais523: why is qemu not suitable for your purpose, btw?
21:15:52 <ais523> Vorpal: it wasn't, it was SDL
21:15:54 <Vorpal> ais523, rather it was probably SDL's fbcon backend
21:15:54 <elliott_> that could give you a controlled environment
21:15:55 <Vorpal> or such
21:15:59 <pikhq_> ais523: C1X has variable length arrays as an optional feature, not mandatory.
21:16:00 <zzo38> What is most levels of indirection you have used?
21:16:05 <zzo38> in C pointers?
21:16:06 <ais523> elliott_: that would give too much away
21:16:10 <ais523> let's just say I tried
21:16:24 <elliott_> ais523: I hate you so much
21:16:31 <pikhq_> ais523: This because some implementors really struggled with it, and even refused to actually implement it.
21:16:34 <Vorpal> ais523, how are we supposed to guess before you tell us unless you give us more hints?
21:16:40 <elliott_> `addquote <Vorpal> ais523, how are we supposed to guess before you tell us unless you give us more hints?
21:16:41 <HackEgo> 530) <Vorpal> ais523, how are we supposed to guess before you tell us unless you give us more hints?
21:16:45 <pikhq_> Most obviously, Microsoft.
21:16:48 <ais523> Vorpal: you aren't
21:16:49 <elliott_> `delquote 529
21:16:50 <HackEgo> ​*poof*
21:16:53 <Vorpal> ais523, damn
21:16:55 <elliott_> swap an unfunny quote for a funny one
21:16:57 <ais523> which one was 529?
21:16:59 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]).
21:17:03 <elliott_> ais523: you saying you used strdup
21:17:05 <pikhq_> There's actually a decent chance that Microsoft will implement C1X, though.
21:17:05 <ais523> ah
21:17:09 <ais523> you're right, that isn't too funny
21:17:18 <Vorpal> elliott_, why was that one unfunny.
21:17:26 <pikhq_> What with the *mandatory* features being not that much on top of what they'll need for C++0x.
21:17:27 <ais523> Microsoft not implementing C99 will marginalise them in the communities that care about C99
21:17:28 <zzo38> It seems some of the features of C1X that are made optional are some features of C99 that I don't like. Is that partially it?
21:17:30 <Vorpal> it was still somewhat funny
21:17:30 <elliott_> Vorpal: because it didn't have any comedic elements
21:17:36 <ais523> which is, umm, people looking for a FORTRAN replacement, mostly
21:17:43 <ais523> elliott_: it had one, which wasn't very good
21:17:52 <zzo38> What features of C1X are not optional features?
21:18:00 <ais523> which was implying that I only used library functions which had passed some sort of Ais523 Approval Test^TM
21:18:04 <elliott_> zzo38: presumably quite a lot
21:18:08 <ais523> zzo38: I imagine things like addition
21:18:11 <Vorpal> elliott_, it did. It would be like ais523 torrenting something almost
21:18:13 <elliott_> zzo38: functions, perhaps?
21:18:27 <ais523> Vorpal: what, using strdup?
21:18:31 <Vorpal> ais523, heh
21:18:31 <zzo38> Yes, addition, functions, etc. I mean any C99 features and new features
21:18:43 <elliott_> 19:08:18: <Vorpal> what /is/ the plan 9 protocol exactly?
21:18:43 <elliott_> 9P
21:18:44 <ais523> 99% OF USES OF STRDUP ARE ILLEGAL!
21:18:44 <Vorpal> ais523, how would you torrent using strdup
21:18:50 <Vorpal> elliott_, *aha*
21:18:50 <zzo38> Not things such as addition and function
21:18:51 <pikhq_> zzo38: Unicode, anonymous structs and unions, alignment specification, type-generic expressions.
21:19:00 <ais523> Vorpal: you misparsed my sentence
21:19:04 <elliott_> `addquote <ais523> 99% OF USES OF STRDUP ARE ILLEGAL!
21:19:05 <HackEgo> 530) <ais523> 99% OF USES OF STRDUP ARE ILLEGAL!
21:19:07 <Vorpal> ais523, oh.... right
21:19:14 <Vorpal> elliott_, now that one wasn't very funny :P
21:19:14 <ais523> I was trying to guess at what "it" in your sentence referred to
21:19:25 <pikhq_> zzo38: So, in large part features most compilers already *have*.
21:19:31 <zzo38> Anonymous structs and unions are useful I have used it a lot.
21:19:32 <Vorpal> ais523, the quote
21:19:42 <elliott_> Vorpal: it was ais acting very out of character, when taken out of context
21:19:44 <elliott_> and it's also absurd
21:19:48 <Vorpal> elliott_, yes
21:19:51 <Phantom_Hoover> Hmm, the flag of Hawaii still has a Union Jack on it for some reason.
21:19:53 <elliott_> it is, therefore, quotable
21:19:55 <elliott_> but for reasons other than humour
21:19:57 <ais523> elliott_: it's only funny out of context
21:19:57 <pikhq_> Oh, yeah, and static assertions.
21:20:02 <ais523> but agreed
21:20:07 <Vorpal> elliott_, yeah mine was quotable too
21:20:07 <pikhq_> And gone is gets.
21:20:12 <elliott_> Vorpal: oh, shut up
21:20:16 <ais523> and the allcaps are a giveaway that it was meant to be in a context
21:20:17 <nooga> http://pastebin.com/MthxxLrd
21:20:18 <elliott_> you never win quote wars, stop trying
21:20:20 <Vorpal> elliott_, for stylistic reasons
21:20:27 <elliott_> you're like asiekierka trying to set the topic to something idiotic
21:20:30 <nooga> this hack is quite nice
21:20:32 <nooga> cto
21:20:33 <Vorpal> elliott_, no I don't do that
21:20:33 <Phantom_Hoover> Vorpal, would you just shut up OK.
21:20:34 <elliott_> you know it's not going to work
21:20:42 <zzo38> What are 99% uses of strdup which are illegal?
21:20:51 <Phantom_Hoover> Never have you added a disputed quote that was even vaguely amusing.
21:20:53 <elliott_> zzo38: strdup can be used to transfer illegal material across the internet
21:20:58 <ais523> elliott_: who does "you" refer to there?
21:21:05 <elliott_> ais523: {asiekierka,Vorpal}
21:21:10 <ais523> thanks
21:21:50 <ais523> a sufficiently advanced operating system probably could do network access with strdup
21:21:56 <zzo38> I don't think 99% uses of strdup necessarily has anything to do with internet at all
21:22:12 <ais523> zzo38: you've pretty much completely missed the context
21:22:16 <ais523> but it would take too long to explain
21:22:22 <zzo38> OK
21:22:43 -!- confab has joined.
21:22:52 <elliott_> confabulations
21:22:57 <elliott_> wow that's a word???
21:23:09 <nooga> http://pastebin.com/MthxxLrd http://pastebin.com/MthxxLrd http://pastebin.com/MthxxLrd
21:23:10 <elliott_> omg it is.
21:23:11 <quintopia> it successfully confabulated you
21:23:24 <quintopia> with zzo
21:25:06 <ais523> how many people here know of the sendfile(2) system call?
21:25:09 <ais523> it looks really interesting
21:25:18 <ais523> and I wonder if cp is implemented in terms of it
21:25:27 <pikhq_> Not GNU cp, at least.
21:25:38 <pikhq_> It implements a complex buffering scheme on top of stdio.
21:25:41 <ais523> pity it's nonportable (it's in the category of "widely implemented but not with the same semantics on every platform", like ptrace)
21:25:48 <elliott_> <ais523> how many people here know of the sendfile(2) system call?
21:25:49 <elliott_> everyone
21:25:54 <elliott_> it's used in every web server ever
21:26:11 <ais523> that makes sense
21:26:37 <elliott_> ais523: and
21:26:38 <elliott_> Presently (Linux 2.6.9): in_fd, must correspond to a file which supports
21:26:38 <elliott_> mmap(2)-like operations (i.e., it cannot be a socket); and out_fd must refer
21:26:38 <elliott_> to a socket.
21:26:42 <elliott_> ais523: so you can't do cp or anything with it
21:26:47 <elliott_> that's a really stupid restriction, though
21:26:48 <ais523> oh, that's ridiculous
21:27:14 <ais523> I missed that bit
21:27:43 <ais523> let's all rage at stupid restrictions on sendfile for a bit
21:28:33 <elliott_> ais523: it probably exploits some property of sockets
21:28:38 <elliott_> and obviously uses memory mapping to read from the FD
21:28:50 <ais523> yep, thus the "must be mmapable" restriction
21:29:05 <elliott_> ais523: but it would avoid buffer copying and syscall overhead, I suppose, even without those restrictions
21:29:19 <ais523> yep, I bet the kernel would be faster at copying one fd to another than userspace would
21:29:22 <elliott_> ais523: have I raved yet today about how syscalls are the cost of a CALL instruction in @?
21:29:32 <ais523> elliott_: not while I've been in here
21:29:49 <elliott_> ais523: woo rave rave rave
21:29:53 <ais523> what's the benefit of using CALL over using INT?
21:30:00 <elliott_> ais523: much faster
21:30:04 <elliott_> syscalls are really expensive
21:30:06 <elliott_> function calls arent
21:30:07 <elliott_> 't
21:30:20 <elliott_> well, technically @ has no syscalls, you just get passed functions that happen to access hardware in a privileged manner
21:30:24 <elliott_> but the point is that it has no syscall overhead
21:30:27 <ais523> elliott_: are they expensive because they use INT? or for some other reason?
21:30:34 <pikhq_> ais523: It's a context switch.
21:30:37 <elliott_> ais523: because interrupts are slow, I think, and because you have to copy data
21:30:39 <elliott_> and what pikhq_ said
21:30:43 <ais523> what you probably mean is, "system calls don't need context switches"
21:30:49 <elliott_> right
21:30:50 <ais523> which is a better thing to rave about
21:30:54 <pikhq_> ais523: To do a context switch, you have to flush the pipeline and the page table.
21:30:57 <elliott_> i'm no OS guy, unfortunately; not yet
21:31:10 <pikhq_> And, hence, the cache.
21:31:15 <elliott_> ais523: incidentally, a _lot_ of Synthesis' speed improvements came from optimising the kernel<->user space transition
21:31:19 <elliott_> BUT NOT AS MUCH AS @ DOES
21:31:27 <ais523> </usr/include/sys/user.h> /* The whole purpose of this file is for GDB and GDB only. Don't read too much into it. Don't use it for anything other than GDB unless you know what you are doing. */
21:31:40 <elliott_> do those warnings ever stop anyone?
21:31:47 <pikhq_> No.
21:31:59 <elliott_> I've all but given up on access restrictions of any kind in programming, because nobody ever cares about them
21:32:00 <ais523> elliott_: they didn't stop me, although they did vaguely make me want to look at GDB source as that's the only place I was going to get decent documentation
21:32:12 <ais523> in the end, I looked at various other sources, including the kernel's
21:32:14 <elliott_> although some are necessary for security (<-- @ view of things showing through)
21:32:39 <ais523> what it really means is "we don't think anything important but gdb is going to use this code, so we aren't going to bother to document it"
21:32:45 <elliott_> for instance, you don't want any old code getting the "cast a bunch of bytes into an arbitrary type" function
21:32:53 <ais523> and it was a pain to work out what it did, as a result
21:32:57 <elliott_> because you could construct a safe pointer-accessor object pointing to some privileged code
21:32:59 <ais523> it's a really really system-specific file, anyway
21:33:03 <elliott_> and cast it to a pointer-accessor
21:33:12 <elliott_> and use it to get a hold of e.g. the send byte to port function
21:33:23 <ais523> elliott_: that sounds a bit like Java's security model
21:33:34 <elliott_> ais523: Java doesn't use capability security, AFAIK
21:33:42 <elliott_> @ is practically based around it
21:33:55 <elliott_> especially because its native means of execution is basically arbitrary remote code execution
21:34:02 <ais523> elliott_: it theoretically uses SecurityManager, which is designed around capabilities, it just makes a hash of it
21:34:08 <elliott_> (you just reference an object that happens to not be on your computer, and it fetches it from the @ternet)
21:34:24 <elliott_> (it could be a game of Asteroids, say)
21:34:27 <ais523> struct user_regs_struct { long int ebx; long int ecx; long int edx; long int esi; long int edi; long int ebp; long int eax; long int xds; long int xes; long int xfs; long int xgs; long int orig_eax; long int eip; long int xcs; long int eflags; long int esp; long int xss; };
21:34:28 <elliott_> (and it'd run and display as native code)
21:34:32 <ais523> most system-specific struct ever?
21:34:35 <elliott_> (note: this means that I basically have Flash but better)
21:34:46 <elliott_> (you can embed games into a page, and they're exactly identical to native-code games)
21:34:47 <ais523> elliott_: or ActiveX but less broken?
21:34:50 <elliott_> ais523: well, indeed
21:35:01 <ais523> I am using that struct
21:35:05 <elliott_> it's also kind of like the original web browser in that there's no local/remote distinction
21:35:06 <elliott_> ais523: ouch
21:35:10 <ais523> to get at the arguments to syscalls, which are in registers at the time
21:35:30 <ais523> Linux only allows six arguments to a syscall, because then it runs out of registers
21:35:43 <pikhq_> elliott_: I take it that @ isn't based around arbitrary *machine code* execution, though.
21:35:50 <elliott_> ais523: why not just use __asm__?
21:35:57 <elliott_> pikhq_: well, no
21:36:01 <ais523> elliott_: for what?
21:36:07 <ais523> I'm trying to get at the args to a syscall in a different process
21:36:09 <elliott_> ais523: to get at registers
21:36:12 <elliott_> a
21:36:13 <elliott_> h
21:36:27 <ais523> so I'm looking for the context-switched-out copy of the registers, not the current process registers
21:36:39 <ais523> the whole file is about grabbing the context that's been switched out of a process
21:37:18 <ais523> it's different for x86 and x64 for that reason (I'm aiming at x86 for the time being)
21:37:33 <elliott_> "x64"
21:37:34 <elliott_> please don't
21:37:40 <ais523> elliott_: sorry
21:37:47 <elliott_> hmm, I hope there's an Intel chip actually ending in that
21:37:53 <ais523> the platform needs some name
21:37:54 <elliott_> so I can talk about it and confuse people
21:38:06 <ais523> they should call their 64-b
21:38:07 <ais523> struct user_regs_struct
21:38:09 <ais523> {
21:38:10 <ais523> long int ebx;
21:38:12 <ais523> long int ecx;
21:38:13 <ais523> long int edx;
21:38:14 <elliott_> ais523: I usually say x86-64, because it's official enough, generic, and underscores are ugly
21:38:15 <ais523> long int esi;
21:38:16 <ais523> long int edi;
21:38:18 <ais523> long int ebp;
21:38:19 <ais523> long int eax;
21:38:21 <ais523> long int xds;
21:38:22 <ais523> long int xes;
21:38:24 <ais523> long int xfs;
21:38:25 <ais523> long int xgs;
21:38:27 <ais523> long int orig_eax;
21:38:28 <ais523> long int eip;
21:38:30 <ais523> long int xcs;
21:38:31 <ais523> long int eflags;
21:38:33 <ais523> long int esp;
21:38:34 <ais523> long int xss;
21:38:36 <ais523> };
21:38:37 <ais523> gah, what just happened?
21:38:39 <ais523> did I accidentally paste a 20-line struct?
21:38:39 <elliott_> ais523: I'm annoyed at you for being ais523, because Vorpal would have whined at anyone else by now
21:38:40 <ais523> if so, sorry
21:38:43 <elliott_> yes, but I don't mind
21:38:56 * ais523 puts a single letter on the clipboard
21:39:01 <ais523> just in case it happens again
21:43:32 -!- elliott_ has quit (Remote host closed the connection).
21:43:46 <zzo38> (Actually my D&D character also speaks Thesk language (due to being slavery there (do you like to nest parentheses this much? (I don't know))))
21:43:49 -!- azaq23 has joined.
21:44:07 -!- elliott has joined.
21:44:52 <ais523> zzo38: I nested parentheses like that in the C-INTERCAL manual once
21:44:58 <ais523> but as a joke, not because it was useful
21:45:38 <zzo38> ais523: In what part of the manual?
21:45:47 <oerjan> > let x = "Maybe. " ++ show [var x] in x
21:45:49 <oerjan> oops
21:45:54 <ais523> zzo38: I can't remember
21:45:59 <ais523> I think it mentioned recursion, but I'm not sure why
21:46:03 <oerjan> LAMBDABOOOOOT
21:46:10 <ais523> you could search the manual for ))), it would probably find the relevant section quite quickly
21:46:34 <oerjan> who gave you the boot
21:48:40 <elliott> <oerjan> > let x = "Maybe. " ++ show [var x] in x
21:48:42 <elliott> what is this meant to be?
21:48:45 <elliott> Maybe. [Maybe. [...?
21:48:56 -!- quintopi1 has joined.
21:49:32 -!- quintopi2 has joined.
21:51:07 <Vorpal> <elliott_> ais523: I'm annoyed at you for being ais523, because Vorpal would have whined at anyone else by now <-- what?
21:51:18 -!- oklopol has quit (Ping timeout: 252 seconds).
21:52:52 -!- quintopi1 has quit (Client Quit).
21:53:16 -!- quintopi2 has quit (Client Quit).
21:54:08 <oerjan> elliott: yes.
21:54:37 <oerjan> hm probably the var should be at the outside.
21:54:56 <elliott> > var (show "x")
21:55:05 <oerjan> ho hum
21:55:28 <elliott> oh right
21:57:33 -!- oklopol has joined.
22:00:46 <Sgeo> "JavaScript must be enabled in your browser to display the table of contents."
22:00:54 <Sgeo> (On an Opa book)
22:01:10 <Sgeo> That's.. not encouraging to any beliefs that you gracefully degrade
22:03:17 <elliott> opa sucks
22:04:00 <Vorpal> wtf is opa? yet another active worlds?
22:04:26 <elliott> lol
22:04:36 <Sgeo> elliott, because it's more specialized than Ur, which allows for more than just web stuff, or for other reasons too?
22:04:55 <elliott> because it's like Ur without the only thing that makes Ur interesting, i.e. the type and module system
22:05:51 <Sgeo> Maybe I'm interested in the web stuff
22:06:21 <elliott> maybe im allowed to say opa sucks regardless
22:15:38 -!- CakeProphet has joined.
22:15:39 -!- CakeProphet has quit (Changing host).
22:15:39 -!- CakeProphet has joined.
22:22:02 -!- NihilistDandy has joined.
22:24:20 -!- Taneb has quit (Quit: Page closed).
22:24:50 -!- Taneb has joined.
22:31:12 <zzo38> I have read of the Gnostica game using tarot cards and Icehouse pyramids. Can a similar (but different) game be made using Fanucci cards? And maybe instead of Icehouse you can use some different kind of board, too.
22:33:34 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:57:34 <elliott> `addquote <NihilistDandy> Non sequitur is my forte <NihilistDandy> On-topic discussion is my piano <Taneb> Bowls of sugary breakfast cereal is my mezzoforte <Taneb> Full fat milk is my pianissimo
22:57:36 <HackEgo> 531) <NihilistDandy> Non sequitur is my forte <NihilistDandy> On-topic discussion is my piano <Taneb> Bowls of sugary breakfast cereal is my mezzoforte <Taneb> Full fat milk is my pianissimo
22:58:11 <ais523> those weren't non-sequiturs!
22:58:21 <oerjan> neither was this banana
22:58:33 <elliott> `delquote 531
22:58:34 <HackEgo> ​*poof*
22:58:39 <elliott> `addquote <NihilistDandy> Non sequitur is my forte <NihilistDandy> On-topic discussion is my piano <Taneb> Bowls of sugary breakfast cereal is my mezzoforte <Taneb> Full fat milk is my pianissimo <Taneb> On which note, I'm hungry
22:58:40 <HackEgo> 531) <NihilistDandy> Non sequitur is my forte <NihilistDandy> On-topic discussion is my piano <Taneb> Bowls of sugary breakfast cereal is my mezzoforte <Taneb> Full fat milk is my pianissimo <Taneb> On which note, I'm hungry
22:58:45 <elliott> (<NihilistDandy> Ha. Note)
22:58:52 <NihilistDandy> lol
22:59:05 <Taneb> That's the second accidental pun I've made in the past five minutes
22:59:42 <oerjan> well please drop that pun before you hurt any more people
22:59:56 <monqy> im hurt
23:00:07 <Taneb> "Shoe size is a UK 11" "11+25=36" "36/12=3" "That means my feet are about a foot long" "...Handy"
23:00:08 * oerjan gives monqy the banana
23:00:27 <monqy> joy
23:00:36 <zzo38> I think your feet is supposed to be about a foot long, that is why they made up a foot measurement, isn't it?
23:00:49 -!- copumpkin has joined.
23:00:57 <NihilistDandy> zzo38: The foot measurement is arbitrary and silly. Something about some king or other
23:01:07 <Taneb> I thought that was the Yard?
23:01:27 <NihilistDandy> The Yard is busy with a scandal. Let's leave them out of this
23:01:33 <zzo38> NihilistDandy: Yes, I think it might be the king's foot size, they measured, and that is approximately one foot.
23:01:33 <elliott> monqy: is it cold there its cold here
23:01:37 <NihilistDandy> Topical humoUr
23:02:06 <NihilistDandy> elliott: It's 100˚F here
23:02:19 <NihilistDandy> Heat wave _-_
23:02:29 <elliott> lol texans
23:02:47 <NihilistDandy> New Hampshire, actually
23:02:58 <elliott> oh wait
23:03:01 <Taneb> New Hampshire?
23:03:03 <elliott> that was your freenode sevrer location
23:03:08 <Taneb> That's in New Hampshire!
23:03:14 <NihilistDandy> I know, right?
23:03:16 <elliott> isn't new hampshire the one with all the stupid libertarians trying to make a ~free state~
23:03:24 <Taneb> I think Bill Bryson lives there
23:03:26 <NihilistDandy> No, there are like 5 of those
23:03:28 <Taneb> Or lived there or something
23:03:36 <Taneb> I think that's Quebec
23:03:38 <NihilistDandy> And Bill Bryson lives in Massachusetts, now. He used to live here, though
23:03:42 <elliott> NihilistDandy: but it's _one_ of them
23:03:52 <NihilistDandy> LIVE FREE OR DIE
23:03:53 <elliott> http://freestateproject.org/
23:03:54 <elliott> yep
23:03:55 <elliott> new hampshire
23:04:02 <monqy> elliott: its suny here
23:04:11 <Taneb> It's night-y here
23:04:12 <NihilistDandy> Oh, those people
23:04:24 <elliott> so what are your social services like what with your lack of decent taxation and all :P
23:04:25 <monqy> elliott: foggy mornigsn though not cold nice though i like foggy i like cold i wish it were colder
23:04:37 <elliott> monqy: what tepermature was ite;
23:04:43 <NihilistDandy> elliott: Better than most of the country, actually
23:04:47 <elliott> i would like cold but it makes my body parts cold and that makes walking hard
23:04:56 <elliott> NihilistDandy: good job usa
23:05:05 <monqy> elliott: ihave no theremometre
23:05:15 <elliott> monqy: tr;y using google
23:05:22 <elliott> ; is the best key to typo with imo
23:05:31 <monqy> its good
23:05:31 <elliott> http://www.google.com/search?hl=en&source=hp&biw=723&bih=658&q=temperature+where+monqy+is&oq=temperature+where+monqy+is&aq=f&aqi=&aql=&gs_sm=e&gs_upl=5183l10342l0l10493l34l23l2l8l8l0l247l1768l1.9.2l12
23:05:34 <oerjan> permature theremin
23:05:39 <NihilistDandy> I have completed my thereminometer, which measures the number of theremins in a 50 foot radius. Current reading: 1
23:05:41 <Taneb> theremometre?
23:06:04 <elliott> NihilistDandy: theremin buddies o/
23:06:09 <monqy> 19 degres it lokes like??? not too bad?????
23:06:11 <pikhq_> It'd be nigh-impossible to make Massachusetts a "libertarian paradise".
23:06:13 <elliott> do you never play yours too
23:06:16 <oerjan> Taneb: we are clearly asymptotically approaching a spelling singularity
23:06:21 <pikhq_> What with the People's Republic of Cambridge and all.
23:06:23 <NihilistDandy> elliott: I actually do, sometimes
23:06:29 <elliott> monqy: it is like eleven degrees in here or something
23:07:03 <oerjan> now that it has reached #esoteric, there cannot be much time left
23:07:29 <elliott> oerjan: no its just me and monqy we don't lieke keybwords they do what we dont want them to be oding a lot
23:07:41 <NihilistDandy> *alot
23:07:45 <elliott> NihilistDandy: thanks you
23:08:09 <oerjan> elliott: that's what you _think_, but it is spreading
23:08:22 <Taneb> Where's Staffordshire again?
23:08:31 <Taneb> Like, how far South?
23:08:35 <oerjan> in about a year and a half, it reaches critical mass
23:08:47 <elliott> Taneb: birmingham
23:08:49 <elliott> aisland
23:08:49 <NihilistDandy> Taneb: It's in the middle
23:08:55 <Taneb> Okay
23:08:59 <elliott> west midlands
23:09:04 <NihilistDandy> http://en.wikipedia.org/wiki/Staffordshire
23:09:31 <oerjan> NihilistDandy: why drag the poor alot into this
23:09:47 <NihilistDandy> oerjan: The alots know what they did to deserve it
23:09:58 <elliott> rip alots
23:10:22 <oerjan> rip alots? that's just horribly cruel
23:10:35 <NihilistDandy> Sir Rip-Alot
23:10:53 <pikhq_> How could you be so mean to alots?
23:11:10 <Taneb> Damn blood pressure...
23:11:13 <Taneb> It's too low
23:11:27 <Taneb> I react badly to changes in altitude
23:11:39 <Taneb> As in, headaches
23:11:40 <elliott> Taneb is irc from everest
23:11:49 <NihilistDandy> I've been smoking for four years, and my blood pressure is in the good range. I presume that this makes me better than science
23:11:50 <monqy> changes in altitude make my ears anoying
23:11:52 <elliott> is it cold there Taneb too am i the only cold person in hexham
23:11:54 <oerjan> Taneb: hq_> How could you be so mean to alots?
23:11:58 <oerjan> 01:11 Tanewat
23:12:01 <monqy> smokeing is bad for you...
23:12:09 <NihilistDandy> monqy: Apparently not *that* bad
23:12:11 <oerjan> that was not a good cut and paste
23:12:12 <monqy> long cancer
23:12:19 <Taneb> I'm not that cold, but I have a warm house
23:12:28 <oerjan> maybe i should try pushing ^C
23:12:38 <oerjan> Taneb: your mother was a hamster and your father smelt of elderberries
23:12:41 <Taneb> But yeah, it's pretty cold outside
23:12:53 <elliott> why do people smoke it has like the most boring effect of any drug
23:13:09 <elliott> "it makes me feel a bit better i GUESS" WRONG you're just a lameo who picked the wrong addiction
23:13:10 <NihilistDandy> elliott: Because it's cool, of course
23:13:12 <Taneb> Eggar's saying the wind's coming from the West, so it may get warmer
23:13:16 -!- confab has left.
23:13:18 <NihilistDandy> And I'm not an addict
23:13:21 <NihilistDandy> It's a luxury item
23:13:22 <elliott> they should put different warnings on the packets
23:13:23 <elliott> WARNING: LAMEST DRUG
23:13:27 <elliott> noboyd would buy it
23:13:27 <NihilistDandy> ^^
23:13:33 <elliott> DOESN'T EVEN DO THAT MUCH
23:13:43 <elliott> KNOWN BY THE STATE OF WHEREVER TO BE A WASTE OF MONEY PRETTY MUCH
23:13:57 <Taneb> GET WEED INSTEAD?
23:13:59 <elliott> precisely
23:14:02 <elliott> IT'S NOT TAXED
23:14:31 <NihilistDandy> Unless you take the unofficial danger tax as a tax
23:14:49 -!- Taos has joined.
23:14:49 <elliott> in the title of the page it says "Well-Typed - The Haskell Consultants" but i want to know who are the haskell conraisins?
23:14:52 -!- ghoulmaster has joined.
23:15:16 <elliott> ghoulmaster: hello
23:15:23 <ghoulmaster> hey elliott
23:15:44 * oerjan finds the new nicks suspicious
23:15:48 <Taneb> They try to sell you overpriced dried grapes, claiming that they're functional
23:15:50 <elliott> Taos has been here before
23:15:54 <oerjan> oh
23:15:57 <elliott> ghoulmaster: hello we are about programming
23:15:58 <monqy> haskell conraisinjs?
23:15:59 <Taos> elliott: have I now?
23:16:00 <NihilistDandy> `addquote <elliott> in the title of the page it says "Well-Typed - The Haskell Consultants" but i want to know who are the haskell conraisins?
23:16:01 <HackEgo> 532) <elliott> in the title of the page it says "Well-Typed - The Haskell Consultants" but i want to know who are the haskell conraisins?
23:16:07 <elliott> monqy: get it, sultanas
23:16:16 <ghoulmaster> elliott: i know
23:16:16 <monqy> sultans
23:16:25 <Sgeo> of swing?
23:16:34 <elliott> ghoulmaster: ok, lots of people don't :P
23:16:47 <NihilistDandy> Wait, this is about programming?~
23:16:53 <ghoulmaster> elliott: lol i could see that with the name...
23:16:58 <NihilistDandy> I thought this was a comparative literature channel
23:17:04 <elliott> ghoulmaster: precisely
23:17:11 <Taos> Really? I thought this was to do with elephants
23:17:20 <Taos> I don't remember coming here before
23:17:23 <pikhq_> NihilistDandy: Comparative algorithmically-generated literature channel.
23:17:33 <pikhq_> Neat, isn't it?
23:17:36 <NihilistDandy> pikhq_: Ah, of course. The veil lifts
23:17:45 <monqy> brainfuck derivative party channel
23:18:02 -!- Somelauw has joined.
23:18:08 <elliott> ok _who_ mentioned us and where
23:18:13 <elliott> #haskell again?
23:18:21 <oerjan> the conraisins are about raisin money
23:18:22 <elliott> nope
23:18:23 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
23:18:30 <ais523> elliott: I mentioned us in #nethack once, I think
23:18:30 <Taneb> Brainfuck has disappointing few brains and barely any fucks
23:18:36 <monqy> i read it as "raisin monqy" and got real confused
23:18:51 <NihilistDandy> Taneb: Barely any == 0?
23:18:58 <elliott> Taneb: s/disappointing/disappointingly/
23:19:01 <elliott> so i can addquote it without lying
23:19:03 <elliott> plz
23:19:03 <elliott> thx
23:19:04 <NihilistDandy> If I ever get laid because of brainfuck, that will be the real brainfuck
23:19:22 <Taos> NihilistDandy: its worked for me
23:19:27 <monqy> 8))))
23:19:31 <NihilistDandy> MY MIND
23:19:34 <Taos> NihilistDandy: I can spell your name in + and > and < and -
23:19:35 <Taneb> Especially if it's with a human heart
23:19:37 <Taos> now shag me?
23:19:42 <Sgeo> There is a book about esolangs
23:19:43 <elliott> Taneb: surely you mean brain
23:19:46 <Sgeo> http://www.barnesandnoble.com/w/esoteric-programming-languages-books-llc/1022380853?ean=9781155349770&itm=1&usri=brainfuck
23:19:53 <elliott> Sgeo: omg no that was my calling
23:19:56 <elliott> by Books LLC?
23:19:58 <elliott> i am suspicious of this
23:20:03 <elliott> but i'm going to buy it anyway
23:20:14 <monqy> nice overview too
23:20:15 <elliott> i bet it's wikipedia
23:20:21 <monqy> Purchase includes free access to book updates online and a free trial membership in the publisher's book club where you can select from more than a million books without charge.
23:20:25 <Taneb> elliott: I mean what I say
23:20:30 <elliott> the description is from wikipedia
23:20:45 <elliott> also esolangs... wtf
23:20:48 <elliott> who copied who
23:20:58 <NihilistDandy> Take a wild guess
23:21:07 <elliott> NihilistDandy: no, it is _quite possible_ wp copied us, which is legal
23:21:10 <elliott> the other way around is not
23:21:27 <NihilistDandy> Oh, I meant the book
23:21:29 <ais523> if the contents are an exact match with the Wikipedia category, I think that's it
23:21:44 <elliott> I mean the articles
23:22:06 <ais523> the excerpt is an exact match with Wikipedia
23:22:09 <elliott> oh
23:22:13 <ais523> so I suspect it is indeed a Wikipedia excerpt book
23:22:13 <elliott> that text is not actually in the eoslangs article
23:22:14 <elliott> lol
23:22:16 <elliott> its just in the google summary
23:22:17 <elliott> ais523: right
23:22:25 <elliott> ais523: I kind of still want to own it :)
23:22:29 <elliott> just for that cover
23:22:47 <ais523> it's probably an autogenerated cover
23:22:47 <elliott> is it worth 12 pounds????? we report, you decide
23:22:51 <elliott> ais523: precisely
23:22:58 <NihilistDandy> I'll bet it's printed on toilet paper and recycled newsprint
23:23:00 <ais523> note that it lists Esoteric Programming Language as a language
23:23:02 <elliott> how do you go from ISBN → Amazon link?
23:23:08 <elliott> ais523: YES I WANT IT BECAUSE IT IS BAD OK
23:23:46 <Taos> I just cooked my own brainfuck interpreter
23:23:47 <ais523> http://www.amazon.com/s?search-alias=stripbooks&field-isbn=1155349776
23:23:52 <elliott> ais523: hmm, I see no GFDL on that Barns an dNoble page
23:24:01 <ais523> thank you, Special:Booksources
23:24:04 <elliott> rip :(
23:24:14 <elliott> i guess i have to buy it from barnes and noble then
23:24:16 <ais523> it's a no-results-found on Amazon, though
23:24:26 <Sgeo> http://www.amazon.com/Esoterics-Websters-Quotations-Facts-Phrases/dp/0546763294/ref=sr_1_1?s=books&ie=UTF8&qid=1311376994&sr=1-1 what the fuck
23:24:27 <elliott> http://www.amazon.com/Esoteric-Programming-Languages-Kvikkalkul-Instruction/dp/images/1155349776 --Google
23:24:30 <elliott> We're sorry. The Web address you entered is not a functioning page on our site --Amazon
23:24:35 <elliott> WHO IS RIGHT????
23:24:38 <ais523> alternatively: http://books.google.com/books?id=kHOLSQAACAAJ&dq=isbn:1155349776&hl=en&ei=ngYqTtqMLdTE8QPPsvH-Cw&sa=X&oi=book_result&ct=result&resnum=1&ved=0CCgQ6AEwAA
23:24:42 <elliott> Sgeo: ?
23:24:52 <Sgeo> " This is not an encyclopedic book, but rather a collage of statements made using the word "esoterics," or related words (e.g. inflections, synonyms or antonyms)."
23:24:55 -!- Taos has left.
23:24:59 <ais523> the "related books" there is suspicious
23:25:05 <elliott> Sgeo: heh, lol
23:25:06 <Sgeo> So, just... random sentences that have the word "esoteric"
23:25:08 <elliott> looks like another generated thing
23:25:17 <elliott> "the editorial decision to include or exclude terms is purely a computer-generated linguistic process."
23:25:25 <elliott> Sgeo: no, "esoterics"
23:25:30 <NihilistDandy> How very esoteric
23:25:32 <elliott> oh, esoteric too
23:25:34 * Phantom_Hoover → sleep
23:25:37 <elliott> um
23:25:40 <elliott> I want to buy this too....
23:25:41 <elliott> it's forty pages
23:25:42 -!- Phantom_Hoover has quit (Quit: Leaving).
23:25:53 <ais523> you could also buy a copy of "Non-English-Based Programming Languages: Brainfuck, Plankalkül, Befunge, Rapira, Malbolge, Non-English-Based Programming Languages, False"
23:25:55 <elliott> Price:£27.50 & this item Delivered FREE in the UK with Super Saver Delivery. See details and conditions
23:25:55 <elliott> o;h
23:26:03 <elliott> ais523: god dammit why are there so many books i want???????
23:26:08 <elliott> wait omg Plankalkül??
23:26:13 <elliott> awesome
23:26:18 <ais523> elliott: why would you buy books that were that autogenerated?
23:26:22 <elliott> does it include that one with "GRUNNUR";
23:26:22 <Taneb> Well, goodnight folks
23:26:25 <monqy> i should make a program to write novels for me..........make$$$$$$$$
23:26:25 <itidus20> is that a wiki book?
23:26:29 <elliott> fjolnir
23:26:32 -!- Taneb has quit (Quit: Page closed).
23:26:39 <elliott> sorry Fjölnir
23:26:42 <elliott> omg it's in the category
23:26:43 <elliott> i bet it does
23:26:45 <elliott> omg omg omg i want it
23:26:50 <elliott> I WANT ALL THE SHITTY BOOKS
23:26:59 <ais523> elliott: calm down
23:27:10 <elliott> ais523: i can;t im onverhwlemed
23:27:15 * elliott cries
23:27:19 -!- Taos has joined.
23:27:26 <Taos> ____ _ _
23:27:27 <Taos> / ___| ___ ___ __| | |__ _ _ ___
23:27:27 <Taos> | | _ / _ \ / _ \ / _` | '_ \| | | |/ _ \
23:27:27 <Taos> | |_| | (_) | (_) | (_| | |_) | |_| | __/
23:27:27 <Taos> \____|\___/ \___/ \__,_|_.__/ \__, |\___|
23:27:29 <Taos> |___/
23:27:36 <elliott> wat
23:27:45 <monqy> hi
23:27:56 <Taos> I suppose your not in a terminal
23:27:56 <coppro> Taos: you too
23:28:10 <elliott> what about my not in a terminal
23:28:12 <ais523> I use a variable-width font for IRC
23:28:16 <Taos> means me pumping figlet into the shell does nothing for you
23:28:19 <Sgeo> It says Goodbye, btw
23:28:19 <ais523> which technically has nothing to do with whether I'm in a terminal or not
23:28:24 <elliott> Taos: it doesn't pump into /our/ shell
23:28:28 <ais523> although my terminal's fixed-width as it would otherwise be hard to play NetHack
23:28:29 <elliott> it pumps into yours
23:28:31 <monqy> but why does it say goodbye...........................
23:28:43 <Taos> because I got bored and wanted to say that
23:28:46 <monqy> oh
23:28:46 <Sgeo> monqy, he's surrounded #esoteric with TNT
23:28:47 <monqy> ok
23:28:53 <monqy> double ok
23:29:01 <Taos> Sgeo: its demo time
23:29:16 <ais523> is figlet some sort of alternative version of banner(1)?
23:29:20 <ais523> that uses a less overblown font?
23:29:23 <elliott> o_O
23:29:27 <elliott> there are people who don't know what figlet is?
23:29:31 <Taos> ha
23:29:34 <elliott> figlet is basically super-general banner
23:29:37 <elliott> it has font files, etc.
23:30:00 <elliott> http://www.figlet.org/
23:30:09 <Taos> its the first thing I install
23:30:15 <elliott> Taos: not cowsay? :(
23:30:29 <ais523> wow, I made a major discovery today: pressing / in the Gnome file chooser dialog box makes it actually add a textbox you can type the filename in
23:30:33 -!- Somelauw has quit (Quit: leaving).
23:30:33 <Taos> elliott: thats second
23:30:43 <ais523> that really makes that dialog box about 50% less stupid
23:30:49 <elliott> elliott@katia:~/Code/mcmap$ figlet im cow | cowsay
23:30:49 <elliott> _________________________________________
23:30:49 <elliott> | \ / __/ _ \ \ /\ / / | | | | | | | | |
23:30:49 <elliott> | (_| (_) \ V V / |_|_| |_| |_| \___\___/ |
23:30:50 <elliott> \ \_/\_/ /
23:30:52 <elliott> -----------------------------------------
23:30:53 <NihilistDandy> _ _
23:30:53 <NihilistDandy> __| | ___ __ _ ___ ___ ___ ___ ___ ___ ___ __ _ ___ __| |
23:30:53 <NihilistDandy> / _` |/ _ \ / _` |/ _ \/ _ \/ __|/ _ \ / __|/ _ \/ _ \ / _` |/ _ \ / _` |
23:30:53 <NihilistDandy> | (_| | (_) | | (_| | __/ __/\__ \ __/ \__ \ __/ __/ | (_| | (_) | (_| |
23:30:53 <NihilistDandy> \__,_|\___/ \__, |\___|\___||___/\___| |___/\___|\___| \__, |\___/ \__,_|
23:30:54 <elliott> \ ^__^
23:30:56 <NihilistDandy> |___/ |___/
23:30:56 <elliott> \ (oo)\_______
23:30:58 <elliott> (__)\ )\/\
23:31:00 <elliott> ||----w |
23:31:01 <monqy> im literally dead
23:31:02 <elliott> || ||
23:31:02 <monqy> irl
23:31:04 <elliott> good
23:31:08 <Taos> yay now everyone is piping into irc
23:31:10 <NihilistDandy> Only works if your window is wide enough
23:31:12 <Taos> my job here is done
23:31:27 <ais523> I'm disappointed that the first thing you install isn't sdate
23:31:34 <Taos> sdate?
23:31:38 <elliott> Today is Prickle-Prickle, the 58th day of Confusion in the YOLD 3177
23:31:46 <Taos> totally gotta install taht!
23:31:47 * elliott tries sdate ddate
23:31:54 <elliott> doesn't work :(
23:31:57 <itidus20> ok i can see it now
23:32:13 <ais523> sdate is pretty good at breaking programs randomly
23:32:15 <itidus20> the first one however makes little to no sense
23:32:25 <elliott> sdate ddate: Today is Prickle-Prickle, the 58th day of Confusion in the YOLD 3159
23:32:37 <elliott> The Glorious Glasgow Haskell Compilation System, version 7.0.4
23:32:51 <ais523> because the vast majority of programs assume that September is only 30 days long, and that the library function will never return anything outside that range
23:32:54 <elliott> GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help
23:32:54 <elliott> Loading package ghc-prim ... linking ... done.
23:32:54 <elliott> Loading package integer-gmp ... linking ... done.
23:32:54 <elliott> Loading package base ... linking ... done.
23:32:54 <elliott> Loading package ffi-1.0 ... linking ... done.
23:32:55 <elliott> Prelude> Leaving GHCi.
23:32:58 <elliott> ais523: heh
23:33:00 <Taos> ais523: why does it break programs randomly
23:33:02 <NihilistDandy> Today is Pungenday,the 57th day of Confusion in the YOLD 3177
23:33:09 <elliott> Taos: because it uses eternal september dates
23:33:11 <NihilistDandy> Different time zone
23:33:11 <elliott> which aren't, technically, valid
23:33:16 <Taos> Right?
23:33:17 <ais523> Taos: <ais523> because the vast majority of programs assume that September is only 30 days long, and that the library function will never return anything outside that range
23:33:27 <Taos> thats odd
23:33:30 <Taos> im tired
23:33:38 <elliott> hmm, only about two years until the thousandth of september
23:33:40 <elliott> erm
23:33:40 <ais523> sdate's a prefix to other commands that modifies dates to just be expressed in terms of september 1993
23:33:42 <elliott> hmm, only about two years until the seven thousandth of september
23:33:48 <itidus20> gah -- now i forget what font I was using
23:33:59 <Taos> /bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
23:34:00 <Taos> /bin/sh: -c: line 1: syntax error: unexpected end of file
23:34:06 <Taos> _
23:34:07 <Taos> | |__ _ _ ___
23:34:07 <Taos> | '_ \| | | |/ _ \
23:34:07 <Taos> | |_) | |_| | __/
23:34:07 <Taos> |_.__/ \__, |\___|
23:34:08 -!- Taos has quit (Quit: leaving).
23:34:13 <elliott> lmao
23:34:14 <monqy> bue
23:34:20 <ais523> elliott: ?
23:34:25 <elliott> ais523: at his /bin/sh failure
23:34:29 <ais523> ah, OK
23:34:29 <elliott> with his /exec line
23:34:31 <elliott> and his quitting too early
23:34:38 <elliott> s/his/gender neutral pronoun/
23:34:42 <NihilistDandy> _ _ _
23:34:42 <NihilistDandy> | |__ _ _ ___ | |__ _ _ ___ | |__ _ _ ___
23:34:42 <NihilistDandy> | '_ \| | | |/ _ \ | '_ \| | | |/ _ \ | '_ \| | | |/ _ \
23:34:42 <NihilistDandy> | |_) | |_| | __/ | |_) | |_| | __/ | |_) | |_| | __/
23:34:42 <NihilistDandy> |_.__/ \__,_|\___| |_.__/ \__,_|\___| |_.__/ \__,_|\___|
23:34:42 <monqy> --
23:34:44 <NihilistDandy>
23:34:59 <NihilistDandy> `addquote <Taos> bue
23:35:01 <HackEgo> 533) <Taos> bue
23:35:07 <elliott> hey ais523, how much would you hate me if I violated XDG standards
23:35:09 <monqy> immprtalized
23:35:11 <elliott> NihilistDandy: he didnt say bue >:|
23:35:14 <Sgeo> WHat's YOLD?
23:35:16 <elliott> `delquote 533
23:35:17 <HackEgo> ​*poof*
23:35:24 <elliott> `addquote <Taos> _ <Taos> | |__ _ _ ___ <Taos> | '_ \| | | |/ _ \ <Taos> | |_) | |_| | __/ <Taos> |_.__/ \__, |\___|
23:35:26 <HackEgo> 533) <Taos> _ <Taos> | |__ _ _ ___ <Taos> | '_ \| | | |/ _ \ <Taos> | |_) | |_| | __/ <Taos> |_.__/ \__, |\___|
23:35:28 <elliott> NihilistDandy: fixed that for you
23:35:31 <zzo38> Sgeo: YOLD is the year indication for the Discordian calendar.
23:35:37 <NihilistDandy> FINE~
23:35:42 <ais523> elliott: I'm not sure what XDG standards are
23:35:44 <ais523> so I'm not sure yet
23:35:59 <elliott> ais523: well the one in particular is why you have a ~/.config/ directory
23:36:06 <ais523> ah, aha
23:36:07 <elliott> and also ~/.cache, and I think ~/.local too
23:36:14 <ais523> I noticed Wesnoth being changed to comply with those
23:36:17 <Sgeo> What command is ais523 using to get that?
23:36:22 <elliott> ais523: it's an environment variable so you can move ~/.config, it's horribly broken though
23:36:25 <itidus20> so are there any books published about esoteric programming languages?
23:36:25 <elliott> there's no way to get regular dotfiles with it
23:36:30 <elliott> so you have to reserve a directory for it
23:36:36 <ais523> I mostly just ignore those standards
23:36:36 <elliott> i'm adding configuration to mcmap
23:36:37 <itidus20> other than auto-generated
23:36:39 <elliott> and i just want to use ~/.mcmap
23:36:40 <ais523> and don't mind whether people follow it or not
23:36:50 <elliott> ais523: ok, thanks, although it's fizzie's opinion that actually matters :P
23:36:53 <NihilistDandy> itidus20: Why would someone publish such a book?
23:36:59 <elliott> <Sgeo> Oh, ddate, derp
23:37:00 <ais523> although, programs I've worked on have used ~/.acehackrc and ~/.taeb
23:37:01 <elliott> cant hide from esoteric
23:37:05 <zzo38> itidus20: I have seen some magazine articles in some magazines about Linux. I have also seen there is a Japanese book that describes a few esolangs including one of my own.
23:37:10 <ais523> Sgeo: it wasn't me using ddate
23:37:11 <NihilistDandy> Also, I think INTERCAL might have a book out there some where
23:37:13 <elliott> <itidus20> so are there any books published about esoteric programming languages?
23:37:13 <elliott> dude
23:37:16 <Sgeo> Oh
23:37:17 <elliott> we just linked to one
23:37:19 <elliott> and talked about it
23:37:28 <ais523> it isn't really a book about esolangs
23:37:29 <elliott> zzo38: which book
23:37:35 <elliott> ais523: sure it is >:|
23:37:35 <Sgeo> <itidus20> other than auto-generated
23:37:35 <ais523> so much as a book containing Wikipedia articles about esolangs
23:37:42 <itidus20> xD
23:37:48 -!- MigoMipo has quit (Read error: Connection reset by peer).
23:37:51 <elliott> ais523: is a book that has a bunch of articles written by its author about esolangs not a book about esolangs?
23:37:59 <elliott> wikipedia's just happen to have really long author lists, that's all
23:38:02 <ais523> itidus20: it's not a physical book yet AFAIK, but the C-INTERCAL Revamped Reference Manual is an esolang-related book
23:38:13 <ais523> elliott: the author's written as "Books, LLC"
23:38:24 <zzo38> elliott: I forget its title although I know there is a book that parts of it describe a few esolangs including one of my own. And it is Japanese book.
23:38:24 <ais523> not as the actual authors of the book
23:38:34 <elliott> ais523: pseudonym
23:38:43 <ais523> doing that's actually illegal under the GFDL, if you make a compilation out of GFDL stuff you have to list at least five actual authors on the title page
23:38:46 <ais523> unless there are less than five
23:38:46 <elliott> ais523: and changing an author name hardly affects what a book is about
23:38:52 <itidus20> it would be a bit of a pointless exercize i know
23:38:57 <ais523> but presumably the CC-by-sa license is more lenient
23:39:46 <itidus20> it would be a piece of trash text no doubt
23:39:49 <zzo38> It is why, when I write a book usually I do not use the GFDL. I don't care whether or not they list the author, or how the book is organized, or whatever. They would have to change it for various purposes including different paper sizes, and so on.
23:40:01 <elliott> zzo38, famous pubished author
23:40:27 <zzo38> elliott: What about famous pubished author?
23:40:31 <elliott> its you
23:40:37 <zzo38> Is it? I don't think so.
23:40:44 <zzo38> I have never published a book (yet).
23:40:57 <zzo38> Are you sure?
23:41:52 <itidus20> looking on the wikipedia wiki, there were printed INTERCAL manuals
23:42:08 <NihilistDandy> Like I said :D
23:42:13 <ais523> itidus20: yes, the original manuals were printed, and the electronic version of the manuals based on them
23:42:25 <ais523> and proofread against the paper manuals by someone else
23:42:45 <ais523> also, I'm not sure if "wikipedia wiki" = Wikipedia or Wikimedia Meta-Wiki
23:42:46 <itidus20> notice how i phrased it so that wikipedia is just a specialization of a wiki
23:42:57 <itidus20> yeah you're not sure..
23:43:07 <itidus20> all the better for me to do such things
23:43:14 <ais523> as, e.g. "nethack wiki" = "wiki about NetHack" = "nethackwiki.com", I'd assume "wikipedia wiki" = "wiki about Wikipedia" = "meta.wikimedia.org"
23:43:16 <zzo38> If in some day, I publish some book, that might include some of the programs I have written too, but also some other books, possibly. However I never yet publish any book.
23:43:34 <NihilistDandy> `addquote <zzo38> If in some day, I publish some book, that might include some of the programs I have written too, but also some other books, possibly. However I never yet publish any book.
23:43:36 <HackEgo> 534) <zzo38> If in some day, I publish some book, that might include some of the programs I have written too, but also some other books, possibly. However I never yet publish any book.
23:43:37 <itidus20> ais, the "about" is a misnomer
23:43:41 <elliott> NihilistDandy: that was just regular zzo
23:43:43 <elliott> :P
23:43:46 <NihilistDandy> I liked it
23:43:46 <NihilistDandy> :D
23:44:06 <itidus20> i see what has happened here though
23:44:08 <ais523> itidus20: well, would you interpret "nethack wiki" as implying that NetHack is a wiki?
23:44:08 <elliott> yeah, but if we addquoted everything zzo38 said... :D
23:44:18 <itidus20> ais: ok i see now... hahahha
23:44:23 <itidus20> so it's the nethack wiki wiki
23:44:45 <monqy> im dead
23:44:48 <zzo38> NihilistDandy: I am OK whether you put my quotations or not, it doesn't matter to me either way, but also either way I can collect them by looking at the list of the quotations that are available.
23:44:56 <monqy> nethack which is a wiki.....is a wiki
23:44:58 <NihilistDandy> :D
23:45:09 <NihilistDandy> zzo is a warrior-poet
23:45:25 <itidus20> the name is formally "nethack wiki" and "nethack wiki" is a wiki, hence: nethack wiki wiki
23:45:37 <elliott> itidus20: this is really bad terminology
23:45:50 <monqy> is nethack wiki wiki a wiki
23:45:51 <NihilistDandy> wiki wiki wiki wack
23:45:59 <itidus20> west jim west
23:46:07 <NihilistDandy> wiki wild wild west
23:46:08 <NihilistDandy> :D
23:46:16 <NihilistDandy> <3 itidus20
23:46:35 <itidus20> ok i suppose i have created a tautology
23:46:37 <elliott> ais523: so scapegoat.................................
23:46:40 <elliott> needs to exist.......
23:46:48 <Sgeo> elliott, as does Feather
23:46:52 * Sgeo runs
23:47:01 <monqy> as does zepto
23:47:02 <ais523> elliott: agreed
23:47:12 <itidus20> you win
23:47:17 <itidus20> wikipedia it is
23:47:19 <elliott> scapegoat needs to be written in zepto-feather
23:47:25 <NihilistDandy> un-zepto
23:47:44 <Sgeo> Yay, 0 infections found
23:47:46 <ais523> Feather would be a really really bad language to write a VCS in, I imagine
23:48:05 <ais523> Sgeo: does that mean that your virus protection is good or your virus scanner is bad?
23:48:14 <monqy> all i know about feather is what i read on the wiki page
23:48:17 <elliott> ais523: I was about to ask who said he was talking about computer viruses
23:48:22 <elliott> but then I realise that you didn't imply that, either
23:48:30 <itidus20> so thus wikipedia could be "most prolific encyclopedia wiki" vs "nethack wiki"
23:48:35 <NihilistDandy> haha
23:48:44 <elliott> can wikis be prolific
23:48:50 <ais523> elliott: only with a nonstandard (but correct) definition of "or"
23:48:52 <itidus20> i guess not..
23:48:59 <Sgeo> ais523, well, the scanner is by ESET, which has a good reputation
23:49:01 <NihilistDandy> itidus20: That sounds like a poor translation of an ancient Chinese manuscript
23:49:06 <ais523> Sgeo: oh right, they do
23:49:09 <itidus20> that would be a fallacy of some kind
23:49:11 <Sgeo> Sorry to burst the not-a-computer-virus buble
23:49:13 <Sgeo> bubble
23:49:15 <elliott> ais523: Why?
23:49:17 <monqy> ancient chinese manuscript wiki wiki
23:49:29 <elliott> ais523: I suppose you jumped to "virus"
23:49:30 <elliott> From infection
23:49:38 <elliott> There's certainly infection protection and infection scanners in the real world
23:49:44 <NihilistDandy> ITT statements end in wiki wiki
23:50:01 <monqy> sgeo was inspecting his wiki wiki
23:50:01 <zzo38> Now there is also wiki related to TeXnicard project (on Redmine), but it is currently empty (except for the file that says it is currently empty)
23:50:11 <monqy> iykwim wiki wiki
23:50:15 <itidus20> well there are many encyclopedia wikis.. but wikipedia is the biggest
23:50:16 <Sgeo> zzo38, the file is a lie!
23:50:29 <zzo38> Sgeo: I know..... but, it is mostly empty.
23:50:35 <NihilistDandy> Empty wiki
23:50:52 <Sgeo> Empty wiki wiki, a wiki cataloging empty wikis
23:51:06 <Sgeo> And also an empty wiki about wikis
23:51:24 <itidus20> i was wrong about wiki wiki
23:51:26 <Sgeo> Just realized that one wiki can be both
23:51:27 <itidus20> it is a tautology
23:51:43 <elliott> im fish
23:51:49 <monqy> swim
23:51:52 <elliott> hi
23:51:52 <elliott> ok
23:52:01 <Sgeo> I'm a leaf on the wind
23:52:05 <monqy> im monqy
23:52:06 <monqy> hi
23:52:10 <elliott> dunno if anyone's noticed, but me and monqy are pretty much the biggest contributors to this channel
23:52:16 <elliott> what would you do without us???
23:52:20 <ais523> elliott: how do you do a paragraph break in Markdown?
23:52:36 <ais523> the front page of the patch-tag wiki about AceHack accidentally got Slashdotted
23:52:39 <NihilistDandy> elliott: Probably have a life
23:52:42 <zzo38> Is it a blank line? I don't know.
23:52:46 <ais523> oh, right, there is a para break there
23:52:50 <itidus20> i'm sort of a parasite on a channel, but i am great at generating randomness
23:52:51 <ais523> just that the styling's so bad I can't see it
23:53:10 <monqy> itidus20: you're like sgeo but more so. bizarro sgeo.
23:53:11 <elliott> ais523: two lines
23:53:12 <zzo38> I know a blank line is a paragraph break on MediaWiki, and in TeX, too, by default.
23:53:12 <oerjan> clearly what we need here is the wiki monads and comonads
23:53:20 <ais523> elliott: yep, I thought it wasn't working
23:53:26 <elliott> ais523: patch-tag is a really ugly website :(
23:53:29 <elliott> in a bad usability way
23:53:32 <ais523> yes
23:53:35 <ais523> agreed
23:53:45 <elliott> also acehack has like fifty problems, did you know, i remember telling you about them and them being dismissed :D
23:53:46 <ais523> I'm just using it for hosting, really, it's not a "proper" website
23:53:51 <ais523> elliott: I know
23:53:55 <itidus20> monqy: last night in my dreams I saw a false photo album of my childhood... looking ghostly
23:54:01 <elliott> `addquote <itidus20> monqy: last night in my dreams I saw a false photo album of my childhood... looking ghostly
23:54:02 <HackEgo> 535) <itidus20> monqy: last night in my dreams I saw a false photo album of my childhood... looking ghostly
23:54:11 <elliott> Last night in my dreams I was a banana... looking ghostly
23:54:15 <Sgeo> elliott, so I can say random gibberish and get quoted for it?
23:54:18 <monqy> itidus20: i saw a dancing cgi skeleton named malaria. i danced and played with him.
23:54:22 <elliott> Sgeo: that was funny gibberish
23:54:28 <elliott> `addquote <monqy> itidus20: i saw a dancing cgi skeleton named malaria. i danced and played with him.
23:54:30 <HackEgo> 536) <monqy> itidus20: i saw a dancing cgi skeleton named malaria. i danced and played with him.
23:54:35 <NihilistDandy> elliott: My lenses are made of bananas
23:54:37 <oerjan> with join :: Wiki (Wiki a) -> Wiki a and cojoin :: Wiki a -> Wiki (Wiki a)
23:54:43 <elliott> NihilistDandy: nope, quotes are closed i'm afraid
23:54:54 <NihilistDandy> I wasn't looking for a quote :P
23:55:01 <Sgeo> NihilistDandy, I'm a banana. Your lenses are made out of me.
23:55:06 <NihilistDandy> AGH
23:55:12 <elliott> wow, how long has that slashdot article been without comments, ais523?
23:55:14 <elliott> I mean, with only two
23:55:21 <ais523> elliott: probably about five minutes
23:55:24 <ais523> it only just went up
23:55:25 <elliott> oh
23:55:25 <NihilistDandy> Sgeouiggol
23:55:27 <ais523> and #junethack are panicking
23:55:29 <elliott> what timezone does /. use, anyway?
23:55:47 <ais523> elliott: to my view, it uses my timezone
23:55:49 <NihilistDandy> What /. article?
23:55:51 <ais523> but that's possibly because I'm logged in
23:55:53 <elliott> ais523: feel free to explain that one to them
23:55:56 <ais523> http://games.slashdot.org/story/11/07/22/2338215/First-NetHack-Cross-Variant-Summer-Tournament
23:55:59 <elliott> you could start with "He's an idiot"
23:56:03 <ais523> heh, I just esolanged Slashdot
23:56:08 <ais523> I wonder if it can take the load?
23:56:14 <ais523> *esotericed
23:56:20 <ais523> esolanging it would be putting it on the wiki
23:56:20 <itidus20> It's ok guys. I am doing what I can to keep my psyche and ego surviving. All the while the threat of ww3 looms, the mortality of family and friends(loved ones?) and sooner or llater my own mortality.
23:56:34 <elliott> `addquote <itidus20> It's ok guys. I am doing what I can to keep my psyche and ego surviving. All the while the threat of ww3 looms, the mortality of family and friends(loved ones?) and sooner or llater my own mortality.
23:56:36 <HackEgo> 537) <itidus20> It's ok guys. I am doing what I can to keep my psyche and ego surviving. All the while the threat of ww3 looms, the mortality of family and friends(loved ones?) and sooner or llater my own mortality.
23:56:40 <elliott> ais523: how did junethack react to my brilliance..............
23:56:47 <Sgeo> It didn't.
23:56:50 <elliott> itidus20: god bless you
23:56:55 <ais523> elliott: I don't get it
23:57:04 <elliott> ais523: itidus20 is the best, any questions?
23:57:07 <ais523> oh, you mean in channel?
23:57:09 <ais523> they ignored you
23:57:14 <elliott> oh
23:57:16 <elliott> :(
23:57:20 <elliott> i sohuld say hi to them so they dont ignore me
23:57:23 <Sgeo> ais523, I just tried to tell elliott that
23:57:34 <elliott> i accepted it
23:57:35 <Sgeo> I think he just did to me what #junethack did to elliott
23:57:37 <elliott> but then, time passed
23:57:47 <monqy> why would anyone ignore elliott
23:57:55 <elliott> monqy: self-loathing?
23:57:56 <ais523> note that I'm an op on #junethack, so don't try anything too trollish
23:58:06 <elliott> ais523: its ok ur my pal i know you wouldn't ban me or anything
23:58:40 * oerjan cackles evilly for no specific reason
23:58:43 <ais523> elliott: you're acting out of character now
23:58:58 <elliott> ais523: i'm acting perfectly in character, you just don't understand the levels i operate on
23:59:22 <elliott> ok i'm done, i hope they accept my apology
23:59:26 <NihilistDandy> PROFUNDITY RISING
23:59:27 <elliott> but i'm too embarrassed to stay there to accept it
23:59:30 <oerjan> who wants thack in june, anyway
←2011-07-21 2011-07-22 2011-07-23→ ↑2011 ↑all