00:02:57 -!- quintopia has joined.
00:08:27 <pikhq_> Holy jesus fuck the Enterprise is fast.
00:08:36 <pikhq_> Warp 9 is about 1000c. Or 0.1 lightyears per *hour*.
00:08:38 <Sgeo> I'm staying here, though
00:15:44 <pikhq_> ... And the Federation is 8,000 lightyears wide.
00:15:56 <pikhq_> Making travelling across the Federation take 9 years.
00:25:47 <Gregor> And Warp 10 is INFINITE SPEED
00:26:01 <Gregor> But when you go warp 10 you DE-EVOLVE OH NOOOOOSE
00:31:25 <elliott_> But then you get it on with your captain.
00:32:03 <Sgeo> Time to stop farking around with Fark
00:32:08 <Sgeo> And actually start working
00:32:22 <Sgeo> (define (really?) #f)
00:32:41 <Sgeo> (defun really () nil)
00:32:47 <Sgeo> (defun really-p () nil)
00:32:55 <Sgeo> Or is it reallyp ?
00:33:31 <Gregor> De-evolution was a different episode :P
00:33:38 <Gregor> And that notion ALMOST approaches making sense almost.
00:34:27 <Sgeo> Supposedly, the writer's point was that there's no such thing as de-evolution
00:46:26 -!- Lymia has joined.
00:47:41 <elliott_> <Gregor> De-evolution was a different episode :P
00:47:41 <elliott_> <Gregor> And that notion ALMOST approaches making sense almost.
00:47:46 <elliott_> Gregor: Err, warp ten makes you go all lizard.
00:48:07 <elliott_> Sgeo: The writer's point is that he should choke on a cock and die. Writing Threshold is unforgivable and warrants torture.
00:48:35 <Sgeo> He feels remorse for what he's done, doesn't he?
00:49:00 <elliott_> He must suffer for all eternity.
00:49:07 <Sgeo> I should watch it...
00:51:28 <pikhq_> elliott_: Warp 10 also makes you have infinite velocity with finite energy (?), but only go a few fractions of a lightyear away.
00:53:03 <Gregor> <elliott_> Gregor: Err, warp ten makes you go all lizard. // yes, but that was by means of hyper-evolution.
00:53:31 <Gregor> pikhq_: But he could SEE EVERYTHING, and he THOUGHT his way back to Voyager maaaaaaaan *smokes more pot*
00:53:58 <pikhq_> I like to think they invented an Infinite Improbability Drive, myself.
00:55:08 <Sgeo> I should also try PHP, just to give elliott_ an anxiety attack
01:02:55 <zzo38> Although I have used PHP and made programs in PHP, it isn't very good. You can try if you want to though, see what it is.
01:12:11 <Sgeo> For some reason, I thought zzo38 was a PHP fan. I guess using != liking
01:18:00 <Sgeo> I'm just looking up sources to support what I already know, instead of learning from them
01:20:31 -!- augur has joined.
01:20:40 <Gregor> Google Maps has options for "avoid highways" and "avoid tolls", but no "avoid Chicago"
01:21:05 <elliott_> `addquote <Gregor> Google Maps has options for "avoid highways" and "avoid tolls", but no "avoid Chicago"
01:21:07 <HackEgo> 406) <Gregor> Google Maps has options for "avoid highways" and "avoid tolls", but no "avoid Chicago"
01:21:20 <HackEgo> 322) <elliott> just because i'm homosexual <elliott> doesn't mean i have sex with men. <elliott> ...i'm also a paedophile [...] <elliott> see if i'm a gay paedophile <elliott> i don't have sex with men <elliott> i have sex with BOYS
01:21:22 <HackEgo> 126) <Warrigal> Darn, now I can't acknowledge the reference you were making.
01:21:22 <HackEgo> 276) [on Walter Bright] <nddrylliog> I went to chat with him after his talk at the ELC and he was like "hum, right - humans. How do they work again... oh, hi!"
01:21:23 <HackEgo> 318) <ais523> gah, who'd have thought removing concurrency from algol could be so difficult
01:21:25 <HackEgo> 141) <fungot> AnMaster: to any airbus plane. 3 passengers sadly died the most awesome thing ever.
01:36:21 -!- dbc has quit (Ping timeout: 240 seconds).
01:39:55 * Sgeo bites his tongue
01:40:07 <Sgeo> I'm about to recommend Subversion instead of Mercurial
01:40:17 * Sgeo feels like a traitor
01:40:52 <Sgeo> (I'm writing this paper from the point of view of a hypothetical corporation that has never seen version control before)
01:41:35 * Sgeo changes his mind
01:43:10 <Sgeo> I feel even worse for it being Joel who made me change my mind back towards Mercurial.
01:55:22 * Sgeo vaguely wonders if there's freely available autotuning software. According to Wikipedia, "Auto-tune" is a proprietary product :/
02:05:16 <Sgeo> Less than 2 hours to go
02:24:50 <pikhq_> Sgeo: git git git git.
02:25:16 <pikhq_> Well, rather, DCVS DCVS DCVS DCVS.
02:25:49 <pikhq_> Centralized version control is a fundamentally broken model.
02:25:58 <Sgeo> Well, I'm not going to really describe how to take full advantage of D
02:26:06 <Sgeo> Since I'm unsure of it mysef
02:28:37 <pikhq_> Why would you recommend D, anyways?
02:28:50 <pikhq_> Well, unless they fixed the stupid.
02:29:29 <Sgeo> As in, the "Distributed" of DVCS
02:29:33 <Sgeo> Not as in the language
02:29:57 <Sgeo> When will there be an E language?
02:30:00 <Sgeo> We have B, C, D
02:30:04 <Sgeo> Oh, there is already
02:31:27 <Sgeo> I'm sure there's plenty I'm forgetting. What are they?
02:33:48 -!- pikhq has joined.
02:36:40 -!- pikhq_ has quit (Ping timeout: 276 seconds).
02:42:26 <Sgeo> My next few paragraphs will be: Subversion, Git, and Mercurial
02:45:18 <Sgeo> Dangit, can't find any sources that give the brief overview that I do
02:46:01 * Sgeo looks for a glossary
02:54:32 <Sgeo> There's no way in heck that I will reach 5 pages. It is simply impossible.
03:04:39 <Sgeo> pikhq, you're going to kill me. I plan on vaguely being irritated at Git's history modification
03:04:53 <Sgeo> Without any real sources to back up my claim that it's a ticking-off sort of thing
03:10:48 * Sgeo cites gitvsmercurial.com
03:11:19 * Sgeo gets the person's name off of whois
03:12:38 <myndzi> i'm looking for a set of rules describing a turn-based strategy game that is very simple
03:12:40 <myndzi> maybe board-game level
03:12:45 -!- TeruFSX has joined.
03:12:52 <Sgeo> Teru Atlantis?
03:13:02 <myndzi> something that'd be fun, with considerations for basic terrain features somehow and maybe a handful of units, at least one with ranged attacks
03:13:11 <Sgeo> WTF that's not the phrase?
03:13:33 <Sgeo> Oh, "Terra Atlantis"?
03:14:38 <Sgeo> No, just commenting on TeruFSX's name
03:15:01 <TeruFSX> do you really want me to explain my name
03:35:28 <pikhq> It is technically possible for a child to have 5 parents.
03:36:06 <pikhq> Biological father, biological mother, surrogate mother, adoptive father, adoptive mother.
03:37:05 <zzo38> I consider only their biological parents their real parents, but I guess what you said is possible. How many times have you found anything like this?
03:37:13 <Sgeo> I have 2 and 1/4 pages
03:37:48 <Sgeo> pikhq, what about multiple adoptive parents?
03:37:54 <Sgeo> At least I have 10 sources.
03:38:52 -!- oerjan has joined.
03:39:04 <pikhq> Sgeo: Oh, let's go further — polygamous parents.
03:39:40 <pikhq> It is technically possible for a child to have as many parents as there are humans capable of entering into a marriage.
03:41:40 <elliott_> unless two people who have a kid outside of marriage aren't parents
03:42:01 <elliott_> although, I wouldn't say that all polyamorous configurations would lead to everyone being a parent...
03:42:54 <Sgeo> 2.5 pages of bullshit
03:42:58 <Sgeo> With 10 sources
03:43:08 <Sgeo> No way would I be able to write 5 pages, I think.
03:43:33 <Sgeo> Maybe namedrop some more VCSes?
03:43:39 <Sgeo> Visual SourceCrap
03:43:53 <Sgeo> (Note: Don't call "crap" things I have a limited awareness of)
03:44:36 <pikhq> Visual SourceSafe is definitely crap.
03:44:41 <pikhq> It is incapable of multi-user use.
03:45:05 <Sgeo> Dear EasyBib: Now is NOT a good time to stop working
03:45:44 <zzo38> What do you need to write this report for?
03:46:29 <Sgeo> Management Information Systems
03:46:33 <oerjan> <monqy> the topic is from the spambots right? are those things still going?
03:46:45 <Sgeo> It was a term project. I started it today. It's due in 12 minutes.
03:47:00 <oerjan> no, it seems that tightening captchas fixed it (before it only was for anonymous edits with links in)
03:48:02 <pikhq> And I thought *I* was a procrastinator.
03:49:04 <Sgeo> I can't write anymore
03:49:10 <Sgeo> I'm handing it in as is
03:51:10 <zzo38> Sgeo: No! Make it double-spaced!
03:51:39 <zzo38> Then make narrow margins!
03:52:06 <zzo38> That way it will fill 5 pages.
03:52:17 * Sgeo needs to make sure TurnItIn doesn't think I'm a plagiarist
03:52:35 <zzo38> How does it check?
03:52:51 <zzo38> Then don't use their service.
03:53:05 <elliott_> * Sgeo needs to make sure TurnItIn doesn't think I'm a plagiarist
03:53:09 <elliott_> what an amazing inversion of logic.
03:53:16 <elliott_> Finally, Turnitin for students. Avoid accidental plagiarism.
03:54:10 <Sgeo> I was once accused of plagiarising by a professor, simply because I used big words.
03:54:49 <elliott_> TRANSFERRING TO A PLACE THAT ISN'T A HEAP OF SHIT
03:57:21 <Sgeo> I cited a page that says "Who the FUCK cares"
03:57:31 <Sgeo> I feel ... weird, not bad weird, about that
03:57:38 -!- zzo38 has quit (Quit: 42).
03:57:47 <quintopia> well, if he's secretly a muslim, we'll be okay
03:57:49 <elliott_> jesus i wish xchat's ignore features were more usable this is killing me
03:57:59 <Sgeo> quintopia, ...what?
03:58:19 <quintopia> i thought i was only like a screen away from current
04:01:01 <elliott_> "He's probably just tired. Or a sociopath."
04:01:29 -!- oklofok has joined.
04:01:53 <elliott_> and with that, oklofok entered
04:02:18 -!- oklopol has quit (Ping timeout: 248 seconds).
04:03:22 -!- Zwaarddijk has quit (Ping timeout: 240 seconds).
04:04:04 -!- ineiros has quit (Ping timeout: 252 seconds).
04:04:08 <oerjan> <pikhq> Biological father, biological mother, surrogate mother, adoptive father, adoptive mother.
04:04:34 <oerjan> there's this woman of which the norwegian government made a half-example
04:04:57 <oerjan> she went to india to get a surrogate mother for her child (this is not legal to get done in norway)
04:05:40 <oerjan> intending to become a single mother. she didn't use her own eggs.
04:05:58 <oerjan> using surrogate mothers
04:07:56 <oerjan> at least paying them for it. i'm not sure of the details.
04:08:25 <oerjan> anyway, since she's not even the biological mother, by norwegian law she is _not_ the parent. by indian law, she is.
04:08:43 <oerjan> left the twins in complete legal limbo
04:09:39 <pikhq> Would that leave them stateless?
04:09:40 <oerjan> she almost got permission to adopt them anyway, but she lied on the application and said it _was_ her eggs
04:11:10 <oerjan> well they showed some mercy after about a year, and let her adopt anyway.
04:11:24 * pikhq wonders why there's laws against altruistic surrogacy. At all.
04:12:46 <oerjan> so for most of that year she was stranded in an indian hotel room with twins without a legal visa
04:15:03 <oerjan> it was pretty clear that the government were going to let them in _eventually_. but making sure no one else would want to try and copy her. or be able to claim ignorance.
04:15:39 <pikhq> Hmm, seems that the Convention Relating to the Status of Stateless Persons does not cover in any way a stateless child of a stated person.
04:16:13 <pikhq> Oh, it's irrelevant, anyways. India is not signatory.
04:17:34 <oerjan> one _could_ point out that india's laws support a booming surrogate parent _industry_
04:18:04 <pikhq> Easy as hell to cease that. Stop banning practices for no good reason!
04:19:29 -!- Zwaarddijk has joined.
04:22:06 -!- ineiros has joined.
04:23:27 <pikhq> A third instance of eye evolution in the vertebrates.
04:23:33 <pikhq> Dolichopteryx longipes is a species of barreleye fish. It has evolved a second pair of eyes with distinct optics.
04:23:37 <pikhq> Using *reflective* optics.
04:23:52 * oerjan found an english article somewhat about it on an indian website http://www.csrindia.org/index.php/surrogate-motherhood
04:24:40 <elliott_> I don't think anyone's arguing against /unregulated/ surrogacy are they?
04:25:00 <pikhq> (the barreleye fish, BTW, have transparent skulls)
04:26:32 <oerjan> elliott_: you mean _for_?
04:27:01 * oerjan eyes elliott_ suspiciously
04:28:11 <oerjan> YOU SCARY LIBERTARIANS
04:28:41 <elliott_> yes absolutely a libertarian that is what i am
04:36:27 <Sgeo> Scheme wiki has been hit by spam
04:39:22 <elliott_> abqbebrsbbsbbdbsbdbsbabqbqbqbqbqbqbqbq
04:54:17 <Sgeo> "Turing Completeness Considered Harmful"
04:55:15 <oerjan> (define (spam) (spam) (spam))
04:56:26 <elliott_> so is all the spam from that streak reverted?
04:56:32 <elliott_> we sort of went about it piecemeal
04:57:18 <oerjan> i tried to double check everything, and yesterday i asked ais523 to look over Special:New pages
05:14:52 <elliott_> TIL about Louis Wain, a man whose cat paintings show the progression of his schizophrenia. (dangerousminds.net)
05:20:31 <elliott_> AND I CAN COUNT IN EQUAL NUMBER THE AMOUNT OF TIMES I'VE SEEN IT REFUTED
05:20:47 <elliott_> Do you think I can unsubscribe from *every* subreddit?
05:24:15 <elliott_> Then there'll be no crap at all on my frontpage.
05:24:37 <oerjan> you could add askscience, i hear it's pretty good
05:25:02 <elliott_> oerjan: Why would I want to see other people's ignorance?
05:25:13 <elliott_> Why are there sixty seconds in a minute, sixty minutes in an hour etc? And why does a second last the duration that it does? (self.askscience)
05:25:18 <elliott_> Why can't you make a perpetual spinning magnetic motor? (self.askscience)
05:25:26 <elliott_> If I have 20/20 vision and put on somebody's prescription glasses, will I basically see the way that they do? (self.askscience)
05:25:33 <elliott_> oerjan: no, i do not think this would be a good subreddit to subscribe to.
05:25:48 <oerjan> too cynical to live, check
05:25:49 <elliott_> How does a dog know to make eye contact? With a human? (self.askscience)
05:25:57 <elliott_> Cell phones are killing bees? Is this true? (self.askscience)
05:26:01 <elliott_> Why is the sky a bright orange sky before a thunderstorm? (self.askscience)
05:26:06 <elliott_> Questions about the wave-particle duality in quantum mechanics (self.askscience)
05:26:14 <elliott_> Can drinking distilled water exclusively be harmful? (self.askscience)
05:26:20 <elliott_> Why do atomic explosions result in mushroom-shaped clouds? (self.askscience)
05:26:26 <elliott_> How many Homo Sapien ancestors do I have (approximately)? (self.askscience)
05:26:49 <Sgeo> iirc, Arc is one of the 3 despised-by-many-Lispers lisps?
05:26:59 <Sgeo> Along with newLisp and Clojure?
05:27:10 <oerjan> elliott_: um are these actual posts and answers or have you never actually visited the subreddit? (i admit i rarely have)
05:27:22 <elliott_> oerjan: actual posts, I'm making up the answers because I hate these people
05:27:36 <elliott_> Sgeo: Anyway, Arc isn't hated much for its actual language, it's more pg's hyping and the subsequent utter letdown.
05:27:45 <oerjan> well it's the _answers_ i've heard are good
05:27:48 <Sgeo> "utter letdown"?
05:27:52 <elliott_> The language itself is uninteresting/crappy, but it's too intwined with pg's ego as far as hatred goes.
05:28:05 <elliott_> Sgeo: um, he spent over five years saying he was working on a revolutionary lisp dialect that would last a hundred years
05:28:18 <elliott_> when it was released it was a few hundred lines of scheme code with shorter names for some functions, and an http server
05:28:34 <elliott_> (he literally said he wanted arc to last a hundred years)
05:28:43 <elliott_> oerjan: good answers to stupid questions? well that's not exactly a difficult business :D
05:28:44 -!- pikhq has quit (Read error: Operation timed out).
05:29:36 -!- pikhq has joined.
05:30:12 <oerjan> so basically arc is the proof that pg has hit his own whatever it was starting with b
05:30:39 <oerjan> no a word someone made up, possibly pg himself
05:33:53 <Sgeo> I don't really remember why newLISP was hated, except for the memory management, and I think even I saw that something some newLISP defender said was... wrong somehow
05:34:59 <elliott_> it has no garbage collection, is uninteresting in most if not every way, and its creator and all its fans are evidently idiots as they try and scramble to justify this in the most terrible way possible
05:35:13 <elliott_> (i'll let dynamic scoping slide as picolisp pulls it off)
05:36:10 <elliott_> "Dutch is like English from some alternative, backwards universe where hydrogen is replaced with vowels."
05:36:50 <Sgeo> "@radekg Please don't insult COBOL like that. It's nowhere near as bad as ColdFusion. :-)"
05:36:54 <Sgeo> http://programmers.stackexchange.com/questions/2846/which-programming-language-do-you-really-hate
05:37:15 <elliott_> or i will commit serious acts of violence against you and nobody will be able to stop me :(
05:37:20 <elliott_> such will the force of my facepalming be
05:37:26 <Sgeo> elliott_, did you think I was about to ask if I should learn ColdFusion?
05:37:40 <elliott_> you were going to ask why it sucked
05:38:37 <Sgeo> I assume it's more than just the XMLishness
05:38:50 <Sgeo> (I had and read a book on ColdFusion once when I was young)
05:39:06 <elliott_> im going to get drunk and forget everything i know about codlfusion
05:40:02 <Sgeo> <cfif nick eq "elliott_">You can't hide that easily</cfif>
05:46:23 <Sgeo> "Basic constructs of any decent language include the ability to specify a null value. You will find no such thing in ColdFusion, only hacks into it's Java layer (another questionable mess) and a ridiculous nod in the form of (cfqueryparam null="yes")."
05:46:40 <Sgeo> Wow. That's... probably the only wrong reason to hate CF
05:46:51 <Sgeo> (Not having nulls is _not_ a bad thing)
05:47:05 <elliott_> having no nulls and no maybe/option type certainly is
05:47:06 <Sgeo> (Unless you can't handle their occasional use cases easily)
05:47:19 <elliott_> Returning "maybe a value, or maybe not" is almost universal.
05:47:24 <elliott_> For instance, any kind of lookup.
05:50:01 <oklofok> obviously the superiorest way to fail is continuations, especially these modern and structured continuations called exceptions are particularly handy
05:50:43 <elliott_> non-local control flow ARE YOU CRAZY?????
05:51:00 <oerjan> but the locals are so dirty
05:51:37 <oerjan> also every monad can be implemented with continuations, see felleisen
05:52:32 <elliott_> there's a nice sigfpe post about that too
05:54:22 <oerjan> the one about how you could get monad syntax for any monad if it just worked for Cont?
05:57:51 <oerjan> hm is this the real Slava Pestov? http://www.reddit.com/r/programming/comments/6ikav/shortest_summary_of_the_release_of_arc_and_the/c03xxhe
05:59:48 * elliott_ said that without even clicking :)
06:00:11 <oerjan> also http://www.reddit.com/r/programming/comments/6ikav/shortest_summary_of_the_release_of_arc_and_the/c03y3l6
06:35:23 -!- elliott_ has quit (Read error: Connection reset by peer).
06:38:53 -!- elliott has joined.
06:49:03 <cheater666> so you can totally orz him if you want
06:49:34 <oerjan> cheater666: well i was just wondering if the reddit account was real, is all
06:50:02 <oerjan> after all, he was making a pretty strong statement, there
06:50:23 <cheater666> Orz (also seen as Or2, on_, OTZ, OTL, STO, JTO,[22] _no, _冂○,[23] 囧rz,[20] O7Z, _|7O, Sto, O|¯|_, and Jto[original research?]) is an emoticon representing a kneeling or bowing person
06:51:00 <cheater666> oerjan, good programmers need a good kick in the butt if they're doing stupid shit
06:53:18 <oerjan> i don't think that applies very well to paul graham. he is one of those unreasonable people George Bernard Shaw spoke about.
06:53:36 <oerjan> which is wonderful when he is _right_, of course, but...
07:12:20 <Sgeo> Bootable livecd for anonymity? Where have I heard that before...
07:17:08 <fizzie> Boo-table, the main building block of a ghost database.
08:11:42 -!- siracusa has quit (Ping timeout: 240 seconds).
08:13:16 -!- siracusa has joined.
08:14:51 -!- monqy has quit (Quit: hello).
08:55:16 -!- Vorpal has joined.
08:58:11 <Lymia> What language is that?
08:58:28 <Lymia> Looks like a mangled Chinese 4.
08:59:24 <Lymia> Ah, it is a kanji/hanzi
09:12:50 -!- ais523 has joined.
09:29:09 <ais523> umm, I'm meant to be teaching a tutorial right now
09:29:13 <ais523> but none of my students showed up
09:29:18 <ais523> so I'm sitting in the room with a laptop
09:41:54 <ais523> I was slightly late, so I'm wondering whether they all turned up, decided I wasn't coming, and went home; or whether they never turned up in the first place
09:41:59 <ais523> it's optional, because it's exam revision
09:42:25 <ais523> and if they haven't turned up, I have to wonder if they don't need it, or they're really overconfident, or they're really lazy
09:46:54 <fizzie> Around here people generally wait for up to 10-20 minutes before giving up.
09:48:06 <ais523> that's about how late I was, train issues
09:51:03 -!- oerjan has quit (Quit: leaving).
09:53:02 -!- FireFly has joined.
09:53:51 <Vorpal> <Lymia> 囧? <--- looks like a simple outline of a house inside a frame
09:54:49 <Vorpal> ais523, that is not slightly late, that is quite a bit late
09:56:28 <Vorpal> ais523, slightly late: up to 5 minutes, a bit late: up 10 minutes, late: up to 15 minutes, quite a bit late: up to 25 minutes, very late: up to 45 minutes, extremely late: anything above that
09:56:48 <ais523> I didn't know you could quantify vague adjectives that accurately
09:56:49 <fizzie> Is this an ISO standard?
09:57:10 <Vorpal> ais523, then you learnt something new today
09:59:49 <Vorpal> ais523, actually that is the old system, in the new system it is preferred to give it in units of late (with metric prefixes), so you were 8 decilate
10:01:00 <ais523> wow, I suspended my laptop, came back to my office, unsuspended it, and was still connected to IRC
10:01:21 -!- augur has quit (Remote host closed the connection).
10:01:28 <Vorpal> ais523, was that s2ram?
10:01:42 <ais523> I wouldn't expect hibernation to work
10:01:54 <Vorpal> I managed to pull out ethernet cable, untangle the cabling, plug it back in, and still be connected to irc
10:02:09 <Vorpal> I'm a bit surprised it works with wireless and with s2ram though
10:02:25 <ais523> the only thing that really surprises me is that the IP didn't change
10:02:31 <ais523> (presumably, if it had, reconnecting automatically would have failed)
10:02:32 <fizzie> TCP's like that; I guess I've mentioned the "can hang-up the dialup connection and redial without IRC dropping" thing here earlier.
10:02:52 <ais523> I'm well aware that TCP is capable of handling the connection break, though, as long as it's short enough that there's no pingout
10:02:53 <Vorpal> fizzie, not that I remember
10:03:00 <ais523> UDP is actually like that too, for different reasons
10:03:14 <Vorpal> how comes UDP is like that hm
10:03:15 <ais523> the connection doesn't actually exist, so a short enough interruption is indistinguishable from the connection breaking
10:03:34 <Vorpal> ais523, that depends on the protocol on top of udp though
10:03:51 <ais523> Vorpal: well, yes, but I'm talking if you just write a program that's pretty much raw UDP
10:03:54 <ais523> as a chat server or something
10:04:10 <fizzie> Vorpal: Well, that was most of the story already, though I also did patch ircii to say "PING? PONG!" whenever the server pinged, so I could choose to do the disconnection immediately after a previous ping.
10:04:10 <Vorpal> ais523, you could lose messages in the udp case (unlike the tcp case)
10:04:28 <ais523> Vorpal: indeed, but for something like a chat server that's less of a problem
10:04:32 <Vorpal> fizzie, why did you patch it like that
10:04:43 <fizzie> Vorpal: I think mIRC used to say it like that.
10:04:57 <ais523> IRC servers don't actually ping each other to check connection
10:04:57 <fizzie> (Some win3.11-age version of it, anyway.)
10:05:07 <ais523> they just assume the pings, and send a constant stream of pongs
10:05:08 <Vorpal> fizzie, why did you redial
10:05:25 <Vorpal> ais523, you mean the server-server protocol? Well that varies between ircds
10:06:02 <Vorpal> though sending keep alive messages is one way yes
10:07:15 <fizzie> Vorpal: That was a silly telephone call pricing thing. The local telephone company used to have fixed-price-per-call "evening" (17-08) local call prices; then after modems got all popular they changed it so that the "per-call" price only got you 30 minutes, after that it was some per-minute pricing. So the cheapest way to stay online was a series of ~30-minute calls.
10:07:51 <ais523> fizzie: oh, that's why they do that?
10:08:10 <ais523> in the UK, the phone cost for evening calls nowadays is something like 10p for the first hour, then 1p per minuts
10:08:12 <Vorpal> fizzie, heh, did you do it by a script then?
10:08:36 <ais523> and the phone company actually suggests redialing every hour for that reason
10:09:02 <Vorpal> why would they suggest it openly...
10:09:05 <fizzie> ais523: Well, I haven't seen any official rationale; but that's my guess, anyway, since it happened pretty soon after people started spending time online with several hours long phonecalls.
10:09:18 <ais523> Vorpal: I think they're assuming that people assume that that's just how phones work
10:09:46 <Vorpal> that they need reconnecting?
10:09:47 <ais523> fizzie: the other reason to do things like that is because most phone calls are very short, but people still have to pay for the whole first hour anyway
10:09:54 <ais523> Vorpal: that they start costing more after an hour
10:10:50 <fizzie> ais523: Well, I guess; but the per-call price here was only ~5 minutes worth of the per-minute pricing. (Which was actually I think the same per-minute price they used normally for the mon-fri 8-17 calls.)
10:10:54 <Vorpal> anyway, modems are dead these days (outside development countries at least)
10:11:16 <fizzie> Vorpal: I didn't have a completely automated script since I wanted to time it for the pings, and hooking up pppd's time-elapsed counter with ircii's ping-checking sounded a bit overly elaborate.
10:11:35 <Vorpal> well, PPP still survives in the form of PPPoE/PPPoA and such, oh and tethering over bluethooth at least
10:11:41 <ais523> but it's because the per-minute pricing is insane, rather than because the first-hour price is cheap
10:12:13 <ais523> and then, after a while, one of the phone companies came up with an "as many phone calls as you like, of any length, to one ISP for a flat rate"
10:12:28 <ais523> and that's more or less how the monthly-cost internet connection came to the UK
10:12:57 <Vorpal> ais523, isn't monthly cost internet standard for anything that isn't dial-up?
10:13:07 <Vorpal> I don't think I ever seen dial-up that is monthly cost
10:13:17 <ais523> Vorpal: it is /nowadays/
10:13:21 <Vorpal> ais523, anyway at least in Sweden the ISPs are generally the phone companies
10:13:22 <ais523> but it was pretty revolutionary then
10:13:30 <ais523> especially as it was dialup back then
10:13:44 <fizzie> I think they did some sort of Internet-related phone-call deals here in Finland too.
10:14:00 <ais523> and yes, in the UK nowadays, the ISPs, cable/satellite TV providers, phone companies, and even sometimes mobile phone companies are all the same
10:14:20 <ais523> I think I remember the price too, it was £25 a month
10:14:30 <Vorpal> ais523, well yes, mobile phone companies are mostly the same as land line ones, with a few that are mobile only
10:14:37 <ais523> come to think of it, it's about that nowadays, although effectively cheaper because of inflation
10:14:52 <ais523> Vorpal: here, there are several mobile only
10:15:09 <Vorpal> ais523, there aren't all that many companies doing mobile phone here
10:15:23 <ais523> and the largest landline company, BT, don't really do mobile phones (they do, technically, but only because they bought a mobile phone company and run it as a mostly separate unit)
10:15:31 <ais523> there are quite a lot of major mobile phone companies in the UK
10:16:01 <Vorpal> lets see, Telia, Tele2, Telenor, 3, Comviq, Halebop (owned my Telia, but targets a different market segment than Telia itself).
10:16:05 <fizzie> Seems that the current landline local call price here is... 0.012 eur/minute + 0.121 eur/call, with no special cases. Or possibly 0.0059 eur/minute with a different sort of deal.
10:16:12 <Vorpal> maybe some more, but not any large ones
10:17:22 <ais523> fizzie: wow, that's cheap by UK standards
10:17:37 <Vorpal> I have no idea what landline price is
10:17:39 <ais523> although probably the UK is cheap by the standards of some other countries
10:17:56 <ais523> when I was in Canada, I tried to make an international call by payphone to the UK
10:18:10 <ais523> and the way it worked was, you dialed the number first then the phone told you how much it would cost, and you either paid or hung up
10:18:15 <fizzie> ais523: 0.012 eur/minute + 0.121 eur/call translates to 1.046p/minute and 10.544p/call, which sounds like those prices you mentioned, with the exception that you start paying per-minute immediately at the start of the call even in the evenings.
10:18:39 <ais523> when I tried, it took something like 5 minutes to work out the cost, and gave a number so large that I couldn't be reasonably expected to fit that many coins into my wallet to be able to pay it a coin at a time
10:18:51 <ais523> fizzie: oh right, I muddled euros and eurocents
10:18:56 <ais523> no wonder I thought your prices were cheap
10:19:23 <Vorpal> ais523, it took 5 minutes to work out the cost!?
10:19:32 <ais523> Vorpal: I think the phone wasn't doing it itself
10:19:47 <ais523> I think it phoned up some central cost calculation location that had to work out how much a call to the UK was likely to cost
10:19:57 <ais523> and for all I know, it was being done by hand rather than automatically
10:19:57 <Vorpal> ais523, was it a human doing it then?
10:20:26 <Vorpal> ais523, a computer would do it in a fraction of a second yeah
10:20:30 <fizzie> International telephony is a complicated thing.
10:20:53 <ais523> I made a phone call from Hungary to the UK and that wasn't so bad
10:21:08 <ais523> and was definitely calculated automatically, connection took no more than a couple of seconds longer than normal
10:21:34 <Vorpal> expected since it would have to route in a complex way I guess
10:21:36 <ais523> it was a bit more expensive than a typical landline connection, but that wasn't surprising
10:21:43 <fizzie> Mobile phone roaming abroad is also quite messy, protocol-wise, if I recall correctly from some telecommunications-basics lectures. The phone gets a temporary "virtual number" in the country-you're-visiting and so on.
10:22:11 <ais523> I suppose it was within Europe, though, and that's practically one country for some purposes
10:22:43 <Vorpal> at least in Sweden there is no longer any difference between long distance/local within the country for rates
10:22:52 <Vorpal> there is a difference between to landline / to mobile though
10:23:05 <Vorpal> and of course international rates is the usual mess
10:23:20 <fizzie> We still have local/long-distance landline prices, it seems.
10:23:56 <fizzie> I don't think people are really making any new landline deals in any significant numbers, though.
10:24:20 <Vorpal> fizzie, what about ADSL?
10:24:30 <Vorpal> it goes over landline after all
10:24:59 <fizzie> Well, okay, but that's usually sold (at least in here) as an internet-only service and without a telephone number + contract.
10:25:05 -!- BeholdMyGlory has joined.
10:25:46 <ais523> fizzie: in the UK, the landline normally just comes with the house nowadays
10:25:48 <fizzie> I think new buildings tend to opt for some sort of fiber-based interwebbing anyway. I have no idea if they still install traditional telephone wiring though.
10:25:54 <ais523> so new landline deals are mostly only made for new houses
10:26:08 <ais523> and they have to have traditional telephone wiring so you can make an emergency call during a power cut
10:27:22 <fizzie> Do you have some sort of "can make an emergency call even without a landline contract"? Because at least in here people have been busily giving those up.
10:27:22 <cheater_> has anyone here used any AST-based source code editors?
10:27:33 <ais523> cheater_: I think Cheery was writing one
10:27:45 <ais523> someone who was here a while back
10:27:56 <cheater_> i know someone's writing one for Haskell, but he's only talking about it and not really doing it
10:28:04 <cheater_> what do you guys think of the concept?
10:28:13 <ais523> fizzie: if you make an emergency call from a mobile in the UK, any mobile operator in range has to pick it up and relay it, whether you have a contract with them or not
10:28:15 <cheater_> i think AST + vim style operation could be very cool
10:28:20 <ais523> in fact, many phones can do it even without a SIM card
10:28:35 <fizzie> ais523: Sure, but that doesn't have anything to do with telephone wiring.
10:28:44 <Vorpal> fizzie, I think you can call 112 no matter what in Sweden. Such as mobile carriers have to let them through by law even if you don't have a contract with them, or you are out of money on a pre-paid plan or whatever
10:28:56 <ais523> for the telephone wiring, I imagine emergency calls would only work if it was physically connected to something at the other end
10:28:58 <cheater_> fizzie: well, technically, a sim card has got wires (well, conductors) in it
10:29:14 <Vorpal> and iirc my mobile can call 112 without entering the PIN even
10:29:25 <ais523> Vorpal: would suck if your PIN started 112
10:29:29 <ais523> or does the phone know about that?
10:29:34 <Vorpal> ais523, different button for call and for OK
10:29:36 <ais523> (e.g. do you have to press 1 1 2 green, or something like that?)
10:30:06 <ais523> 112 is technically the emergency number in the UK too, although 999 still works, and probably will do forever
10:30:08 <fizzie> Percentage of homes with a landline telephone in Finland has dropped from 94% to 33% between 1995-2007; but I can't find any newer statistics. :/
10:30:17 <Vorpal> ais523, from google image search, this is my phone model: http://dansbandsfrun.bloggproffs.se/files/nokia-3120-classic-021.jpg
10:30:24 <Vorpal> (I have the blackish one)
10:30:43 <ais523> (112 is a much superior number from a physical point of view; it's harder to type by mistake on a keypad, and faster to dial on an old-fashioned rotary dial phone)
10:30:49 <Vorpal> the blue - button above the call button is used for OK
10:31:48 <Vorpal> ais523, on a non-rotary phone it is harder to get right if you are in a stressful situation, with 999 you can just mash one button a couple of times
10:32:13 <ais523> still, when my little sister was very young she dialed 999 by mistake, because 9 was her favourite number
10:32:21 <fizzie> The N900 "enter lock code" screen has a number pad and a "done" button; if you type in 112 as the code, an extra "emergency call" button appears above the "done" button.
10:32:21 <ais523> and my parents had to explain what happened to the emergency response people
10:32:30 <ais523> luckily, they were presumably quite used to that sort of thing happening
10:32:52 <fizzie> The SIM entry dialog might have a similar thing.
10:33:03 <ais523> and it doesn't cost much money for them to answer a call and decide it isn't an emergency; it's only when they decide it is that it's really expensive
10:33:16 <ais523> hmm, has anyone here made an actual emergency call, ever?
10:33:22 <Vorpal> ais523, still hitting 9999 will still take you to emergency service, while I don't think 1112 or such will take you to the right place (presumably 1122 would though)
10:33:37 <ais523> I did once (calling university security on their emergency number because a fight had broken out in the building I was in)
10:33:49 <Vorpal> ais523, a fight at university, heh
10:33:52 -!- augur has joined.
10:33:55 <ais523> fizzie: what was yours about?
10:34:02 <ais523> Vorpal: indeed, and it was looking quite violent
10:34:16 <Vorpal> ais523, I just wouldn't expect that in a university
10:34:26 <ais523> I tried to stop it myself, but the fight just migrated into a lift (en-us:elevator) and shot off way out of the range where I could chase it
10:34:41 <ais523> and in the end it was broken up by security
10:34:59 <Vorpal> ais523, anyone you knew involved?
10:35:19 <ais523> they were in my department, but I had no idea who they were
10:35:25 <fizzie> ais523: There was a fire alarm device going on in the apartment above us, and after it had been going on for 15 minutes or so without stopping I thought I'd better let the fire emergency people know about it. They sent a car to take a look.
10:35:28 <Vorpal> ais523, students? faculty?
10:35:44 <ais523> fizzie: was it a fire?
10:36:12 <fizzie> ais523: Turned out the people living above us had for some really inexplicable reason an (indoors) fire alarm in their *balcony*, and perhaps the -25-degrees-Celsius temperatures or something had gotten it confused.
10:36:20 <Vorpal> fizzie, uh wouldn't fire alarm in a university building be wired to automatically notify emergency services
10:36:23 <Vorpal> at least around here they are
10:36:27 <ais523> Vorpal: mostly they are over here
10:36:28 <fizzie> Vorpal: This was at home.
10:36:38 <Vorpal> fizzie, oh I read that as department, not apartment
10:36:44 <ais523> the last building I was in (not this one, the one with the Door) was originally wired up to the fire department
10:36:59 <ais523> but they gave up after a while, as the builders kept drilling through fire alarm signal wires and calling out the fire engines as a result
10:37:22 <Vorpal> ais523, I seen a handful of false alarms at university myself
10:37:30 <ais523> so now they have a system where the signal went to security control, and they'd check to see if it looked like an actual fire or manual call, and call the fire brigade themselves if it was actualy a fire
10:37:40 <cheater_> Vorpal: i would <3 to see uni faculty get it on
10:37:43 <ais523> in my current department, the fire alarm has only ever gone off during actual fire drills
10:37:55 <ais523> although the burglar alarm goes off by mistake quite a bit
10:38:01 <ais523> and can be annoying during lectures
10:38:34 <Vorpal> ais523, I seen an electrician set off a burgler alarm next to a lab I was in at one point.
10:38:34 <cheater_> ais523: do you think an ast-based editor can be useful?
10:38:50 <Vorpal> with a few hours in between
10:38:53 <ais523> cheater_: potentially, yes, but I likely wouldn't use one
10:39:00 <Vorpal> you would think he would avoid doing it the second time
10:39:00 <ais523> text has huge benefits
10:39:22 <cheater_> Vorpal: maybe he failed at avoiding.
10:39:25 <ais523> you can easily interpret it in a different way
10:39:31 <cheater_> rolled snake eyes on the critical roll
10:39:45 <cheater_> ais523: how does that relate to source code?
10:39:55 <ais523> I often line up columns with whitespace in my programs, for instance, so I can easily do edits going down the columns rather than across the rows
10:39:58 <fizzie> ais523: After our high school building was renovated (and a new wing built), there was a series of maybe 5 or so spurious fire alarms within a period of about two weeks. The emergency service people probably got quite bored about it. (And the first call was answered with real fire truck, maybe even a couple, while for the last one someone just came with a regular car to turn the thing off.)
10:40:01 <ais523> which is an operation that makes no sense in an AST
10:40:11 <cheater_> ais523: no reason an ast-based editor couldn't do that
10:40:30 <ais523> cheater_: I'd say it wouldn't be AST-based if it did
10:40:32 <cheater_> lots of things can display serialized data in equal-width columns
10:40:40 <cheater_> it's about the navigation and editing
10:40:47 <Vorpal> fizzie, lucky there wasn't a real fire then the last time
10:40:56 <cheater_> for example the space between the source items could, inside the editor, be zero-width
10:41:16 <cheater_> but it would not be displayed zero width, instead the right amount of space would be displayed
10:41:24 <cheater_> in this case, what's on screen != what's in the buffer
10:41:28 <ais523> cheater_: but the columns aren't part of the AST at all
10:41:37 <cheater_> no, but they're part of the display
10:41:44 <Vorpal> ais523, now design a language where columns would be part of the AST
10:41:46 <cheater_> no reason you can't have a render pass
10:42:02 <ais523> Vorpal: they would be in DownRight
10:42:10 <ais523> in fact, part of the reason that doesn't have an interp yet is that it doesn't have a syntax
10:42:15 <Vorpal> ais523, I'm not familiar with that language *checks esowiki*
10:42:22 <ais523> I'm not sure if I put it there yet, but it's really simple
10:42:39 <cheater_> Vorpal: what do you think about an ast-based text editor?
10:42:44 <ais523> a program is a rectangular matrix, treated as a torus, and each cell contains a possibly empty string of "down" and "right"
10:42:56 <cheater_> ais523: so if the text editor does a render pass to line up things, are you happier with it?
10:42:57 <ais523> running a program, you start by appending a copy of the contents of the first cell to a queue
10:43:04 <cheater_> i mean lining up columns is trivial
10:43:14 <ais523> then continuously move in the program according to the queue, appending a copy of the contents of each cell as you go
10:43:39 <Vorpal> ais523, that queue wouldn't grow more than 1 element would it?
10:43:45 <cheater_> say you have two lines like this: [1, 2, 555, 6, , 2, 1] and [1, 5, , 2, 77] <--- those two can be lined up trivially
10:43:46 <ais523> each cell contains a string
10:44:22 <Vorpal> ais523, how do you know it is TC?
10:44:28 <cheater_> what i want is a language where the indentation of the line changes the scope it operates in, but lines still get executed from top to bottom
10:44:58 <ais523> if the width and height of the matrix are coprime, it compiles neatly into more or less everything (that's not how I know it's TC, I proved it was TC by compiling cyclic tag into it)
10:45:12 <cheater_> for example: you could have an if branch which defines a new local scope. inside this if branch you could have a single line that's one indentation less than the rest of the if body. it makes the line operate on the context that the if clause was on.
10:45:14 <augur> ais523, Vorpal, what languages do you speak natively?
10:45:26 <cheater_> ais523: no, python finishes blocks on encountering lesser indentation
10:45:28 <Vorpal> ais523, so why would it not have an interpreter?
10:45:33 <ais523> I think INTERCAL is the only program which has scopes that work like that, and it doesn't use indentation for scoping
10:45:40 <ais523> Vorpal: you could interpret it just fine
10:45:45 <ais523> it just also happens to compile easily
10:45:51 <cheater_> ais523: do you think this could be an interesting esolang?
10:46:01 <ais523> but then, so could most other things
10:46:05 <Vorpal> augur, Swedish I guess. Though I manage quite well in English, and in some areas (compsci mostly) I know the words of things in English but not in Swedish.
10:46:08 <ais523> at least it wouldn't be a boring BF derivative
10:46:25 <ais523> cheater_: because you only really need one new idea to make an interesting esolang
10:46:29 <ais523> especially if you milk it to death
10:46:40 <ais523> http://esolangs.org/wiki/Forte is my favourite example of that, among the esolangs I've designed
10:46:44 <cheater_> ais523: what other ideas could be used for this esolang?
10:46:46 <Vorpal> ais523, so why is it not implemented, it should be easier than befunge even,
10:46:54 <Vorpal> need a proper spec though
10:46:54 <ais523> Vorpal: because it doesn't have a syntax
10:47:01 <ais523> and thus you can't write programs in it
10:47:17 <Vorpal> ais523, a file format like befunge's would surely work?
10:47:30 <ais523> well, there are strings in every cell
10:47:34 <ais523> so you'd need to separate with tabs or something
10:47:45 <ais523> (but then, it'd look ugly in an editor if your strings were more than 7 chars long)
10:47:49 <augur> wheres my finns :|
10:48:11 <Vorpal> ais523, actually I suggest space separation, if you can write downright
10:48:24 <fizzie> augur: What do you need a Finn for?
10:48:31 <ais523> well, I don't think you'd write out the words
10:48:32 <augur> fizzie: data collection
10:48:48 <cheater_> ais523: and use html tables for the cells
10:48:51 <ais523> which have the benefit of being easy to type on my keyboard
10:48:54 <augur> fizzie: i need some minor translations and judgements of grammaticality
10:48:54 <Vorpal> ais523, well space separation then.
10:48:55 <ais523> cheater_: that is an awful idea
10:49:03 <cheater_> ais523: that's exactly why it should be done
10:49:08 <Vorpal> ais523, yes ↓→ are easy, just altgr-u/i
10:49:08 <ais523> Vorpal: how would you distinguish an empty cell?
10:49:10 <cheater_> ais523: or better yet, excell spreadsheets
10:49:14 <ais523> Vorpal: same combo as on here
10:49:31 <Vorpal> ais523, hm... maybe a symbol representing that?
10:49:51 <cheater_> ais523: excel spreadsheets can be output to TSV, you don't need to look at the intermediate code
10:49:59 <Vorpal> ais523, why not any symbol that isn't space, ↓ or →
10:50:03 <fizzie> augur: Well, if it doesn't take long, I can provide some; though I'm not always so good at judging grammaticality. (Finnish is anyway quite flexible about some things, especially if you just apply some poetic license.)
10:50:16 <ais523> ah, so you can put a comment in a cell to mark it as empty?
10:50:22 <augur> fizzie: are you a native finnish speaker, or a second language speaker?
10:50:30 <fizzie> augur: Native Finnish speaker, yes.
10:50:51 <Vorpal> ais523, as long as there is no space in that comment of course
10:50:54 <ais523> hmm, I vaguely want to write a downright -> BF compiler now, it shouldn't be too hard
10:50:58 <Vorpal> ais523, since then it would be multiple cells
10:51:10 <ais523> although simplest to insist on coprime width/height
10:51:17 <Vorpal> ais523, I want to write a DownRight interpreter if you put up page on the wiki about it
10:51:25 <Vorpal> ais523, why do they need to be co-prime?
10:51:35 <ais523> as then you can use just one modulo operation to wrap both of them, rather than needing two
10:52:01 <ais523> say your program is 7 wide and 5 high
10:52:15 <ais523> you can map (x, y) to (5x + 7y) mod 35
10:52:20 <ais523> and use it as an index to a lookup table
10:52:21 <Vorpal> oh you mean one integer to track the position, right
10:52:28 <ais523> then going down is adding 5, across is adding 7
10:52:54 <Vorpal> ais523, solved too many crosswords?
10:54:01 <Vorpal> ais523, anyway, why compile to bf?
10:54:10 <ais523> for fun, not for any particular reason
10:54:40 <Vorpal> ais523, why not compile to feather?
10:55:08 <ais523> because a) that would be uninteresting given the nature of Feather, b) I still don't really get how Feather works yet
10:55:16 <ais523> and INTERCAL generally makes a bad compilation target
10:55:37 <Vorpal> I'd love to see a queue implemented in intercal
10:55:59 <ais523> simplest way to do a queue in INTERCAL is two stacks
10:56:18 <ais523> you pop from the first and push on the second; if you try to pop from the first and it's empty, you reverse the second stack onto the first and continue
11:10:11 -!- jix_ has quit (Read error: Connection reset by peer).
11:49:02 <ais523> http://esolangs.org/wiki/DownRight is on the wiki now, anyway
12:02:49 <Vorpal> ais523, hm what happens with leading whitespaces on a line?
12:02:58 <Vorpal> it doesn't seem to be defined
12:03:03 <ais523> at the start of a program, it isn't
12:03:17 <Vorpal> ais523, at the start of a line I was considering
12:03:22 <ais523> everywhere else, they end up as part of the whitespace that separated it from the line before
12:03:39 <ais523> as it's a string of whitespace containing at least one vertical whitespace character
12:04:03 <Vorpal> ais523, btw real comments will likely end up like this foo_bar_quux
12:04:30 <Vorpal> ais523, what about weird unicode spaces
12:04:50 <ais523> but it wouldn't be the first time esolangs had a bizarre comment syntax
12:05:19 <ais523> really, since when has Unicode support ever been consistent between implementations of a widely-implemented esolang?
12:05:21 <Vorpal> ais523, what about a unicode zero width space, is that a whitespace or a comment?
12:05:39 <ais523> there's an official definition of what is and what isn't whitespace somewhere, though
12:05:57 <Vorpal> ais523, you mean, for esolangs, or in general?
12:06:09 <ais523> the official definition's in general
12:06:32 <ais523> Unicode Consortium, most likely
12:07:32 <Vorpal> ais523, at some point (not today) I might write a ↓→ compiler. Compiling to C probably, though dynamically growing queues in C sounds no fun
12:07:40 <Vorpal> also um, how would one observe the state
12:09:00 <Vorpal> ais523, languages with output are nice in that it is easier to test them
12:09:03 <ais523> well, it's just halt/nonhalt
12:09:08 -!- FireFly has quit (Quit: swatted to death).
12:09:08 <ais523> but it's easy enough to do debug output
12:09:15 <Vorpal> ais523, could be halt-at-position
12:09:16 <ais523> just print the sequence of downs and rights as they're popped
12:09:26 <ais523> and maybe coordinates too
12:10:06 <Vorpal> ais523, I can't see any way to optimise this language that isn't just evaluating it
12:11:23 <ais523> some sort of static analysis?
12:11:48 <Vorpal> ais523, I'm not sure how helpful it would be...
12:12:06 <Vorpal> or what sort of thing you could extract from it
12:12:46 <ais523> well, some downs/rights you could statically prove to always move to blank cells
12:13:01 <ais523> so you could merge them into the downs/rights afterwards, as a sort of "move diagonally" or whatever
12:13:07 <Vorpal> ais523, I guess the best way to do a queue in C would be a single-linked list and keeping a pointer to the end element, blergh
12:13:13 <Vorpal> dynamic memory allocation
12:13:33 <ais523> no, the best way is to use a circular array and grow it if necessary, even if it means you have to copy the queue
12:13:48 <Vorpal> ais523, hm, but wouldn't that depend on where they came from before, to know what was already in the queue?
12:13:49 <ais523> that has much better cache properties, stores more compactly in memory, and requires much fewer allocations
12:14:18 <Vorpal> ais523, more painful to work with, but sure
12:14:38 <Vorpal> ais523, I'd write the compiler in a HLL though
12:16:05 <ais523> hmm, after spending several hours translating an algorithm from Haskell into OCaml
12:16:21 <ais523> I concluded that the major difference between the languages is that Haskell's standard library was better, or at least easier to memorise
12:16:44 <Vorpal> ais523, maybe you are just more used to haskell?
12:17:08 <Vorpal> iirc ocaml has a very good compiler btw
12:17:08 <ais523> Vorpal: it's more that I had to write lambdas a lot more in OCaml
12:17:23 <ais523> whereas in Haskell, normally there was a handy combinator I could just use
12:27:50 <Vorpal> ais523, this is utterly useless: http://esolangs.org/wiki/Golang
12:27:55 <Vorpal> too little information about it
12:28:14 <ais523> Vorpal: see the talkpage
12:28:25 <Vorpal> hm okay now that made me more confused
12:29:41 <Vorpal> doesn't it has finite memory
12:29:49 <Vorpal> (since the wires can't grow)
12:31:16 <ais523> it is if you can have an infinite (and repeating) program
12:31:37 <ais523> probably most easily by making a Minsky machine
12:34:05 <fizzie> Speaking of which, at least my Google search puts the Esolang wiki "Minsky machine" article above the two Wikipedia results (titled "Register machine" and "Counter machine").
12:35:20 -!- MigoMipo has joined.
12:42:49 <Lymia> If you override __builtin__.str on eval.appspot.com, you override it's front page.
12:43:41 <ais523> Lymia: presumably they didn't think that someone would do that
12:44:13 <Lymia> ais523, the front page was nyancat for a hile.
12:49:04 <Vorpal> Lymia, that is an empty page currently
12:49:32 <Lymia> Vorpal, somebody broke shell.appspot.com which it redirects to.
13:12:46 -!- cheater666 has quit (Ping timeout: 240 seconds).
13:24:59 <cheater_> jesus why are macintoshes so annoyingly slow and inefficient
13:26:54 <oklofok> well no offense but have you considered that you might just be really quick and efficient yourself?
13:27:37 <oklofok> Vorpal: birds are really cute when scavenging for food
13:27:48 -!- azaq23 has joined.
13:27:49 <oklofok> lifting stuff up with their little beakies
13:27:57 <Vorpal> oklofok, what kind of birds
13:28:12 <Vorpal> oklofok, even large birds?
13:28:26 <Vorpal> those don't have small beaks after all
13:28:38 <oklofok> well i suppose just relatively small ones
13:28:53 <Vorpal> oklofok, do you consider something like a crow to be relatively small?
13:30:25 <Vorpal> they are smaller than swans certainly
13:30:38 <oklofok> maybe ducks are relatively small too
13:33:54 <oklofok> i just got the results from my last exam ever
13:34:21 <Vorpal> oklofok, so you are done at university after this?
13:34:28 <Vorpal> oklofok, what are you going to do then?
13:34:42 <oklofok> everything else i finished months and months ago
13:34:49 <Vorpal> oklofok, so why this exam?
13:35:03 <Vorpal> oklofok, what is your PHd about?
13:35:13 <Vorpal> err that was weird caps
13:36:23 <oklofok> there's a few fun open problems in cellular automata and finite state automata that would be fun to solve but they might not actually be very feasible
13:37:50 <oklofok> cerny's conjecture, if there's a synchronizing word for a DFA, then there's one of length O(n^2)
13:38:12 <oklofok> synchronizing word = from any state, you go to one particular state, when reading that word
13:38:13 <Vorpal> oklofok, I see, what is a synchronizing word in this context?
13:38:42 <Vorpal> oklofok, what is n in there?
13:38:49 <oklofok> it's relatively easy to show O(n^3), but that's all that's known
13:39:43 <oklofok> it's okay, i haven't gotten a fix of mathoin for about a month now so if i don't get results soon i'll probably get depressed and die
13:39:50 <Vorpal> oklofok, so that word has to be the same for any given state you are in hm
13:39:54 -!- azaq23 has quit (Ping timeout: 264 seconds).
13:40:09 <oklofok> you synchronize every state to one
13:40:23 <Vorpal> oklofok, well you could do one that would go to a known state and then to the state you want, I guess that one would be O(n^3) though?
13:40:59 <Vorpal> oklofok, interesting problem. How do you show the O(n^3) case?
13:41:20 <oklofok> then there's the conjecture about periodic points in surjective CA, namely that they are "dense", that is, let G be a surjective CA, and let w be any word, then the conjecture says there's some (one-dimensional infinite) configuration x that contains w and is periodic in the sense that G^n(x) = x for some n > 0
13:41:42 <oklofok> augur: i wasn't sure fix was unambiguous enough so i had to do something like that
13:42:12 <augur> no that just made it worse XD
13:42:44 <oklofok> Vorpal: erm let me think i haven't slept at all
13:43:14 <ais523> oklofok: I can prove O(2^n) quite easily
13:43:27 <ais523> and that's less than O(n^3) for small enough n
13:43:42 <oklofok> ais523: you can do O(n^3) the same way, but you have to use a different modified graph
13:43:53 <ais523> oklofok: yes, I was thinking along those lines
13:43:59 <ais523> as you don't need all sets, just prime subsets
13:44:11 <oklofok> yeah, and in fact you don't need subsets
13:44:35 <oklofok> do you want to try and extrapolate from "pair graph"?
13:44:48 <ais523> I'm happy as I am, I think
13:44:59 <oklofok> since if you understand the powerset construction, then that's kinda obvious too
13:45:00 <ais523> if I think about the problem seriously I'll hit the n^3 proof quite easily, I imagine
13:46:09 <oklofok> so the pair graph H constructed from G is, we have pairs of states as the new states, and (x, y) -> (z, w) in H with label a if x -> z and y -> w both with label a in G
13:46:28 <ais523> that sounds like a concept stolen from category theory
13:46:40 <oklofok> H is partitioned into the diagonal and... well, the rest
13:46:50 <oklofok> the diagonal is the vertices of the form (x, x)
13:47:04 <oklofok> now, synchronizing two states means finding a path from outside the diagonal to the diagonal
13:48:15 <ais523> hmm, I think wlog we can assume the transition graph is strongly connected
13:48:30 <ais523> as if it isn't, you can work on each half of the problem separately
13:48:33 <ais523> without loss of generality
13:48:50 <ais523> it means that the result if you assume something also applies to the situation where you don't, just with terms reversed or something like that
13:48:55 <oklofok> if the graph is strongly connected, the result is obviously untrue
13:49:02 <oklofok> so that was implicitly assumed
13:49:16 <oklofok> if you think it isn't, you misunderstood the problem
13:49:27 <ais523> say each state transitions to each other state, with a label depending on what it aims to
13:49:40 <ais523> what did you think I'd said?
13:49:54 <ais523> that would make quite a difference
13:49:59 <Vorpal> oklofok, yet you typed it?
13:50:05 <oklofok> that's not needed in the proof anyway
13:50:19 <oklofok> Vorpal: well i didn't miss the actual word
13:50:20 <ais523> I know it isn't, just thought that it might be interesting aiming for a different sort of proof
13:50:32 <oklofok> ais523: oh you got the proof already?
13:50:42 <ais523> no, I'm just brainstorming
13:51:08 <ais523> when aiming for a proof, I aim to come up with relevant-looking lemmas and conjectures first
13:51:09 <oklofok> basically you just note that n^2 steps is enough to unify *some* two vertices in case there exists a synchronizing word
13:51:13 <ais523> even if I can't see why they'd matter
13:51:23 <ais523> oklofok: oh, for the n^3, that's easy enough to work out
13:51:37 <oklofok> because if there's a synchronizing word, there will have to be a path from outside the diagonal to the diagonal in H, so there must be one of length at most n^2
13:51:55 <ais523> well, n(n-1), but that's the same thing because we're messing with big-O notation
13:51:56 <Vorpal> oklofok, can there exist a synchronizing word for one target state but not for another in a graph?
13:52:15 <ais523> imagine a state machine with two states, and one letter in the input alphabet
13:52:26 <oklofok> Vorpal: not in a strongly connected graph, otherwise sure
13:52:26 <ais523> there are only four such machines, two of them have that property
13:52:28 <Vorpal> yeah I see A->B but no other one
13:52:41 <Vorpal> (no other connection that is)
13:52:45 <ais523> anyway, I should have eaten lunch hours ago
13:52:53 -!- ais523 has quit (Remote host closed the connection).
13:53:26 <oklofok> anyhow so as i said, n^3 is sort of trivial, but it seems clear that n^2 is actually enough
13:53:42 <Vorpal> oklofok, but you don't have a proof for it?
13:54:03 <Vorpal> if you do, write your phd on that :P
13:54:04 <oklofok> yeah i think i scribbled that in my solution to the riemann hypothesis notes
13:54:26 <Vorpal> oklofok, ah, like in the margin saying the margin was too small to contain that proof as well? ;P
13:55:06 <oklofok> no i managed to fit the whole proof, there was just enough space between my one-liner solution to the 4-color conjecture and my proof of god
13:55:57 <Vorpal> oklofok, did you have a go at the Church–Turing thesis too?
13:56:10 <oklofok> i considered it obvious enough, like the rest of the world
13:56:26 <Vorpal> oklofok, it isn't actually proven though
13:57:47 <oklofok> WELL CAN ANYTHING REALLY EVERY BE PROVEN?
13:58:01 <Vorpal> oklofok, that is philosophy I think, not math
13:59:15 <oklofok> i have this thesis that topological limits are the true definition of approaching
13:59:51 <oklofok> let me demonstrate: if i have a point that goes towards another point, then we can put some open sets around one of them and, well, the rest is history
14:00:11 <Vorpal> I know next to nothing about topology
14:00:27 <oklofok> oh well it was a stupid joke anyway
14:00:44 <Vorpal> except that topologists likes to drink coffee from doughnuts ;P
14:25:25 <tswett> 4b2o$2o2bobo$o5bo$b5o$3bo!
14:25:29 <tswett> Just in case anyone was wondering.
14:32:08 -!- azaq23 has joined.
14:42:27 <tswett> I've never seen it before and it doesn't seem to have a LifeWiki article, probably because it's not notable.
14:43:01 <tswett> I guess Mark Niemiec discovered it, if nobody else did before him..
14:49:57 <Vorpal> tswett, oh it is a GOL thingy
14:50:01 <Vorpal> tswett, how does one read it
14:51:38 <tswett> First line: four dead, two live. Next line: two live, two dead, live, dead, live. Next line: live, five dead, live. Next line: dead, five ilve. Next line: five dead, live. End.
15:07:08 -!- cpressey has joined.
15:11:49 <cpressey> What's the appeal of ooc? It mystifies me that BitBucket includes it in its dropdown to select "what language is this project written in". While there is no mention of, say, Pure or Felix.
15:15:35 <cpressey> Of course BitBucket's search sucks so badly that I have no real idea how many projects there *are* written in ooc... I only see one that mentions ooc in its description, and it's one of those "learn you this language" tutorials.
15:15:40 -!- oerjan has joined.
15:15:57 <cpressey> Oh, and it's not even ooc :/ It's a tutorial on "Object-Oriented C"
15:24:11 -!- ais523 has joined.
15:25:28 * oerjan mind boggles at ais523 managing to get the Unparseable spec to approach self-consistency
15:25:51 <oerjan> i wasn't even assuming it was a design goal at this point
15:26:56 <ais523> oerjan: I'm still not convinced it's anywhere near self-consistent
15:27:06 <ais523> but atm, I'm beginning to think of it as a constraint solving puzzle
15:27:19 <ais523> find at least one execution path that doesn't break any of the rules
15:28:14 <ais523> I'm not yet sure if there's a program with multiple consistent interpretations
15:28:21 <oerjan> well if the inventor of Feather cannot make it, no one can
15:28:54 <ais523> hey, I haven't invented Feather yet
15:29:13 <ais523> (note: I may need access to clog's hard-drive so I can retroactively change the previous line if necessary)
15:31:29 <fizzie> Today's reminder of how I'm pretty low on the pecking order of the world: "I am contacting you regarding your reservation in our hotel, we have a problem with your reservation. This problem ocured because of unexpected increasing of rooms in one group we are accommodating in the period of your reservation and we are not able to break this group. Therefore we have to move your reservation to another hotel in Prague, --"
15:32:14 <fizzie> I think the logic here goes "big group == large amount of money for the hotel == more important".
15:34:25 <ais523> hmm, /me acts on advice honed over years on the Internet: if you're going to reply to someone you agree with, tell them you do, or they're going to assume you're arguing with them
15:36:29 -!- Sgeo has quit (Read error: Connection reset by peer).
15:37:35 <cpressey> ais523, on the network, it's a good idea to be strict in what you provide
15:38:01 <ais523> cpressey: heh, are you trying to make this into something that's amusing just because it's said so often?
15:38:34 <cpressey> well, I was riffing on what I told you yesterday, re your spambot
15:39:16 <ais523> being strictish in what you accept is a good way to keep out spambots, actually
15:39:19 -!- jix has joined.
15:53:33 <lambdabot> Not in scope: data constructor `Tree'
15:54:07 <oerjan> > let n = Tree [n,n] in n
15:54:07 <lambdabot> Not in scope: data constructor `Tree'
15:54:14 <oerjan> > let n = Node [n,n] in n
15:54:14 <lambdabot> Occurs check: cannot construct the infinite type:
15:55:00 <fizzie> It seems to me the bot can't see the Forest for the Trees.
15:55:02 <oerjan> > let n = Node () [n,n] in n
15:55:03 <lambdabot> Node {rootLabel = (), subForest = [Node {rootLabel = (), subForest = [Node ...
15:55:51 <lambdabot> Occurs check: cannot construct the infinite type: t = [t]
15:57:04 <ais523> fizzie: well, if the trees are dense enough, you can't see if they're an isolated thicket, or if there's an entire forest behind them
15:58:22 <cpressey> > let mzgbd = [mzgbd] in mzgbd
15:58:23 <lambdabot> Occurs check: cannot construct the infinite type: t = [t]
15:58:36 <cpressey> but at least it's not shadowing anything, am i right?
15:59:09 <oerjan> lists cannot recurse into their heads, only their tails
15:59:20 <cpressey> yeah, i was working on that angle
16:00:14 <cpressey> > let mzgbd = (():mzgbd) in mzgbd
16:00:14 <lambdabot> [(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()...
16:00:38 <ais523> # Compiler.find_connected_components_from_edge_inner ;;
16:00:40 <ais523> - : 'a -> ('a * 'a) list -> int -> 'a list -> 'a list -> ('a * int) list -> 'a list list -> 'a list -> ('a * 'a list) list -> 'a list list = <fun>
16:01:01 <ais523> for some reason, I seem to do stateful algorithms by passing all the components around by hand, rather than using monads or variables
16:01:31 <cpressey> habit from when I learned Erlang, in my case
16:02:27 <ais523> *Main> :t findConnectedComponents''
16:02:28 <cpressey> eventually I get like "all these arguments are being passed everywhere and they always appear together -- let's make this a record"
16:02:29 <ais523> findConnectedComponents'' :: (Eq a, Ord b, Num b) => a -> [(a, a)] -> b -> [a] -> [a] -> [(a, b)] -> [[a]] -> [a] -> (b, [a], [a], [(a, b)], [[a]])
16:02:50 <ais523> the OCaml version was written more recently, though, and I rewrote it in CPS, which made it quite a bit simpler
16:02:57 <cpressey> I don't think I've every written something with *that* type
16:03:24 <ais523> (the ('a * 'a list) list-typed argument in the OCaml version is actually a manually maintained call stack)
16:03:43 <ais523> well, the "all these arguments are being passed everywhere" thing didn't really come up, as it was just one thicket of functions
16:04:25 <ais523> (well, a manually maintained continuation stack, but I made "continuations-by-reference" by hand, because it was less insane than trying to do it automatically)
16:06:16 <ais523> the major advantage of Haskell over OCaml is its standard library, IMO
16:06:27 <ais523> it's much more relevant than the whole laziness and purity arguments
16:06:44 <ais523> perhaps that isn't in the library after all?
16:06:46 <cpressey> I... don't know if I agree with that
16:07:00 <cpressey> But my use case for Haskell is probably not typical
16:07:00 <ais523> ah indeed, I wrote it by hand
16:07:12 <lambdabot> Data.Unique hashUnique :: Unique -> Int
16:07:22 <ais523> in fact, I even wrote member by hand, but I think mostly because I didn't know what it was called
16:07:31 <lambdabot> forall a. (Eq a) => a -> [a] -> Bool
16:07:54 <ais523> oerjan: I wanted something that deleted all items from a list that were the same as items that had occured previously in the list
16:08:10 <ais523> Deewiant: ah, is that what it's called?
16:08:14 <cpressey> I typically write my own map functions in Haskell
16:08:30 <ais523> > nub [1,2,1,4,3,1,5,2,4,3,1,2,5,4,3]
16:08:42 <ais523> other thing that catches me out a lot is that OCaml uses ; not , as a list separator
16:08:54 <ais523> and that [1,2] is perfectly legal, and means [(1,2)]
16:09:04 <ais523> i.e. a one-element list of tuples
16:09:21 <oerjan> cpressey: you should be aware that many of haskell's list functions have optimization rules
16:09:27 <cpressey> ML's syntax does not appeal to me
16:09:47 <cpressey> oerjan: er - I misspoke previously
16:09:55 <ais523> the other thing I find myself doing a lot is having computations which are clearly monad-based, but as I'm in OCaml, doing it by hand using the definitions from the List monad
16:10:11 <cpressey> I typically define my own mapping data structures in Haskell
16:10:36 <ais523> I know I tend to define fmap for my own structures if it fits
16:10:41 <cpressey> because "Cafeteria See Your Food"
16:11:01 <oerjan> <ais523> in fact, I even wrote member by hand, but I think mostly because I didn't know what it was called <-- sounds like you really need to learn to use hoogle :D
16:11:10 <ais523> oerjan: that only works when online
16:11:13 <ais523> I typically don't program when online
16:11:37 <lambdabot> Data.IntMap member :: Key -> IntMap a -> Bool
16:11:37 <lambdabot> Data.IntSet member :: Int -> IntSet -> Bool
16:11:37 <lambdabot> Data.Map member :: Ord k => k -> Map k a -> Bool
16:11:43 <ais523> in fact, all this work on compilers I've been doing recently (that's where the scary type signature from above comes from) has lead to an esolang idea
16:12:25 <ais523> which is basically taking dependent typing to the extreme, and hoping the resulting language is TC adding nothing extra but a combined lambda/switch statement
16:12:38 <ais523> I fear it may even end up computable
16:13:05 <ais523> or, more likely, the language itself TC, but the type system uncomputable
16:13:07 <ais523> which would just be bizarre
16:14:12 <cpressey> the kind of all dependent types which are provably finite
16:14:23 <ais523> class Functor t => FunctorM t where
16:14:24 <ais523> fmapM :: Monad m => (a -> m b) -> (t a) -> m (t b)
16:14:29 <ais523> now I'm trying to figure out why I wrote that
16:14:35 <ais523> I think I needed to cross fmap and mapM
16:14:38 <ais523> and the library didn't obviously have it
16:14:41 <cpressey> it seems most of the research in type systems is to find type systems which are *decidable*, so finding ones that are undecidable probably is not difficult
16:14:48 <ais523> @hoogle Monad m => (a -> m b) -> (t a) -> m (t b)
16:14:48 <lambdabot> Data.Traversable mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)
16:14:49 <lambdabot> Data.Traversable forM :: (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b)
16:14:49 <lambdabot> Prelude mapM :: Monad m => (a -> m b) -> [a] -> m [b]
16:15:17 <ais523> looks like I was reinventing Data.Traversable
16:15:40 <ais523> oh, on the obvious basis that functors don't have to have a natural order
16:16:05 <cpressey> always repeat yourself always repeat yourself
16:16:17 <ais523> so it can't be added to Functor generally, even though it would be useful
16:16:29 <ais523> meanwhile, I read an actual paper about monads in the mathematical sense
16:16:33 <ais523> and it was surprisingly like Haskell
16:18:06 <cpressey> purity is useful if you want your program to be math
16:19:40 <ais523> well, not always, some mathematical algorithms are described in terms of inherently imperative ideas
16:19:47 <ais523> like the one above, which uses two stacks
16:19:52 <oerjan> <ais523> I think INTERCAL is the only program which has scopes that work like that, and it doesn't use indentation for scoping
16:20:07 <oerjan> i think SML has that local ... in ... thing which might fit
16:20:23 <ais523> (it's a bit ridiculous that I even need an algorithm to find strongly connected components in a directed graph in a compiler...)
16:20:33 <ais523> oerjan: actually, INTERCAL's scoping rules are different
16:20:35 <oerjan> or wait is that backwards
16:21:01 <ais523> the rule with INTERCAL, is that the scopes of different variables don't have to nest well, or indeed have any relation to each other
16:21:48 <oerjan> oh you mean with STASH etc.?
16:22:11 <oerjan> although that's not lexical
16:23:01 <cpressey> "inherently imperative"? I dunno about that concept...
16:23:10 <ais523> nope, it's technically a form of dynamic scoping
16:24:07 <oerjan> and barely that, since you don't have to leave the scope in a consistent place even for a single variable iirc
16:24:33 <oerjan> but it can be used that way
16:26:37 <ais523> well, it doesn't enforce well-nesting
16:26:46 <ais523> but I don't see why that's intrinsically necessary for dynamic scoping
16:29:28 <cpressey> I'd like to see a filesystem where entire subtrees could be made read-only atomically
16:29:45 <cpressey> It would help me feel better about "sudo make install"
16:30:46 <cpressey> Eh, even then, there's usually a collection of files spread out across the system, like the binary in bin, and conf files in etc
16:30:55 -!- monqy has joined.
16:31:01 <ais523> you could use fakeroot or something
16:31:38 <oerjan> cpressey: hm downright might be a good language for your java suite
16:32:05 <cpressey> I usually install stuff into my home dir, but there's always these silly projects that expect their dependencies in a 'systemwide' place
16:32:43 <ais523> I normally install stuff in a dir parallel to the build
16:32:44 <cpressey> oerjan: link? also, it's too late: it's already in java :)
16:33:04 <cpressey> well, the next step is to release the source
16:33:11 <cpressey> let people tear it apart cruelly
16:33:20 <oerjan> cpressey: um downright is ais523's latest 2d-and-some esolang
16:33:24 <ais523> cpressey: http://esolangs.org/wiki/DownRight
16:33:33 <ais523> I think oerjan was suggesting implementing DownRight in the suite, not the suite in DownRight
16:33:48 <cpressey> i thought this was some new "JVM language" that yoob could be reimplemented in. gotcha
16:34:07 <ais523> I've never written a JVM-based language
16:37:48 <cpressey> yeah, "matrix of strings" is a little bit of a stretch for yoob's UI, but since they don't change, that makes it easier
16:42:45 <oerjan> <Vorpal> oklofok, even large birds?
16:43:06 <oerjan> your discussion has a disturbing lack of vultures
16:47:26 <Vorpal> oerjan, but they are cute!
16:53:23 <cpressey> epsoderrick puggammin laggages
16:54:50 <cpressey> on the other hand sometimes Data.Map is just what I need because I am teh lazy
16:55:05 <oerjan> but Data.Map is not lazy!
16:55:09 <oerjan> it's strict in the spine
16:55:57 <cpressey> *because I am teh GOLDBRICKERS
17:00:54 <cpressey> "Haskell, a malingering functional language"
17:02:47 <cpressey> (re maps: although, I do tend to write recursive functions which consume a list, over using folds, too.)
17:03:16 -!- Gregor has set topic: Conquest, War, Famine, Death and Herring Pasta | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
17:03:29 <cpressey> it's... i don't care about efficiency. i care about a certain kind of readabilty.
17:03:34 <oerjan> that's a very disturbing pasta
17:03:51 <Gregor> Well, it is a sign of the apocalypse.
17:03:52 <cpressey> using map, foldlrlr and such detract from the readability, because you have to know what all those li'l bastards do
17:05:10 <fizzie> Which is ironistical, since they're supposed to in fact add to the readability, precisely because you then immediately know what they actually do.
17:06:30 <oerjan> cpressey: what do you want?
17:06:47 <oerjan> we already established there is no function by that name
17:07:29 <oerjan> and that nub was what was originally intended by it
17:07:57 <cpressey> i... do I really have to explain my choreography?
17:37:53 <cpressey> War, Famine, Pasta-lence and Death
18:16:11 -!- wareya_ has joined.
18:17:42 -!- wareya has quit (Read error: Operation timed out).
18:46:47 <elliott> <oerjan> <ais523> in fact, I even wrote member by hand, but I think mostly because I didn't know what it was called <-- sounds like you really need to learn to use hoogle :D
18:46:47 <elliott> <ais523> oerjan: that only works when online
18:46:48 <elliott> <ais523> I typically don't program when online
18:49:11 <elliott> <cpressey> using map, foldlrlr and such detract from the readability, because you have to know what all those li'l bastards do
18:49:14 <elliott> more readable than recursion.
18:50:24 <cpressey> recursion versus vocabulary, i guess
18:52:13 <elliott> cpressey: recursion is low-level, like goto :)
18:52:22 <oerjan> but to understand vocabulary you just have to understand vocabulary, while to understand recursion you first have to understand recursion
18:53:59 <ais523> atm, I typically work out which of foldl and foldr I need by experiment
18:54:37 <cpressey> "Type system: The type system is formally an enhanced version of the typed lambda calculus plus pattern matching."
18:55:42 <elliott> ais523: if the operation is associative, then you just use foldr if you need to handle infinite lists :P
18:55:58 <elliott> although i guess ocaml forbids you from having those ;D
18:56:01 <ais523> elliott: this is in OCaml
18:58:31 <cpressey> you know, I don't know, because there is no such thing as "*the* typed lambda calculus" from what I see
18:59:06 <cpressey> but I meant "why pretend your type system is anything except another programming language"
19:00:24 <oerjan> there is "the simply typed lambda calculus"
19:00:49 <Gregor> There should be a typed lambda calculus for any adjective.
19:00:57 <elliott> however, the regular lambda calculus is a bad language for a type system
19:01:00 <oerjan> and then a heap of extensions
19:01:31 -!- Sgeo has joined.
19:01:33 <cpressey> oerjan: they probably meant "simply" but left it out
19:01:52 <cpressey> but who knows. i can't clone their git repo off github using their instructions.
19:02:15 <oerjan> they could also mean hindley/damas-milner
19:02:56 <cpressey> no, their instructions are wack
19:04:04 <cpressey> they make you run git submodule commands in order to build it!
19:06:06 <Sgeo> " Also, its not that the execution is meaningful up to the point where undefined behavior happens: the bad effects can actually precede the undefined operation."
19:06:54 <oerjan> if you use undefined behavior, the program may prevent the big bang from happening!
19:07:15 <Gregor> Daaaaaaaaaaaaaaaaaaaaaaaamn
19:07:29 <oerjan> obviously Gregor doesn't like that
19:07:39 <elliott> Sgeo: why is that quote surprising
19:08:33 <Sgeo> How do bad effects precede the undefined operation? Is that just a theoretical idea, or can it actually happen in real implementations?
19:08:45 <elliott> Sgeo: Consider optimisations.
19:09:44 <oerjan> it's a miracle that the universe has survived the invention of C, really
19:16:27 <cpressey> So, I should probably implement an esolang in such a way that it requires both Pure and Felix to be installed, in order to build.
19:17:01 <elliott> build system in felix, testing system in pure
19:17:15 <elliott> make the tests mandatory somehow
19:20:29 <cpressey> so many pathological perversions, so little time.
19:20:32 <elliott> [[For example a C implementation has undefined behavior when:
19:20:32 <elliott> An unmatched ‘ or ” character is encountered on a logical source line during tokenization.]]
19:20:41 <elliott> gotta make that into a feature somehow
19:21:03 <elliott> "you can use ' in names, but only if you don't use character constants on the same line, and as long as you have an odd number of 's"
19:21:17 <cpressey> a C compiler that starts interpreting the file as iag source after that point
19:25:38 <Sgeo> "Use of an uninitialized variable: This is commonly known as source of problems in C programs and there are many tools to catch these: from compiler warnings to static and dynamic analyzers. This improves performance by not requiring that all variables be zero initialized when they come into scope (as Java does). For most scalar variables, this would cause little overhead, but stack arrays and malloc'd memory would incur a memset of the stora
19:25:38 <Sgeo> ge, which could be quite costly, particularly since the storage is usually completely overwritten."
19:26:15 <Sgeo> Another solution: Make the language simply fail to compile if there's an unini... well, C can't be modified that way that easily, I guess
19:26:32 <Sgeo> s/language/file/
19:26:37 <cpressey> -Werror -Wno-uninitialized-somethingth
19:27:26 <Sgeo> Oh. Well, that's a compile-time cost, not a runtime cost, so why not have the standard do that?
19:27:47 <cpressey> well, you can stil get around it
19:28:35 <cpressey> { int a; if (/* ...*/) { a = 0; } printf("%s", a); }
19:29:25 <cpressey> but oh, man, shaving off that instruction to zero out a when it wasn't really necessary
19:29:44 <cpressey> that one instruction TOOK TIME that you'll NEVER HAVE BACK
19:29:50 <elliott> cpressey: http://getsatisfaction.com/mojang/topics/minecraft_is_not_written_in_terse
19:30:34 <elliott> 10:04:10: <fizzie> Vorpal: Well, that was most of the story already, though I also did patch ircii to say "PING? PONG!" whenever the server pinged, so I could choose to do the disconnection immediately after a previous ping.
19:30:41 <elliott> fizzie: You could ping the server instead; that works at least on freenode.
19:31:11 <elliott> OK, so this was in the 90s but STILL.
19:32:01 <ais523> elliott: actually, sending anything at all works on Freenode
19:32:10 <ais523> but I'm not certain that other ircds work like that
19:34:35 -!- pingveno has quit (Ping timeout: 248 seconds).
19:35:51 <ais523> hmm, I was reading this article about undefined behaviour again (it's old, and may have been mentioned here before: http://blog.regehr.org/archives/213)
19:35:58 <ais523> and then noticed the first post was by Michael Norrish
19:36:01 <ais523> that was a little surprising
19:36:34 -!- pingveno has joined.
19:38:16 * pikhq wonders if anyone understands the GCC build system
19:40:09 <pikhq> OH DEAR GOD KILL IT WITH FIRE
19:40:29 * Sgeo decides that pikhq is it...
19:40:39 <pikhq> No, GCC's build system.
19:41:12 * Sgeo wonders what asdf is like
19:41:37 <cpressey> "asdf" refers to something beyond slapping a keyboard in disgust?
19:42:04 <ais523> pikhq: I vaguely understand some of it
19:42:17 <pikhq> It definitely needs replaced.
19:42:20 <Sgeo> http://common-lisp.net/project/asdf/
19:42:23 <ais523> although my only method of tweaking it was to run it halfway through, then run a Perl script over some generated files, then complete it
19:42:38 <ais523> it also gave me a huge catalogue of things to avoid when writing C-INTERCAL's, which solves much the same problem a lot better
19:43:01 <pikhq> Glibc's is perhaps worse.
19:43:04 <cpressey> "It is roughly what Common Lisp hackers use to build software where C hackers would use say GNU Make. "
19:43:42 <pikhq> glibc uses hand-written recursive Make.
19:44:36 <Sgeo> cpressey, is that very quotable for you?
19:44:40 <cpressey> asdfasdfasdfasdfasdfasdfasdfasdf
19:44:42 <elliott> cpressey: that's a terrible analogy
19:44:47 <elliott> it's actually more like a package manager and module system combined
19:45:01 <cpressey> as long as its hackers using it
19:46:42 <Sgeo> I have to wonder about "another". Was there an earlier system in use before asdf took hold, or was there competition like OO systems for Scheme?
19:47:02 <pikhq> Remember: friends don't let friends recursive make.
19:47:24 <cpressey> i have a beautiful esolang here but it doesn't work because two-dimensional space doesn't have the properties i need or something
19:48:13 <cpressey> just need to twist my head more
19:48:47 <oerjan> cpressey's head exploding in 1, 2, ...
19:51:22 * oerjan reverses the clock battery
19:51:39 <oerjan> cpressey's head exploding in 3, 2, ...
19:52:35 <Sgeo> Chicken or Racket?
19:52:41 * Sgeo doesn't know how to decide
19:54:25 <ais523> Sgeo: are you trying to lay an egg or hit a tennis ball?
19:56:02 <oerjan> it's obviously one of his evil schemes
19:56:39 <cpressey> it'd be even eviller if it required both
19:59:22 <oerjan> the original badminton
19:59:55 <Sgeo> It is surprisingly difficult to find an up-to-date comparison of various Schemes
20:00:25 <coppro> Sgeo: gatherer.wizards.com
20:00:43 <Sgeo> (I did see one table, but considering that it had TCO as a column, I can only assume it's older than dirt)
20:01:17 <Sgeo> coppro, took me a minute to remember that Scheme is ... something to do wiith MtG
20:01:31 <Sgeo> Apparently, it's a special card type? For use in certain formats, or what?
20:02:09 <coppro> for use in an official multiplayer variant
20:03:03 <Sgeo> I hope I'm right in assuming I had no school today
20:03:33 <cpressey> I want a new Scheme / One that won't make me sick / One that won't make me crash my cdr / Or make me feel three feet thick
20:04:36 <Sgeo> Where oes the name rplacd come from, anyway?
20:04:48 <Sgeo> At any rate, I think CLers these days just use setf instead
20:05:29 <cpressey> Sgeo: what are you looking for in a Scheme?
20:05:51 <cpressey> I tend to look for one that runs Scheme programs, in which case, just about any of them work
20:06:26 <Sgeo> Can be used to compile, or for long-running programs that can be modified while they're running. Nice FFI
20:06:43 <Sgeo> ajf is not an ffi.
20:07:23 <ajf> or a qwertyuiop
20:08:48 <oerjan> but poiuy_qwert might be, if he were here
20:09:31 <ajf> I want to make a new esoteric language
20:09:48 <ajf> Any ideas from the ideas list that appeal to any of you particularly?
20:09:58 -!- oerjan has quit (Quit: Good night).
20:10:21 <ais523> !c float a=0.0f; printf("%2x%2x%2x%2x", ((char*)a)[0], ((char*)a)[1], ((char*)a)[2], ((char*)a)[3]);
20:10:32 <ais523> !c int main(void) {float a=0.0f; printf("%2x%2x%2x%2x", ((char*)a)[0], ((char*)a)[1], ((char*)a)[2], ((char*)a)[3]);}
20:10:41 <ais523> what have I done wrong there?
20:10:55 <ais523> !c int main(void) {float a=0.0f; printf("%2x%2x%2x%2x", ((char*)&a)[0], ((char*)&a)[1], ((char*)&a)[2], ((char*)&a)[3]);}
20:11:07 <Sgeo> !c int main(void) { printf("Hello world!"); return 0; }
20:11:48 <ajf> we have a C bot here?
20:12:00 <ajf> ooh I should make a devperc bot
20:12:02 <Sgeo> Well, this is distressing
20:12:29 <ais523> I think it just checks if C compiles or not
20:12:38 <ais523> !c int main(void) {float a=0.0f; printf("%2x%2x%2x%2x\n", ((char*)&a)[0], ((char*)&a)[1], ((char*)&a)[2], ((char*)&a)[3]);}
20:12:44 <ais523> nah, I was just describing its apparent behaviour
20:12:48 <ais523> I'm adding a \n because stdio caching
20:13:09 <ais523> but that doesn't seem to help either
20:13:13 <Sgeo> !c int main(void) { printf("Is it legal to leave off the return like that?\n"); return 0; }
20:13:20 <ajf> !c printf("EGOBOT IS A FATTY FATTY FAT FAT");
20:13:22 <EgoBot> EGOBOT IS A FATTY FATTY FAT FAT
20:13:27 <ais523> ah, no int main() stuff?
20:13:28 <cpressey> Sgeo: you have rather uncompromising requirements. I don't know if you'll find a Scheme with all three of those.
20:13:34 <ais523> !c float a=0.0f; printf("%2x%2x%2x%2x\n", ((char*)&a)[0], ((char*)&a)[1], ((char*)&a)[2], ((char*)&a)[3]);
20:13:43 <ais523> ah, so 0.0f /is/ all-bits-zero?
20:13:45 <Sgeo> cpressey, I think both Chicken and Racket fit.
20:13:54 <ajf> !c parse_brainfuck("?");
20:14:09 <ajf> fuck you EgoBot y u no support brainfuck
20:14:18 <ajf> needs more brainfuck
20:14:22 <cpressey> Racket (/MzScheme) apparently has OK FFI, but I didn't know it even had a compiler
20:14:46 <cpressey> Chicken is reputedly a fine compiler, but I don't know anything about its FFI
20:14:49 <Sgeo> cpressey, um, well, at least there's a "Make Executable" option in DrRacket
20:15:20 <cpressey> "Make Executable" doesn't necessarily compile any code -- it can just link an interpreter together with the source
20:15:41 <cpressey> Don't know if that's what Racket does, but for other languages, that's the case
20:16:01 <elliott> <ais523> I think it just checks if C compiles or not
20:16:15 <ajf> !bf >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]
20:16:16 <ais523> elliott: I was remarking on the fact that nobody had got anything to happen but compile errors
20:16:19 <ajf> <.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.
20:16:31 <elliott> <ais523> ah, no int main() stuff?
20:16:34 <elliott> dunno why it isn't working
20:16:50 <ais523> perhaps it's checking for "int main()" literally, and I put (void) in the parens out of correctnes
20:17:13 <Sgeo> !c int main() { printf("Checking ais523's hypothesis\n"); return 0; }
20:17:15 <EgoBot> Checking ais523's hypothesis
20:17:30 <elliott> they are identical in a definition
20:17:37 <elliott> it's in ANSI C /declarations/ that they differ
20:17:41 <Sgeo> !c int main(void) { printf("Checking ais523's hypothesis\n"); return 0; }
20:17:43 <elliott> and () is still perfectly valid, it just means something subtly different
20:17:44 <Sgeo> ^^just in case
20:17:49 <elliott> and can change the calling convention
20:18:28 <Sgeo> !c void main() { printf("Wouldn't it be funny if it allowed this?\n"); }
20:18:47 <ajf> !c printf("\134ACTION hates all of you");
20:18:49 <EgoBot> \ACTION hates all of you
20:19:25 <Sgeo> !c printf("%d", sizeof(void*));
20:19:41 <ais523> cpressey: you need parens around the name of a type
20:19:43 <Sgeo> !c printf("%d", sizeof(int));
20:19:45 <ajf> !c printf("\001ACTION hates all of you");
20:19:47 <EgoBot> .ACTION hates all of you
20:19:47 <elliott> <ais523> cpressey: you need parens around the name of a type
20:19:53 <ajf> !c printf("\1ACTION hates all of you");
20:19:54 <ais523> elliott: inside sizeof, at least
20:19:55 <EgoBot> .ACTION hates all of you
20:20:01 <elliott> oh, is it just "sizeof x" that's valid
20:20:05 <elliott> but it has to be "sizeof (int)"?
20:20:07 <ajf> !c printf("%cACTION hates all of you",1);
20:20:09 <EgoBot> .ACTION hates all of you
20:20:15 <elliott> !c printf("%d", sizeof 0);
20:20:16 <ais523> !c printf("\u0001ACTION hates all of you");
20:20:25 <cpressey> but there are a handful of things in C that are that stupid, so, ok
20:20:29 <ais523> hmm, I wonder what's wrong with my \u there?
20:20:37 <ajf> !c printf("\001ACTION hates all of you\001",1);
20:20:39 <EgoBot> .ACTION hates all of you.
20:20:39 <cpressey> !c int x; printf("%d", sizeof x);
20:20:50 <ajf> egobot y u no allow "\u0001"
20:21:04 <Sgeo> \001 shouldn't be turning into . unless EgoBot's deliberately filtering output, I think
20:21:05 <elliott> stop using that fucking meme
20:21:13 <elliott> it is deliberately filtering it
20:21:18 <elliott> FFS have you been asleep the past forever days
20:21:20 <ajf> !c putchar(1); printf("ACTION hates all of you"); putchar(1);
20:21:21 <EgoBot> .ACTION hates all of you.
20:21:26 <ajf> ffffffffffffffffffffffffffffffffff
20:21:31 <Sgeo> ajf, it won't work
20:21:59 <Sgeo> elliott, I'm not dense!
20:22:08 <ais523> !c int a\u2C22a = 4; printf("%d\n", a\u2C22a);
20:22:16 <ais523> EgoBot: do you not even support C94?
20:22:39 <ais523> (the \u stuff is the Unicode version of trigraphs, really)
20:22:52 <ais523> glagolitic capital letter spidery ha /is/ a letter, right? it even says so in its name
20:23:01 <ajf> !c #include <unistd.h> main() { while(1){ fork(); } }
20:23:40 <ajf> !c #include <unistd.h> main() { while(1){ fork(); printf("Forked!"); } }
20:23:41 <ais523> hmm, I get parse errors from both GCC and clang on the declaration
20:23:41 <cpressey> !c char s??(10??); printf("%s", s);
20:23:46 <ais523> is it only Java where you can do that?
20:23:56 <ajf> !c #include <unistd.h> while(1){ fork(); printf("Forked!"); }
20:24:07 <ajf> C uses 8-bit strings
20:24:23 <ajf> !c fork(); printf("Forked!");
20:24:30 <ais523> a quick Internet search implies it's legal in at least C++
20:24:35 <ajf> !c while(1) { fork(); printf("Forked!"); }
20:24:42 <ais523> but even g++ doesn't like it
20:25:10 <ajf> !c int i; for (i = 0; i < 25; ++i) { fork(); printf("Forked!"); }
20:25:12 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!
20:25:23 <ajf> !c int i; for (i = 0; i < 500; ++i) { fork(); printf("Forked!"); }
20:25:39 <ajf> EgoBot y u no fork
20:25:44 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:25:46 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:25:47 <ais523> test.c:1: error: stray ‘\’ in program
20:25:48 <ais523> test.c:1: error: expected initializer before ‘u2C22a’
20:25:51 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:25:52 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:25:52 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:25:52 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:25:53 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:25:53 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:25:55 <fizzie> ais523: It's in C99, at least; "Universal character names [of the \u hex-quad and \U hex-quad hex-quad variety] may be used in identifiers, character constants and string literals ..."
20:25:55 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:25:57 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:25:58 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:26:00 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:26:00 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:26:02 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:26:03 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:26:05 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:26:05 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:26:07 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:26:08 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:26:10 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:26:10 <ajf> !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); }
20:26:12 <fizzie> Could you please stop that?
20:26:12 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:26:14 <ais523> fizzie: yep, I just checked C++96
20:26:23 <ajf> HOW DO I STOP IT?!
20:26:30 <ais523> ajf: it's not really a forkbomb if you have to do it manually
20:26:31 <fizzie> You stop it by stopping saying it.
20:26:38 <ajf> ais523: true
20:26:43 <ais523> anyway, g++ is definitely misparsing that
20:26:58 <ais523> there's no way to parse it as \ followed by u2C22a
20:27:20 <ais523> and Clang is counting the \ as a separate token too
20:27:28 <ais523> do any compilers get that right?
20:28:02 <ajf> !c int i; for (i = 0; i < 100; ++i) { if (fork()==0){while(1){fork();}}else{printf("Forked!");}}
20:28:04 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:28:13 <ajf> awww yeaaah
20:28:46 <ajf> !c int i; for (i = 0; i < 100; ++i) { if (fork()==0){while(1){fork();}}else{printf("Forked!");}}
20:28:48 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:29:06 <ajf> Why hasn't it broke yet? :<
20:29:44 <ais523> even more bizarre: https://www.securecoding.cert.org/confluence/display/seccode/PRE30-C.+Do+not+create+a+universal+character+name+through+concatenation implies that \u0401 works on gcc, but I just tested it and it doesn't
20:29:51 <ais523> ajf: because the processes are getting killed
20:29:57 <ais523> by EgoBot's anti-stupidity sandbox
20:30:13 <cpressey> it detects stupidity and kills it
20:30:31 <Sgeo> Racket's format doesn't have ~{ and ~}?
20:30:40 <ajf> !c int i; for (i = 0; i < 100; ++i) { if (fork()==0){while(1){fork(); print("Don't worry I'm not stupid. Honest. Please :<");}}else{printf("Forked!");}}
20:30:51 <ajf> !c int i; for (i = 0; i < 100; ++i) { if (fork()==0){while(1){fork(); printf("Don't worry I'm not stupid. Honest. Please :<");}}else{printf("Forked!");}}
20:30:53 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:31:02 <ajf> ais523: muahahahaha
20:32:22 <elliott> <ais523> even more bizarre: https://www.securecoding.cert.org/confluence/display/seccode/PRE30-C.+Do+not+create+a+universal+character+name+through+concatenation implies that \u0401 works on gcc, but I just tested it and it doesn't
20:32:23 <ajf> I think I may break the sandbox
20:32:28 <elliott> maybe GNU C lacks it specifically for some reason
20:32:28 <ajf> If I can convince it
20:32:32 <elliott> no, that's weird, GNU C is just extensions
20:32:55 <ajf> !c int i; for (i = 0; i < 100; ++i) { if (fork()==0){while(1){fork(); printf("I AM NOT STUPID. REALLY. YOU CAN BELIEVE ME. I AM SANE. SEE!");}}else{printf("Forked!");}}
20:32:57 <EgoBot> Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo
20:33:19 <elliott> ajf: you're about the twentieth person to try and break the well-tested sandboxing system EgoBot uses
20:33:24 <ajf> !c int i; for (i = 0; i < 100; ++i) { printf("nya"); }
20:33:26 <EgoBot> nyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanya
20:33:51 <fizzie> Could you possibly do the noisy stuff in a privmsg?
20:34:08 <Deewiant> !c int i; for (i = 0; i < 10; ++i) { if (fork()==0){while(1){fork(); printf("---");}}else putchar('f');}
20:34:12 <ajf> !c int i; for (i = 0; i < 10; ++i) { printf("nya"); } printf("cat");
20:34:13 <fizzie> (A non-channel privmsg if you want to be pedantic about it.)
20:34:14 <EgoBot> nyanyanyanyanyanyanyanyanyanyacat
20:34:16 <Sgeo> I just tried to make an executable with Racket
20:34:19 <Sgeo> A very trivial thing
20:34:27 <Sgeo> And it's 4.5MB
20:34:38 <Sgeo> And it's only supposed to be able to run on my machine, so
20:35:05 <ajf> !c int i; for (i = 0; i < 10; ++i) { printf("nya"); } printf("ncat");
20:35:07 <EgoBot> nyanyanyanyanyanyanyanyanyanyancat
20:35:19 <Sgeo> http://pastie.org/1894499 this is 4.5MB
20:36:09 <cpressey> i would bet what you have there is a copy of the Racket interpretr with that code just kind of slapped in
20:36:18 <fizzie> ais523: "GCC currently only permits universal character names if -fextended-identifiers is used, because the implementation of universal character names in identifiers is experimental."
20:36:25 <cpressey> if that's good enough for what you want to do, though, go for it
20:36:32 <ajf> !c int i; printf("http://reddit.com/r/"); for (i = 0; i < 7; ++i) { printf("f"); } for (i = 0; i < 12; ++i) { printf("u"); } printf("/");
20:36:33 <EgoBot> http://reddit.com/r/fffffffuuuuuuuuuuuu/
20:36:45 <ais523> ajf: 7 then 12, is it?
20:36:52 <ais523> I know it's defined numbers, I just can never remember what they are
20:37:03 <ajf> ais523: f7u12
20:37:24 <ajf> I find that easy to remember
20:37:28 -!- FireFly has joined.
20:40:12 <Sgeo> And the version for distribution results in a .zip file, which contains a .exe and some .dlls
20:43:03 -!- TeruFSX has quit (Ping timeout: 240 seconds).
20:44:20 <ajf> !c char i; for (i = 0; i < 256; ++i) { putchar(i); }
20:44:48 <ajf> !c int i; for (i = 0; i < 256; ++i) { putchar(i); }
20:45:17 <ajf> !c int i; for (i = '\n'; i < 256; ++i) { putchar(i); }
20:45:25 <ajf> !c int i; for (i = 'A'; i < 256; ++i) { putchar(i); }
20:45:27 <EgoBot> ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
20:46:36 <ajf> !c int i; for (i = ' '; i < 256; ++i) { putchar(i); }
20:46:38 <EgoBot> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
20:47:05 <ajf> !c int i; for (i = ' '; i <= '~'; ++i) { putchar(i); }
20:47:07 <EgoBot> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
20:47:16 <ajf> yay full printable characters
20:47:42 <ajf> !c int i; for (i = ' '; i <= '~'; ++i) { putchar(i % 7); }
20:48:23 <ajf> !c int i; for (i = 0; i <= '~'-' '; ++i) { putchar(i % 7+' '); }
20:48:25 <EgoBot> !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#
20:49:56 <pikhq> ajf: Note: the above is undefined behavior, and the compiler would be entirely correct in killing you and all that you love.
20:50:23 <ajf> what's undefined about that?
20:50:50 <pikhq> Arithmetic on characters.
20:50:57 <ajf> I am aware
20:51:17 <ajf> but I don't care in the slightest
20:51:27 <ajf> !c int i; for (i = 0; i <= '~'-' '; ++i) { putchar(i % '\n'+' '); }
20:51:29 <EgoBot> !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$
20:51:50 <ajf> !c int i; for (i = 0; i <= '~'-' '; ++i) { putchar(i % 17+' '); }
20:51:52 <EgoBot> !"#$%&'()*+,-./0 !"#$%&'()*+,-./0 !"#$%&'()*+,-./0 !"#$%&'()*+,-./0 !"#$%&'()*+,-./0 !"#$%&'()
20:52:00 <elliott> I thought it just had unspecified results
20:52:08 <ajf> afaik, you are right
20:52:12 <pikhq> Oh, right, it's not actually UB.
20:52:13 <ajf> and digits are unspecified too
20:52:46 <ajf> luckily, IBM's horribe EBCDIC also has '0' to '9' contiguous
20:52:52 <ajf> but yes it is not portable code
20:53:03 <ajf> portable across machines, but not charsets
20:53:28 <pikhq> But who uses charsets without an ASCII subset these days, anyways?
20:53:41 <ajf> no sane person
20:53:45 <ajf> except IBM
20:53:49 <ajf> wait they aren't sane
20:53:53 <ajf> my statement holds true
20:54:21 <pikhq> Unless backwards compatibility is needed, they're using UTF-16.
20:54:27 <pikhq> Even on mainframes.
20:54:47 <ajf> UTF something
20:54:57 <ajf> may be 32 or 8 in some cases
20:55:18 <pikhq> And they never really use UTF-EBCDIC. Go figure.
20:55:27 <ajf> they use SHIFT-JIS
20:55:50 <pikhq> Shift-JIS is outmoded in Japan, anyways.
20:55:59 <ajf> still widely usd
20:56:14 <pikhq> *Not to mention* it was designed specifically to have an ASCII subset.
20:56:17 <ajf> Why? Han unification
20:56:26 <pikhq> (actually, a JIS X 0201 subset)
20:56:42 <pikhq> (which itself has an ASCII subset)
20:57:12 <pikhq> ajf: There are no current OSes that use Shift-JIS.
20:57:58 <ajf> Correct, but many web pages are encoded in it
20:58:09 <ajf> And legacy applications
20:58:12 <ajf> 日本はShiftJISをする
20:58:24 <pikhq> Which leaves it as a *legacy charset*.
20:58:36 <ajf> However some CHOOSE to use it.
20:58:42 <ajf> Han Unification
20:58:50 <pikhq> That's a piss-poor reason.
20:59:13 <cpressey> Felix... can't seem to... read from stdin.
20:59:51 <pikhq> Especially considering that Shift-JIS refers to a JIS encoding standard which defines its characters in terms of Unicode codepoints, meaning that Shift-JIS also has Han unification.
21:00:17 <cpressey> ok, NOW it can. what did i change?
21:00:56 <cpressey> if you never use the variable in which you stored the input, it gets OPTOMIZED AWAY
21:03:55 <pikhq> ajf: Oh, yeah, and there's the nice property that Shift-JIS is a motherfucking *terrible* character encoding.
21:04:38 <ajf> JIS defines its chars in terms of Unicode codepoints?
21:04:47 <ajf> Sound's like china's charset
21:04:48 <pikhq> It didn't originally, but it does now.
21:04:56 <ajf> Really just a Unicode transformation
21:05:06 <pikhq> The JIS charsets are *defined as* subsets of Unicode.
21:05:28 <ajf> I'd argue it works in reverse
21:05:39 <ajf> Unicode was based on other charsets
21:06:46 <pikhq> Defined such that converting into Unicode has an inverse, for any used charset.
21:07:09 <ajf> most of that inverse is "untranslatable" though
21:07:47 <pikhq> The idea is that if you convert a string into Unicode, you can then convert that exact string back *from* Unicode.
21:08:27 <pikhq> Obviously, converting arbitrary strings from Unicode and then back is not really feasible.
21:08:59 <pikhq> Unless you want Unicode to be a subset of ASCII, that is. :P
21:10:10 <ajf> Hmm, maybe I should make a version of whitespace that uses all unicode spacing chars
21:10:19 * pikhq continues to wonder why JIS X 0208 stuck ¥ in the space where \ usually goes
21:10:45 <elliott> so that windows users could enjoy really fun paths
21:11:16 <ajf> space restrictions I'd guess
21:11:21 <cpressey> ajf: such a language already exissts I believe
21:11:40 <cpressey> ajf: http://esolangs.org/wiki/Unispace
21:11:45 <pikhq> ajf: No, there's actually a lot of unusued space.
21:11:56 <pikhq> Well, "a lot" in the context of an 8 bit encoding.
21:12:11 <cpressey> ok, it's not exclusively unicode, it still has ascii space and newline in it
21:12:50 <ajf> not what I meant
21:12:59 <ajf> I meant utilize all spacing characters in unicode
21:13:03 <ajf> including the ascii ones
21:13:07 <ajf> that does what I want
21:15:56 <cpressey> Well, today I implemented Deadfish in Pure and Felix, and it made me want to do extremely nasty things to all programming language designers and maintainers the world over.
21:18:02 <elliott> C++ templates are the best language
21:18:14 <elliott> cpressey: What's wrong with Pure though?
21:18:17 <elliott> My experience with it was pleasant.
21:18:34 <elliott> That seems a little... redundant.
21:19:07 <elliott> Versus (printf ">>> ") that is.
21:19:11 <cpressey> Not as much as is wrong with Felix, that's for sure
21:19:18 <elliott> main a = (printf "%s " ">>>") $$ (main (fish (limit a) (gets)));
21:19:33 <elliott> main a = printf ">>> " $$ main (fish (limit a) gets)
21:19:40 <elliott> Oh, I'm just talking about readability
21:19:43 <elliott> The excessive parents are kind of ugly.
21:19:49 <cpressey> printf with one argument seems to not exist
21:19:56 <elliott> Maybe there's puts or similar
21:19:58 <elliott> limit a = if a == 256 || a < 0 then 0 else a;
21:20:01 <elliott> Hmm, I think Pure has guards too
21:20:03 <elliott> Not so sure about that, though
21:20:18 <elliott> fish a "o" = a when puts (str a) end; <-- More nitpicking, but isn't "when" used for guards??
21:20:26 <elliott> Seems weird to use it for incidental effects but I dunno
21:20:27 <cpressey> oh, probably. feel free to further, uh, Pure-ify it :)
21:20:36 <elliott> I'll play around with it though
21:20:42 <elliott> I sure hope Pure has a binary
21:20:49 <cpressey> the manual said 'when' could be used like that :)
21:21:03 <elliott> Oh, then it's probably idyomatticke.
21:21:09 <elliott> Great, only Windows binaries.
21:21:29 <cpressey> it didn't *encourage* that use, but... yes.
21:23:04 <cpressey> I guess the main thing about both of them (but especially Felix) is that input and output (especially input) are an afterthought. Hey, let's just wrap the C API. And let's not really document it. Who would want to read input from a user, anyway?
21:24:58 -!- Sgeo has quit (Ping timeout: 246 seconds).
21:25:02 <cpressey> meanwhile i'm designing esolangs in which I can't figure out how to accomplish useful recursion :/
21:25:46 <elliott> try doing input in C++ templates
21:25:53 <elliott> #define PROGRAM i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,o,s,i,o,i,i,i,i,i,i,i,s,s,s,o
21:26:51 -!- Sgeo has joined.
21:28:41 <cpressey> yeah the designers of the C++ template really should have done a better job considering input
21:30:29 <pikhq> s/done a better job considering input/been shot/
21:34:58 <elliott> ais523: you forgot to add downright to the language list btw
21:35:16 <cpressey> uses require import using include!
21:35:26 <ais523> I'll do it myself if nobody else does first
21:35:49 <elliott> oh dear, we do not have a mathematica Deadfish
21:36:02 <elliott> hmm, I'm assuming mathematica even has standard input
21:36:13 <elliott> although arguably it should just look like Deadfish[{i,i,i,s,o}]
21:36:33 <cpressey> http://reference.wolfram.com/mathematica/ref/Input.html
21:37:13 <elliott> "interactively reads in one Mathematica expression."
21:37:23 <elliott> InputString is more like it
21:37:30 <elliott> InputString[">>> "] or similar
21:38:08 <ajf> pikhq: I added that quote to bash.org
21:38:27 <ajf> 21:29 < cpressey> yeah the designers of the C++ template really should have done a better job considering input
21:38:30 <ajf> 21:29 < cpressey> *template system
21:38:31 <elliott> and who is so delusional to think that bash ever accepts new quotes any more? :)
21:38:33 <ajf> 21:31 < pikhq> s/done a better job considering input/been shot/
21:38:37 <elliott> ajf: we have our own quote database...
21:38:43 <HackEgo> 352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something
21:38:59 <ajf> add it to that too
21:39:36 <HackEgo> 352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something
21:39:53 <elliott> `addquote <cpressey> `quote django <HackEgo> 352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something <cpressey> thankfully only one
21:39:54 <HackEgo> 407) <cpressey> `quote django <HackEgo> 352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something <cpressey> thankfully only one
21:40:16 <HackEgo> 352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something \ 407) <cpressey> `quote django <HackEgo> 352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something <cpressey> thankfully only one
21:40:27 <monqy> thankfully only two
21:40:51 <elliott> there's no way that would fit on one line so i'm not even going to try and add it
21:40:52 <monqy> or however it works
21:40:56 <elliott> `addquote <monqy> `quote django <HackEgo> 352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something \ 407) <cpressey> `quote django <HackEgo> 352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something <cpressey> thankfully only one <monqy> thankfully only two
21:40:58 <HackEgo> 408) <monqy> `quote django <HackEgo> 352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something \ 407) <cpressey> `quote django <HackEgo> 352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something <cpressey> thankfully only one <monqy> thankfully only two
21:41:08 -!- MigoMipo has quit (Read error: Connection reset by peer).
21:41:14 <HackEgo> 190) <fizzie> It's like mathematicians, where the next step up from "trivial" is "open research question". <fizzie> "Nope... No...This problem can't be done AT ALL. This one--maybe, but only with two yaks and a sherpa. ..."
21:41:15 <HackEgo> 135) <alise> like, just like I'd mark "Bob knob hobs deathly poop violation EXCREMENT unto;" as English <ais523> alise: that's great filler <alise> ais523: well it contains all the important words in the english language...
21:41:16 <HackEgo> 278) <elliott> mtve, now he's an expert idler. <nddrylliog> mtve: kitty kitty kitty
21:41:21 <ajf> `addquote <cpressy> yeah the designers of the C++ template system really should have done a better job considering input <pikhq> s/done a better job considering input/been shot/
21:41:22 <HackEgo> 409) <cpressy> yeah the designers of the C++ template system really should have done a better job considering input <pikhq> s/done a better job considering input/been shot/
21:41:33 <elliott> `delquote <cpressy> yeah the designers of the C++ template system really should have done a better job considering input <pikhq> s/done a better job considering input/been shot/
21:41:47 <elliott> `addquote <cpressy> yeah the designers of the C++ template system really should have done a better job considering input <pikhq> s/done a better job considering input/been shot/
21:41:49 <HackEgo> 410) <cpressy> yeah the designers of the C++ template system really should have done a better job considering input <pikhq> s/done a better job considering input/been shot/
21:42:06 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/delquote
21:42:27 <elliott> Gregor: your fake character breaks url detection here
21:42:32 <elliott> and it even copies with it, so it wouldn't load in my browser
21:43:11 <HackEgo> /tmp/hackenv.24269/bin/delquote: line 3: 409: syntax error: operand expected (error token is "409")
21:44:03 <elliott> `run sed -i 's/[ "$((id+0))" = "$id" ]/expr "$1" + 0 >/dev/null 2>&1/' bin/delquote
21:44:19 <elliott> `run sed -i 's/\[ "$((id+0))" = "$id" \]/expr "$1" + 0 >/dev/null 2>&1/' bin/delquote
21:44:30 <elliott> now why isn't this working
21:45:03 <elliott> `run sed -i 's/[ "\$((id+0))" = "\$id" ]/expr "$1" + 0 >/dev/null 2>&1/' bin/delquote
21:45:15 <elliott> `run sed -i 's|[ "\$((id+0))" = "\$id" ]|expr "$1" + 0 >/dev/null 2>&1|' bin/delquote
21:45:32 <elliott> #!/bexpr "$1" + 0 >/dev/null 2>i1n/sh
21:45:32 <elliott> expr "$1" + 0 >/dev/null 2>i1d=$1
21:45:32 <elliott> [expr "$1" + 0 >/dev/null 2> 1"$((id+0))" = "$id" ] || exit 1
21:45:32 <elliott> heaexpr "$1" + 0 >/dev/null 2>d1 -n $((id-1)) quotes >quotes.new
21:45:32 <elliott> taexpr "$1" + 0 >/dev/null 2>i1l -n +$((id+1)) quotes >>quotes.new
21:45:32 <elliott> expr "$1" + 0 >/dev/null 2>d1iff quotes quotes.new >/dev/null && exit 1
21:45:34 <elliott> mvexpr "$1" + 0 >/dev/null 2> 1quotes.new quotes
21:45:36 <elliott> echoexpr "$1" + 0 >/dev/null 2> 1'*poof*'
21:45:44 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
21:46:07 <elliott> `run sed -i 's|\[ "\$((id+0))" = "\$id" \]|expr "$1" + 0 >/dev/null 2>&1|' bin/delquote
21:46:15 <elliott> expr "$1" + 0 >/dev/null 2>[ "$((id+0))" = "$id" ]1 || exit 1
21:46:24 <elliott> `run sed -i 's|\[ "\$((id+0))" = "\$id" \]|expr "$1" + 0 >/dev/null 2>\&1|' bin/delquote
21:46:33 <elliott> `run sed -i 's|\[ "\$((id+0))" = "\$id" \]|expr "$1" + 0 >/dev/null 2>\&1|' bin/delquote
21:46:47 <elliott> seiojgnkoiredk nioekjoighfd
21:47:49 <cpressey> Notorious Norwegian bank robber Seiojgnkoiredk Nioekjoighfd, 49, was convicted today of...
21:48:32 <HackEgo> 409) <cpressy> yeah the designers of the C++ template system really should have done a better job considering input <pikhq> s/done a better job considering input/been shot/
21:49:35 <elliott> `run sh -c 'id=9; echo $((id+9))'
21:50:16 <monqy> today I learned 9+9 is 18
21:52:57 -!- ajf has changed nick to ajf|offline.
21:55:36 <cpressey> I need a third dimension in which I can express formal and actual parameters or NO [USEFUL] RECURSION FOR ME.
21:56:07 <cpressey> or maybe i just need SPECIAL ARROWS
21:56:40 <elliott> does... does Eightebed distinguish = in an expression and a statement?
21:57:39 <cpressey> a = 1; <-- assignment. if (a = 3) <-- equality
21:57:49 <elliott> yeah but can you do "a = (b = c)" in BASIC?
21:58:23 <elliott> btw, I think you could use the least significant bit of the pointer as the valid flag, since all pointers are even on every OS ever
21:58:29 <elliott> maybe you already do, dunno
22:01:52 <cpressey> I don't think so, because of bounded memory, but aside from that, it should be.
22:02:06 <cpressey> actually, there is no bound on pointer size, so maybe it is
22:02:09 <elliott> I don't see anything mandating finite pointers, yeah
22:02:15 <elliott> I think you could avoid the mark phase.
22:02:55 <elliott> Keep a table; pointers are indices into this table. The table entries consist of the pointer, the valid flag, and finally, a list of (plain regular non-Eightebed) pointers to places where this pointer is referenced on the heap.
22:03:07 <elliott> Then all you need to do is append to that list whenever you assign a variable to a pointer.
22:03:18 <elliott> Then "free" is just O(n) in the number of aliases.
22:03:27 <elliott> Which looks even less like a garbage collector.
22:04:03 <cpressey> I think I remember thinking of something like that and rejecting it.
22:04:20 <elliott> Because it wouldn't work or because it's lame? :)
22:04:31 <elliott> actually, wait, you do not even need the list of aliases
22:04:33 <cpressey> I think the question was, how would you manage the table?
22:04:35 -!- aloril has quit (Ping timeout: 250 seconds).
22:04:36 <elliott> since the valid bit is in the table
22:04:49 <elliott> cpressey: Same way any allocator works.
22:05:18 <cpressey> Well, feel free to implement it and see
22:05:30 <cpressey> I'm done with Eightebed unless there's another hole
22:05:59 <elliott> I think you could actually just store the data inline with the table, come to think of it.
22:06:05 <elliott> So this is literally like writing your own memory allocator.
22:07:39 <elliott> If you have a flat memory space, then just store the valid bit before every block of memory.
22:07:46 <elliott> Then when dereferencing, just add one to the pointer.
22:07:54 <elliott> Or even, have the bit one /before/ the data, and checking validity is just
22:07:59 <elliott> if ([asterisk](ptr-[one]))
22:08:04 <cpressey> When do you know you can re-use the memory?
22:08:59 -!- pikhq_ has joined.
22:09:14 <elliott> cpressey: that is problematic :)
22:09:21 <elliott> similarly, in the table solution, you could never reuse table entries
22:09:30 <elliott> ok so here's the revised table solution
22:09:35 <elliott> the table just keeps the real pointer and all the aliases
22:09:41 <elliott> but the indexes into the table keep the valid bit
22:09:47 <elliott> then free is again O(n) on number of aliases
22:09:55 <elliott> and you can reuse table entries as soon as freeing, because it's never used again
22:09:58 <elliott> because the valid bits go off
22:10:22 <cpressey> multiple indexes into same table cell?
22:10:31 <cpressey> each index has its own valid bit?
22:11:00 <cpressey> how do i know some other index doesn't think this table cell is still valid
22:11:11 <elliott> table = map from int -> {pointer, list of aliases}
22:11:28 <elliott> detagged := detag(index) // detags the valid bit
22:11:35 -!- pikhq has quit (Ping timeout: 240 seconds).
22:11:37 <elliott> for alias in table[detagged].aliases {
22:11:52 <elliott> tag-as-invalid deref(alias)
22:11:58 <elliott> add detagged to table-free-list
22:12:15 <elliott> cpressey: some other index?
22:12:19 <elliott> the table stores all aliases to this index
22:12:28 <elliott> whenever you assign an index to a variable, you go add it to the alias list in the table
22:12:56 <cpressey> and if you store that index in a structure?
22:13:25 <cpressey> basically it seems as if you are marking as you go
22:13:44 <elliott> then that point of the structure gets added to the alias list
22:14:34 <cpressey> your free is O(n) because you're caching the references in the list
22:14:56 <elliott> but it's better than a whole heap traversal
22:15:37 <cpressey> ok, well, if optimizing a loophole response to an offhand claim is your cup of tea, go for it
22:15:52 <cpressey> the idea for me was for it to be done at all
22:15:59 <elliott> i'm just saying that it sounds like less of a loophole :)
22:16:06 <elliott> it's more like refcounting this way
22:16:23 <cpressey> refcounting still sounds like GC to me
22:16:24 -!- aloril has joined.
22:17:09 <elliott> yes but istr part of gregor's complaint being that it's a colossally slow free() like this
22:17:26 <elliott> whereas O(n) in aliases is pretty okay
22:17:42 <cpressey> well, it's "well known" that refcounting is "faster than" mark-and-sweep
22:17:59 <elliott> yes but it's not obvious that refcounting applies to eightebed :)
22:18:06 <elliott> especially since its a list rather than a number here
22:18:57 <cpressey> i'm working on something else and this doesn't really interest me, is all
22:20:02 <cpressey> though I'm still far from convinced that storing a pointer into allocated memory in these lists is safe, as well
22:20:20 <elliott> well it could store (table index, offset) instead :)
22:20:24 <cpressey> what about when that chunk is no longer valid? how did you get rid of that reference from all lists it might have been in?
22:20:41 <elliott> you wouldn't have to, I think
22:20:49 <elliott> if you store (table index, offset)
22:20:55 <elliott> then you could add it to the alias list etc
22:21:02 <elliott> so i guess it's not quite O(n) heh
22:24:11 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
22:27:19 <elliott> 00:23:42: <oklopol> oerjan: i'll read your papers when i've gathered some additional ownage.
22:27:20 <elliott> 00:23:52: <oklopol> i mean, those crazy mathematical papers of yours
22:27:21 <elliott> 00:27:07: <oklopol> oerjan: in fact, i'll promise to read them 2012, if we both are still around.
22:27:24 -!- BeholdMyGlory has quit (Read error: Connection reset by peer).
22:28:02 <cpressey> can i see your papers please, citizen oerjan
22:30:23 <cpressey> anyway, I'm happy. I think I figured out how to do recursion in my new language
22:30:44 <elliott> 01:13:42: <olsner> sex and shit, definitely already done... puppies and sex, sure... puppies and shit, obviously... I guess you do have to go all three to find a new genre
22:30:45 <elliott> 01:14:09: <oklofok> hmm, i actually haven't seen anything with all three
22:30:52 <elliott> cpressey: those are pretty cool
22:34:57 -!- FireFly has quit (Quit: swatted to death).
22:35:47 -!- augur has quit (Remote host closed the connection).
22:37:38 <cpressey> the thing oerjan said about counting down for my head to explode which i can;t find in my scrollback
22:37:50 -!- cpressey has quit (Quit: leaving).
22:38:39 <elliott> that cpressey guy sure is weird
22:40:02 -!- Slereah has quit (*.net *.split).
22:40:02 -!- HackEgo has quit (*.net *.split).
22:40:03 -!- Gregor has quit (*.net *.split).
22:43:26 -!- Slereah has joined.
22:43:26 -!- HackEgo has joined.
22:43:26 -!- Gregor has joined.
22:49:07 -!- augur has joined.
23:11:56 -!- augur has quit (Remote host closed the connection).
23:26:58 <Gregor> From your side, that was a minor netsplit.
23:27:03 <Gregor> From my side, that was ULTIMATE NETSPLIT.
23:27:19 <elliott> Your MOM is the ultimate netsplit.
23:27:35 <elliott> Wow, why does Pure have macros.
23:27:39 <elliott> It's already a term rewriting language.
23:27:44 <elliott> "The difference between macros and functions is that macros are not compiled but expanded at compile time, and the resulting code is then compiled. (This is the usual reason to introduce macros.) In this way, macros can be used for adding optimization to the code as well as for avoiding repetitive code."
23:27:54 <elliott> Oh come on, surely you can do inlining.
23:31:48 <elliott> "As the author of PURE says, "if you really need Haskell, you know where to find it.""
23:33:35 <elliott> "(In the Haskell language, special techniques are used in this case to trick the compiler into thinking that several calls to gets need to be compiled in a certain order.)"
23:33:45 <elliott> I guess the creator of Pure didn't write this because damn it's stupid.
23:34:33 <Sgeo> Maybe e's referring to the IO monad?
23:35:05 <elliott> It does not apply to the IO monad.
23:35:12 <elliott> Wow holy shit Pure's gets is ugly.
23:53:26 <monqy> is pure a good language
23:55:42 -!- ais523 has quit (Read error: Connection reset by peer).
23:56:49 <monqy> I tried to look at their example code but their whatever is configured improperly and I downloaded them instead
23:56:55 <monqy> so I'm not bothering
23:57:52 <elliott> monqy: The IO support seems lame, but the actual language is interesting.
23:58:06 <Sgeo> Continuations may be just what Active Worlds bots need
23:58:17 <Sgeo> I can't believe I didn't see it earlier
23:58:19 <elliott> monqy: It's essentially pure term-rewriting, but compiled and efficient.
23:59:25 <monqy> active worlds? is that one of your virtual reality obsessions? you're the guy who has those right?