←2010-03-02 2010-03-03 2010-03-04→ ↑2010 ↑all
00:00:04 <alise> coppro: what?
00:01:01 <oerjan> alise: argh. (0/1)*normal = 0/1 violates my hypothesis that it's an abelian group :(
00:01:21 <coppro> wait, does (m/0)*0 = m?
00:01:33 <alise> yes
00:01:37 <alise> oerjan: what should it be?
00:01:46 <coppro> ok, never mind then
00:02:05 <coppro> then I go by my previous answer
00:02:18 <alise> so does YOUR MOM
00:02:38 <alise> oerjan: (0/1)*normal = ?
00:02:50 <oerjan> alise: well if normal = 1/n then it should be 0/n
00:03:03 <alise> fair enough
00:03:07 <alise> i think i had that too anyway
00:03:10 <alise> what if normal = 2/n?
00:03:13 <coppro> wait, what is normal here?
00:03:15 <alise> 0/(2/n)?
00:03:40 <alise> coppro: not 0/m or n/0 where m>1 or n>0
00:03:41 <oerjan> alise: 0/(n/2)
00:03:47 <alise> okay.
00:03:48 <coppro> alise: ok
00:04:11 <Sgeo__> I like Ruby symbols
00:04:22 <alise> 4/5 * 0/1 = ?
00:04:33 <alise> for that matter, 4/5 * 0/2 = ?
00:04:56 <oerjan> 0/(5/2)
00:04:56 <coppro> 0 in all cases, I think
00:05:53 <alise> oerjan: =
00:05:53 <alise> ?
00:06:03 <alise> it's nat/nat and 5/2 is not a natural
00:06:05 <oerjan> the latter one
00:06:07 <Sgeo__> Some Ruby syntax is strange
00:06:24 <alise> i guess it's just (0/1)/(5/2)
00:06:46 <oerjan> alise: you cannot get everything in the form m/n with naturals if you assume it's an abelian group and 0 cannot be combined in
00:06:47 <alise> = 0/5
00:07:10 <alise> oerjan: 0 is 0/1
00:07:23 <alise> 0/n isn't anywhere near being 0 despite intuition
00:07:34 <oerjan> alise: that doesn't help _reduce_ the number of factors
00:08:12 <alise> maybe i expressed myself wrongly
00:08:13 <oerjan> 0/(5/2) cannot be written simpler, afaict
00:08:44 <oerjan> it's the same as 0*(2/5), though
00:08:57 <alise> is it not 0/5?
00:09:44 <alise> 0/(5/2) = (0/1)/(5/2) = (0*2)/(1*5) = 0/5
00:09:54 <oerjan> ouch
00:10:00 <Sgeo__> um... Ruby uses C++-like syntax for some I/O?
00:10:15 <alise> oerjan: i just done a bad :D
00:10:16 <oerjan> alise: if it's an abelian group then 0*x = 0 implies x = 1
00:10:40 <alise> 0/5 =/= 0
00:10:49 <alise> 0*(2/5) = 0/5
00:10:52 <alise> er
00:10:54 <alise> (0/2)*(2/5) = 0/5
00:11:03 <alise> or was it /, I forget by now
00:11:04 <alise> or even +
00:11:10 <alise> but point is, just as 1/2 isn't 1/1
00:11:13 <oerjan> the latter would be correct for a group
00:11:15 <alise> 0/n isn't 0
00:11:38 <oerjan> indeed. and so 0/(5/2) cannot be simplified, although there are rearrangements
00:11:48 <dev_squid> Like my random hash generator? (http://pastie.org/850853) :P
00:11:57 <oerjan> (0/5)*2, say
00:12:02 <alise> dev_squid: cool.
00:12:09 <dev_squid> alise, :D
00:12:11 <alise> oerjan: how is 0/(5/2) = 0/5 wrong?
00:12:36 <coppro> dev_squid: neat, but inefficient
00:13:09 <coppro> also biased
00:13:44 <oerjan> alise: => 5/2 = 5 by abelian group axioms
00:13:57 <dev_squid> coppro, yes it is biased and it is inefficient; I wasn't aiming for either.
00:13:58 <alise> but i don't like 0/(5/2) being irreducable :(
00:14:02 <alise> find some other algebraic structure :P
00:14:06 <coppro> ok
00:14:11 <oerjan> sheesh
00:14:40 <alise> :-D
00:15:08 <dev_squid> coppro, I'm new to Befunge. Just trying out what I've learned. :)
00:16:23 <dev_squid> coppro, I tried to make the odds as balanced as I could without rewriting the whole program.
00:16:44 <coppro> ok
00:18:41 <alise> oerjan: i have a sneaking feeling this is all quite impossibe
00:18:44 <alise> *impossible
00:19:24 <coppro> anything is possible
00:19:43 <alise> i mean, retaining all the basic properties we want
00:19:44 <Oranjer> anything!
00:19:50 <alise> and no. _|_ isn't possible
00:19:50 <oerjan> alise: duh
00:20:03 <alise> oerjan: see that is *not* the answer i was hoping for
00:20:24 <alise> Would be fun to have a complete number system with no undefined operations at all
00:20:41 <alise> Reals go horizontally, complexes stack on top vertically, and things we had to add to make everything work go sort of spiralling off diagonally
00:21:21 <coppro> there's a reason 0/0 is considered an indeterminate form
00:21:57 <alise> Bite my shiny zero-dividing fraction. :|
00:23:02 * Sgeo__ gives up on TryRuby
00:24:17 <coppro> alise: new suggestion: we define 0/0 to be a daffodil
00:24:28 <alise> coppro: you are so boring :(
00:24:49 <coppro> I had to work hard for a joke that bad :(
00:25:02 <oerjan> alise: well if you want to insist that everything is m/n for integers m, n then maybe it would be better to define the operations and then _afterward_ finding out which rules still hold
00:25:12 <alise> yes.
00:25:17 <alise> oerjan: will you remind me to, tomorrow?
00:25:27 <coppro> alise: please tell me you at least got the joke
00:25:35 <coppro> also, you're allowed back on on weekdays now?
00:25:45 <alise> no i'm not going because of overriding crisis
00:25:52 <oerjan> although you still need to decide which fractions in non-smallest terms are equal
00:25:58 <alise> complicated, and i'm going now anyway
00:26:02 <alise> hopefully i will be here tomorrow
00:26:03 <alise> see you guys!
00:26:05 -!- alise has quit (Quit: alise).
00:31:16 -!- cpressey has left (?).
00:32:17 <oerjan> <AnMaster> <uorygl> `translate Hva de skal se, vites ikke enda! <-- yeah that looks like Norwegian indeed <-- except that kind of passive is ridiculously stilted for norwegian
00:32:35 -!- SimonRC has quit (Ping timeout: 246 seconds).
00:33:38 <oerjan> passives with -es are much less common in norwegian than swedish afaik
00:35:27 <oerjan> it could of course be stilted for humorous reasons
00:42:59 -!- SimonRC has joined.
01:02:57 -!- lament has quit (Ping timeout: 276 seconds).
01:06:17 -!- lament has joined.
01:18:14 <Sgeo__> No closures in Ruby [apparently]
01:18:23 * Sgeo__ is learning!
01:18:42 <Oranjer> yay
01:19:03 <Sgeo__> n/m
01:26:56 <pikhq> Wait, those things don't close?
01:30:22 <Sgeo__> Methods can't see surrounding variables, but blocks can
01:30:24 <Sgeo__> Apparently
01:37:44 <Sgeo__> In Ruby, there seem to be a million ways to accomplish the same thing
01:37:49 <Sgeo__> For any given "thing"
01:38:33 <oerjan> ruby stole that from perl, obviously
01:41:26 <oerjan> (see: perl motto)
01:45:03 -!- Asztal has quit (Ping timeout: 252 seconds).
01:45:09 -!- FireFly has quit (Quit: Leaving).
01:45:11 -!- BeholdMyGlory has quit (Read error: Connection reset by peer).
02:08:43 * Sgeo__ is considering running back to his beloved Python
02:29:26 -!- dev_squid has quit (Ping timeout: 240 seconds).
02:33:33 -!- dev_squid has joined.
02:40:55 <uorygl> oerjan: or it could be stilted for dramatic effect.
02:40:58 -!- ruhtranayr has quit (Remote host closed the connection).
02:42:51 -!- thewolfangel has joined.
02:42:53 <oerjan> uorygl: it is really _too_ stilted for that
02:43:09 -!- thewolfangel has left (?).
02:43:11 <oerjan> it is not just the passive, but also the word order
02:43:41 <uorygl> "Yet to be known is which movie."
02:44:07 <uorygl> That, at least, looks like a plausible thing to say.
02:45:05 <oerjan> "Hva de skal se, er ennå ukjent!" would be a better phrasing for that purpose.
02:45:39 <uorygl> Maybe this is just a stilted person. :P
02:46:33 <uorygl> That's a Facebook status update. "Marianna skal straks se film med Ørjan. Hva de skal se, vites ikke enda!"
02:46:40 <uorygl> s/Marianna/Marianne/
02:47:03 <uorygl> `translatefromto sv en Marianne skal straks se film med Ørjan.
02:47:06 <oerjan> that's definitely humoristically dramatic, then
02:47:12 <HackEgo> Marianne skal straks see movies with &#216;rjan.
02:47:22 <oerjan> it's norwegian, not swedish
02:47:25 <uorygl> I know.
02:47:32 <uorygl> `translatefromto sv en Hva de skal se, vites ikke enda!
02:47:34 <HackEgo> Hva de skal se, vites ikke only!
02:47:45 <uorygl> That translated less well.
02:48:22 <uorygl> I wonder what a P-knappen is.
02:48:32 <oerjan> `translatefromto sv en Vad dom skal se, vites inte ennu!
02:48:34 <HackEgo> As they peel look, vites not ennu!
02:48:41 <oerjan> what the heck!
02:48:53 <oerjan> my swedish must be worse than i thought :D
02:49:09 * uorygl peels look.
02:49:17 <oerjan> oh skal = skall
02:49:22 <oerjan> or shell
02:49:30 <oerjan> completely different meaning in swedish
02:50:12 <oerjan> `translatefromto sv en Vad dom ska se, vets inte enn!
02:50:14 <HackEgo> What they should look, not vets enn!
02:50:23 <oerjan> *sigh*
02:50:45 <oerjan> `translatefromto no sv Hva de skal se, vites ikke enda!
02:50:47 <HackEgo> Att se, är inte känt ännu!
02:51:16 <oerjan> not exactly perfect either (well, the first part)
02:51:26 <oerjan> the second part actually removed the stiltedness
02:51:52 <oerjan> `translatefromto no en Hva de skal se, vites ikke enda!
02:51:54 <HackEgo> What to see, is not known yet!
02:56:52 -!- thewolfangel has joined.
02:57:09 -!- thewolfangel has left (?).
03:00:15 <uorygl> Thew ol' fang el.
03:00:25 <uorygl> El Ol' Thew Fang.
03:00:57 <uorygl> No no, Ol' El Thew Fang.
03:01:54 <uorygl> Like Old El Paso, except Ol' instead of Old and Thew Fang instead of Paso.
03:03:17 <oerjan> gawnt hell foe
03:04:05 <uorygl> "Gawnt" isn't a word.
03:04:19 <oerjan> i thought it was close enough to gaunt
03:09:46 <uorygl> `translate korvapuusti
03:09:49 <HackEgo> var sl_select, tl_select, web_sl_select, web_tl_select;var ctr, web_ctr, h;var tld = ".com";var sug_lab = "";var sug_thk = "";var sug_exp = "";var dhead = "Dictionary";var dmore = "View detailed dictionary";var tr_in = "Translating...";var isurl = "";var show_roman = "Show romanization";var
03:10:12 <uorygl> `translatefromto fi en korvapuusti
03:10:14 <HackEgo> slap in the face
03:10:46 <uorygl> `translate Korvapuusti on kanelilla, sokerilla ja voilla täytetty pulla.
03:10:48 <HackEgo> Is a slap in the face with cinnamon, sugar and butter filled bun.
03:11:30 <uorygl> I'm guessing that sentence doesn't have a copula.
03:11:36 <uorygl> `translate kanelilla
03:11:38 <HackEgo> var sl_select, tl_select, web_sl_select, web_tl_select;var ctr, web_ctr, h;var tld = ".com";var sug_lab = "";var sug_thk = "";var sug_exp = "";var dhead = "Dictionary";var dmore = "View detailed dictionary";var tr_in = "Translating...";var isurl = "";var show_roman = "Show romanization";var
03:11:46 <uorygl> `translatefromto fi en kanelilla
03:11:48 <HackEgo> cinnamon
03:11:55 <oerjan> `translatefromto fi en on
03:11:57 <HackEgo> is
03:12:02 <uorygl> I was wrong.
03:12:39 <uorygl> It looks like -illa means... whatever case you use for "filled with".
03:12:51 <oerjan> yeah
03:12:54 <uorygl> `translatefromto fi en täytetty
03:12:56 <HackEgo> filled
03:13:29 <oerjan> `translatefromto fi en korva
03:13:31 <HackEgo> ear
03:13:43 <oerjan> `translatefromto fi en puusti
03:13:45 <HackEgo> Puusti
03:13:54 <uorygl> If a korva is an ear, why is a korvapuusti a slap in the face?
03:14:07 <uorygl> Are Finns' ears on their faces?
03:14:12 <oerjan> probably more a slap on the ear, then
03:14:24 <oerjan> "ørefik" in norwegian
03:14:27 <uorygl> Wikipedia says it means "slap on the ear".
03:14:38 <oerjan> `translatefromto no fi ørefik
03:14:40 <HackEgo> puhaltaa
03:14:45 <uorygl> "Skillingsbolle", actually.
03:15:06 <oerjan> `translatefromto fi no puhaltaa
03:15:08 <HackEgo> blåse
03:15:14 <oerjan> what the heck
03:15:23 <oerjan> `translatefromto fi no korvapuusti
03:15:25 <HackEgo> slag i ansiktet
03:15:37 <oerjan> `translatefromto no en ørefik
03:15:39 <HackEgo> blow
03:15:42 <oerjan> heh
03:15:46 <uorygl> `translatefromto fi no Skillingsbolle on kanelilla, sokerilla ja voilla täytetty pulla.
03:15:48 <HackEgo> Skillingsbolle er kanel, sukker og smřr fylt bun.
03:15:54 <uorygl> `translate Skillingsbolle er kanel, sukker og smřr fylt bun.
03:15:56 <HackEgo> Skilling Bowl is cinnamon, sugar and sm&#345;r filled bun.
03:15:59 <oerjan> it seems to be wrecking it by going through english
03:16:35 <uorygl> Skilling?
03:16:55 <oerjan> hm a skillingsbolle would be a bun filled _with_ the other things i think
03:17:01 * uorygl begins skilling.
03:17:18 <uorygl> `translate Kanelbolle er kanel, sukker og smřr fylt bun.
03:17:19 <HackEgo> Cinnamon roll are cinnamon, sugar and sm&#345;r filled bun.
03:17:20 <oerjan> skilling is an old coin
03:18:08 <oerjan> that's really not correct norwegian
03:18:15 <uorygl> `translate Skillingsbolle, også kalt kanelbolle, er en tradisjonsrik bolle mange tror stammer fra Bergen, men som selges og har vært solgt i butikker og bakerier over stort sett hele landet.
03:18:17 <HackEgo> Skilling Bowl, also called cinnamon bun, is a traditional bowl many believe stems from Bergen, but sold and have been sold in shops and bakeries across virtually the entire country.
03:18:40 <oerjan> you'd either add a lot of hyphens, or switch things around using the preposition "med"
03:18:46 <uorygl> The entire country!
03:18:59 <oerjan> well yeah
03:19:02 <uorygl> `translate Navnet kommer av at bollene i sin tid kostet én skilling per stykk.
03:19:04 <HackEgo> The name comes from the urchins in the time cost of one shilling per piece.
03:19:24 <uorygl> `translatefromto no en bollene
03:19:27 <HackEgo> urchins
03:19:39 <oerjan> bolle hear doesn't really mean bowl. it means a ball-shaped bakery good
03:19:48 <oerjan> what the heck?
03:19:56 <oerjan> `define urchin
03:19:58 <HackEgo> * poor and often mischievous city child \ [22]wordnetweb.princeton.edu/perl/webwn \ * Urchin was the code name for the neutron generating device that triggered the nuclear detonation of the earliest plutonium atomic bombs such as Fat Man, once the critical mass had been "assembled" by the force of conventional
03:20:10 <oerjan> that's just - wrong
03:20:20 <uorygl> An urchin is a hedgehod, I hear.
03:20:26 <uorygl> Hedgehog, even.
03:20:37 <oerjan> _that_ would be pinnsvin
03:20:49 <Gregor> And a sea urchin is a hedgehog of the sea.
03:20:52 <uorygl> `translatefromto en no urchin
03:20:54 <HackEgo> urchin
03:20:54 <oerjan> i don't think there is a good translation for the bakery "bolle"
03:20:54 <uorygl> Precisely.
03:21:13 <uorygl> Donut hole. :P
03:21:14 <oerjan> ah!
03:21:24 <oerjan> that's "kråkebolle"
03:21:29 <oerjan> but never just "bolle"
03:21:37 <uorygl> What's a kråke?
03:21:39 <oerjan> (sea urchin that is)
03:21:42 <oerjan> kråke = crow
03:21:57 <uorygl> A crow bolle.
03:22:15 <oerjan> basically crows eat them like people eat the other thing
03:23:30 <uorygl> The kråke eat the kråkebolle and people eat the smultring?
03:23:42 <oerjan> um no people eat the bolle
03:23:46 <oerjan> well the smultring too
03:24:05 <uorygl> Crows eat crow-bolles like people eat bolles?
03:24:10 <oerjan> or specifically hvetebolle, the most generic type
03:24:12 <Gregor> What's this about smut-ring?
03:24:15 <oerjan> (wheat)
03:24:16 <Gregor> Oh, smultring.
03:24:31 <uorygl> Gregor: A smultring is a ring-formed cake cooked of smult.
03:24:41 <oerjan> lard ring
03:24:52 <uorygl> Cooked *in* smult.
03:25:01 <oerjan> deep fried dough rings
03:25:08 <Gregor> ... doughnuts.
03:25:15 <uorygl> Ah, that's the word.
03:25:29 <oerjan> same shape, but completely different size and recipe
03:25:51 <uorygl> What's a completely different size and recipe but the same shape?
03:26:05 <oerjan> smultring vs. doughnut
03:26:26 <uorygl> Are those both words in one language?
03:26:48 <uorygl> Oh, huh. "Smultring" is an English word.
03:26:52 <oerjan> well american-style doughnuts are sometimes sold in norway under that name
03:27:12 <oerjan> a smultring wouldn't have any kind of glaze
03:27:25 <Gregor> Not all doughnuts have glaze.
03:27:30 <Gregor> Glazed doughnuts have glaze.
03:27:45 <oerjan> just a small flat dough ring, dropped into hot lard where it expands to a torus shape
03:27:48 <oerjan> aha
03:27:57 <Gregor> So, a doughnut :P
03:28:18 <uorygl> It looks like smultrings are a certain type of smultringer!
03:28:32 <uorygl> Just like the salsa is a certain type of la salsa.
03:28:37 <oerjan> ic so not all american doughnuts conform to the norwegian stereotype of them :)
03:29:05 <Gregor> http://www.voodoodoughnut.com/
03:29:33 <uorygl> Some are rings and glazed, some are rings and not glazed, some are circular but not rings, some are a rounded box with dimension ratio approximately 4:2:1.
03:29:41 <uorygl> The non-ring ones are all filled with something; none of the ring ones are.
03:29:52 <Gregor> uorygl: Well that's just not true.
03:30:11 <uorygl> Of course not. There's no law of physics requiring there to be filling in a non-ring doughnut.
03:30:13 <Gregor> Maple bars are not rings, and are not filled.
03:30:28 <uorygl> It's just that it never happens that way.
03:30:34 <oerjan> http://www.holmstad.no/ on the right are typical smultringer
03:30:44 <Gregor> uorygl: Except for ALL THE FUCKING TIME.
03:31:04 <Gregor> uorygl: You must have the worst doughnut shops in existence :P
03:31:21 <uorygl> Those smultringer look slightly different from our typical non-chocolate unglazed smultringer.
03:31:27 <oerjan> very plain, like most traditional norwegian bakery
03:31:35 <uorygl> Gregor: I've never even seen an actual doughnut shop, I think.
03:31:41 <Gregor> *tsk tsk*
03:31:51 <uorygl> Those smultringer remind me of Twinkies and onion rings.
03:32:19 <Gregor> We would call those "plain doughnuts"
03:32:23 <oerjan> i guess onion rings are the same except with onions as well inside
03:32:23 <Gregor> They're popular with coffee.
03:32:42 <uorygl> What do you call those things on the left? Fruktpizzaer?
03:33:04 <Gregor> "Fruit pizza"? :P
03:33:24 <uorygl> Actually, "frukt" means "ear", and "pizza" means "slap".
03:33:25 * uorygl coughs.
03:33:26 <oerjan> honestly i don't know
03:33:42 * Gregor slaps uorygl's ear
03:33:51 <oerjan> it _would_ seem a reasonable norw. name for it
03:34:14 <Gregor> http://www.voodoodoughnut.com/doughnuts/bacon_maple_bar.jpg <-- the greatest doughnut ever conceived. Full stop.
03:34:18 <oerjan> well assume that was pizza underneath, i suspect it's actually something sweeter
03:34:22 <oerjan> *assuming
03:34:40 -!- calamari has joined.
03:34:44 <uorygl> I would call anything a pizza as long as it's a slab of dough with stuff on it.
03:35:09 <uorygl> Even frukt.
03:35:15 <pikhq> Then Japan has some nasty things to show you.
03:35:19 <Gregor> So, an iced cake is a pizza :P
03:35:26 <uorygl> A cake is not a slab.
03:35:32 <Gregor> A short cake is.
03:35:38 <Gregor> A shortcake, even.
03:35:44 <uorygl> If it's a really short cake, then...
03:35:57 <uorygl> Then yeah, it's a pizza.
03:36:02 <Gregor> Strawberry shortcake is DEFINITELY a kind of pizza by your definition.
03:36:26 <uorygl> My strawberry shortcake never consists of strawberries and whipped cream on a short cake.
03:36:45 <uorygl> It's strawberries and whipped cream and chopped-up biscuits tossed together.
03:36:53 <uorygl> I'm getting the idea that my cuisine is strictly inferior to yours.
03:37:05 <pikhq> Strictly? Yes.
03:37:25 <Gregor> Shortcake is often, but not always, short and round ... it can also be tall and round, or even not round probably :P
03:37:30 <pikhq> This is America -- the country of the pizza bagel.
03:37:35 <Gregor> *barf*
03:37:41 <pikhq> :P
03:37:57 <uorygl> Hmm. I think an open-faced sandwich would qualify as a pizza under my definition.
03:38:35 <Gregor> (Also, shalom and ciao)
03:39:06 <Gregor> uorygl: I figured that since bread slices are sliced, they wouldn't qualify as a slab of dough, since they were in fact a loaf of dough, cut into a slab of bread.
03:39:09 <uorygl> An open-faced smörgås.
03:39:36 <uorygl> I guess that is true.
03:39:54 <oerjan> dammit all this food talk made me forget to eat ->
03:40:12 <uorygl> (I would have used an apostrophe, but I am currently using a Norwegian keyboard with no easy access to apostrophes.)
03:40:30 <uorygl> Now I know why people use acute accents as apostrophes.
03:40:35 <uorygl> It´s easier on some keyboards.
03:43:27 <oerjan> wait, you are actually in norway?
03:44:16 <uorygl> No, I just used a Norwegian keyboard layout.
03:44:18 <uorygl> Briefly.
03:44:23 <oerjan> the apostrophe is just left of the return key, btw
03:44:43 <uorygl> Here in Norway, that is an æ instead of an apostrophe.
03:44:47 <oerjan> to the right of æ
03:45:01 <uorygl> Oh. There isn't a key in between that and return.
03:45:21 <oerjan> oh
03:45:29 <uorygl> My home row: asdfghjkløæ
03:45:29 <pikhq> oerjan: What sort of freakish anti-coding keyboard do you have?
03:45:43 <oerjan> asdfghjkløæ'
03:45:46 <uorygl> Who uses a non-ASCII keyboard for coding?
03:46:05 <pikhq> Japanese people do.
03:46:05 <uorygl> oerjan: what, do you have an extra key in that row?
03:46:13 <oerjan> so it would seem
03:46:16 <Gregor> pikhq: Crazy Ruby-zealots
03:46:21 <pikhq> Though, their keyboard is QWERTY with a few extra buttons to control the IME.
03:46:28 <Sgeo__> A spammer discovered my hometown
03:46:42 <oerjan> it may appear that i have an entire column of convenient accent-making keys there
03:46:47 <Sgeo__> Got a spam claiming to be from the public library of my hometown
03:47:00 <uorygl> It's possible they were guessing.
03:47:02 <pikhq> I've pretty much got one set up right now.
03:47:15 <pikhq> (though with bindings instead of actual buttons)
03:47:16 <Sgeo__> Or maybe it wasn't spam, hm
03:47:41 * uorygl counts the keys on his keyboard.
03:47:57 <Quadrescence> 105
03:48:03 <uorygl> Savant.
03:48:15 <oerjan> uorygl: although changing to EN layout is as simple as pushing alt-right shift. which i don't think i've ever done on purpose, except to undo after doing it accidentally :D
03:48:33 * oerjan does so now
03:48:42 <uorygl> Fourteen keys in the function row, fourteen in the number row, fourteen in the upper row, thirteen in the home row, twelve in the lower row, eleven in the space row.
03:49:21 <uorygl> I'm sure I could find more keys if I looked hard enough.
03:49:43 <pikhq> oerjan: Wait, you code with that horrifying layout?
03:49:51 <oerjan> seventeen, fifteen, fifteen, fifteen, fourteen, twelve
03:49:53 <pikhq> *Brackets* are on Alt-Gr!
03:49:58 <oerjan> pikhq: i don't code that much
03:50:17 <oerjan> and i've never typed for that kind of speed anyway
03:50:24 <pikhq> That also looks mildly annoying for English text in general.
03:51:07 <oerjan> although it's a laptop keyboard, so no numpad
03:52:27 <uorygl> You have a lot more keys than I do.
03:53:33 <uorygl> My top row: Esc, F1-12, eject. Next: `, 1-0, -, =. Next: Tab, q-p, [, ], \. Next: Caps lock: a-l, ;, ', return. Next: shift, z-m, ,, ., /, shift. Next: Fn, control, option, command, space, command, option, arrow keys.
03:53:50 * uorygl counts how many of those are for printable characters.
03:54:35 <uorygl> 48.
03:55:00 <oerjan> command means it's apple layout?
03:55:20 <uorygl> Yep.
03:55:26 * uorygl hands out barf bags.
03:56:16 <oerjan> i think a lot of the extra keys on the right side are things that would usually be on the numpad, just strewn about a bit
03:56:51 <uorygl> Like home, page up, page down, end, insert, delete?
03:56:56 <oerjan> yeah
03:57:07 <uorygl> And the forbidden sysrq and break.
03:57:12 <oerjan> yep
03:58:38 <uorygl> You know, it's kind of annoying that there isn't any obvious separation between operating system keyboard shortcuts and application keyboard shortcuts.
03:58:43 <pikhq> SysRq is actually useful.
03:58:48 <pikhq> ... In Linux.
03:59:01 <pikhq> (Magic SysRq)
04:03:01 <dev_squid> I have a question. Does (http://pastie.org/851114) generate statistically-pseudorandom integers in range of 0-255?
04:03:48 <dev_squid> I just modified one I found in the list of Bef sources on the Cat's-Eye site.
04:04:46 <oerjan> on determining whether something is statistically pseudorandom, i defer to the actual experts.
04:05:27 <oerjan> i mean, isn't the first rule of pseudorandom generators _not_ to try to roll your own.
04:05:42 <dev_squid> You don't have much of a choice in Bef.
04:06:19 <oerjan> well i mean algorithm, not actual implementation.
04:06:38 <dev_squid> It's a solid algorithm.
04:06:51 <oerjan> ok
04:07:17 <oerjan> then i'll sidle away carefully and leave it to the actual _befunge_ experts :D
04:07:19 <uorygl> What does "statistically pseudorandom" mean?
04:07:36 <oerjan> that it passes some common statistical tests, i presume
04:07:38 <dev_squid> It basically takes rolls on 0-128, then adds it to 0-64, then adds it to 0-32, etc...
04:07:51 <dev_squid> I mean...
04:08:37 <dev_squid> Statistically, it doesn't yield results that are any more or less biased than the parent pseudorandom number generator is.
04:10:07 <dev_squid> It seems like it is, but I just can't make sense of why there is a 1 following the set. That would make the range from 0 to 256, which is just wrong.
04:10:30 <dev_squid> I'm pretty sure that 0 is a possible outcome.
04:10:59 <uorygl> Test it!
04:12:31 <dev_squid> I'll test it with the original.
04:28:42 <uorygl> I feel like creating yet another billiard ball language.
04:28:47 <uorygl> I'll call it YABBL.
04:31:40 <oerjan> now you are just yabb'ling
04:35:45 <Sgeo__> Why does Ruby interest me so much?
04:40:50 <uorygl> Well, I can help you answer that question.
04:41:02 <uorygl> Why does Ruby interest you so much?
04:41:59 <oerjan> obviously it's because it's a gem of a language.
04:43:26 * Gregor slaps oerjan.
04:43:33 -!- Gracenotes has quit (Read error: Connection reset by peer).
04:44:35 -!- Gracenotes has joined.
04:46:32 <oerjan> ouch
04:55:38 -!- Oranjer has quit (Read error: Connection reset by peer).
04:56:13 -!- Oranjer has joined.
04:57:33 -!- Oranjer has quit (Read error: Connection reset by peer).
04:58:01 -!- Oranjer has joined.
04:58:40 <Sgeo__> "But I Miss My C++ Iostream"
04:58:46 <Sgeo__> "Sometimes there's just no accounting for taste..."
04:59:58 <uorygl> YABBL described quickly: http://pastebin.ca/1820626
05:00:04 <uorygl> I hope it's correct.
05:00:13 <uorygl> Iostream, eh? That sounds like a scary feature of C++.
05:00:38 <Sgeo__> std::cout << "I've heard it described here as nightmarish." << std::endl
05:00:42 <oerjan> streams on Io
05:00:54 <uorygl> Monads are better! They're easier to understand!
05:01:11 <uorygl> (Everything I understand is easier to understand than everything I don't understand, obviously.)
05:01:14 <Sgeo__> std::cout << "Besides being ugly, which is trivial, you can't determine the flags set on an IOStream, apparently" << std::endl
05:01:32 <uorygl> What does that std::endl even mean?
05:01:53 <Sgeo__> "\n"
05:04:54 <oerjan> uorygl: "A collision is undefined behavior unless it is identical to one of the following:" <-- i assume you mean to include obvious reflections and rotations of those as well?
05:06:28 <oerjan> oh and i think you'd want >< ---> <> and variations
05:07:11 <oerjan> or would that get wrong timing...
05:09:18 <oerjan> hm i suppose it would
05:22:52 <pikhq> 千十字をやった!私がやったぜ!
05:41:59 <Gracenotes> Ubuntu has been kind of buggy lately. a few kernel crashes here and there, random logouts, overheating..
05:42:16 <Gracenotes> I wonder if it's due to my laptop going out the window (figuratively)
05:43:12 -!- lifthrasiir has quit (Ping timeout: 252 seconds).
05:43:16 -!- lifthrasiir has joined.
05:43:43 <pikhq> uorygl: std::endl is '\n'. It is not the system end of line character.
05:44:47 -!- dev_squid has quit (Read error: Connection reset by peer).
05:45:10 -!- dev_squid has joined.
05:46:21 -!- Oranjer has left (?).
05:48:53 -!- Gracenotes has quit (Remote host closed the connection).
05:50:50 -!- dev_squid has quit (Ping timeout: 248 seconds).
05:51:28 -!- dev_squid has joined.
06:10:12 <fizzie> pikhq: No, it's not the system end-of-line character. The endl manipulator is defined to call os.put(os.widen('\n')) followed by os.flush(). You only get the platform end of line character if you're writing into a stream that's opened in text mode, which does \n translation.
06:10:24 <fizzie> Oh, that's exactly what you said.
06:10:45 <pikhq> fizzie: Yes.
06:10:53 <fizzie> Heh, I must have gotten confused since '\n' was already said; I thought you were complaining about that.
06:11:31 <fizzie> I guess it's true what they say about making assumptions; they make an ass out of you and... mptions?
06:16:30 -!- MissPiggy has joined.
06:16:31 -!- MissPiggy has quit (Changing host).
06:16:31 -!- MissPiggy has joined.
06:18:37 <oerjan> never make assumptions about asinine assassins
06:20:01 <MissPiggy> ah, albeit arbitrary aerjans advice absolutely agrees
06:21:42 <oerjan> meanwhile, MissPiggy misuses mischievous misspellings
06:21:43 <fizzie> oerjan: I shall assiduously assay to assimilate your assistance.
06:22:28 <fizzie> "aerjan" sounds like a pirate oerjan.
06:22:31 <fizzie> ARRR, you see.
06:23:31 <oerjan> still, a bit arrtificial
06:26:22 <Gregor> arrjan
06:27:47 <MissPiggy> check out this awesome iPod nano feature
06:27:53 <MissPiggy> You can apply a simple encryption to text, rendering it unrecognizable to the casual reader, by
06:27:58 <MissPiggy> placing it between <ROT13> and </ROT13> tags.
06:28:09 <MissPiggy> it can display text files ... IN ROT 13
06:28:55 <Gregor> ... wow.
06:29:01 <Gregor> The worst part is I'll bet you're not kidding.
06:29:27 * MissPiggy just copied rainbows end onto it, but it's unreadable
06:32:57 <MissPiggy> developer.apple.com/ipod/iPodNotesFeatureGuideCB.pdf
06:36:36 <MissPiggy> "Some presentations do not require the interactivity supported by the Notes feature. A public-service
06:36:40 <MissPiggy> announcement presentation or a guided tour through a single exhibit, for example, may not require
06:36:43 <MissPiggy> any branching or backing up."
06:36:53 <MissPiggy> ?? they are suggesting that someone might use iPod nano as a medium for public service announcements ???
06:45:04 <MissPiggy> "There is the older Tanka-style poem where you get two bonus lines (7 syllables each) to try to summarize all of existence. CREDITS"
06:52:54 -!- FireFly has joined.
07:01:52 <MissPiggy> "You can also configure the iPod to lock out everything but the Notes area; that way, viewers must start there. Called NotesOnly mode or Museum mode, it holds potential for museum curators, tour guides, or realtors interested in presenting facts about a painting, a historical center, or an overpriced property."
07:04:12 <Gregor> That makes perfect sense. The PSO thing above still confuses me :P
07:04:18 <Gregor> But that's not a PSO.
07:04:31 <MissPiggy> PSOX?
07:06:18 <Gregor> ...
07:06:20 <Gregor> Public
07:06:22 <Gregor> Service
07:06:27 <Gregor> Onnouncement :)
07:06:41 * Gregor ^H's a bit.
07:09:05 -!- tombom has joined.
07:11:27 <oerjan> Gregor: ah so that's where MissPiggy dumped my o
07:18:12 -!- coppro has quit (Quit: I am leaving. You are about to explode.).
07:18:18 -!- jcp has quit (Quit: I will do anything (almost) for a new router.).
07:20:17 -!- coppro has joined.
07:33:01 <MissPiggy> “Did you know that you can store and read
07:33:02 <MissPiggy> up to 1000 text notes with your iPod?“
07:33:36 <oerjan> heck no. i didn't even know i had an iPod.
07:33:41 <MissPiggy> XD
07:34:15 -!- coppro has quit (Remote host closed the connection).
07:34:27 <MissPiggy> Have you ever wanted to read the entire Bible? BiblePlayer makes this goal achievable by organizing your bible reading plans. Select the current month and date, and your day's readings are presented. Scroll and select a reading and Audio Bible Player will load and play that reading.
07:36:17 <Gregor> Have you ever wanted to read the deluded ramblings of some long-dead anonymous Jewish (and later, Christian, but let's face it, you won't actually get that far) guys?
07:41:35 <MissPiggy> "It is especially directed to readers whose intellectual tendencies cause them to question the validity of Jesus' claims."
07:42:16 <MissPiggy> http://www.podbible.org/Images/iPod1a.png
07:43:01 <pikhq> Gregor: I'm pretty sure anyone *vaguely* sane would stop by Numbers.
07:43:04 <Sgeo__> It's possible to translate Ruby to Python?!?
07:43:09 <fizzie> It's not always rambling; some parts are just Very Interesting(TM) genealogical listings.
07:43:11 <pikhq> ... Guess what it is? A book. Of numbers.
07:43:11 <fizzie> [14] These be the heads of their fathers' houses: The sons of Reuben the firstborn of Israel; Hanoch, and Pallu, Hezron, and Carmi: these be the families of Reuben.
07:43:12 <fizzie> [15] And the sons of Simeon; Jemuel, and Jamin, and Ohad, and Jachin, and Zohar, and Shaul the son of a Canaanitish woman: these are the families of Simeon.
07:43:12 <fizzie> [16] And these are the names of the sons of Levi according to their generations; Gershon, and Kohath, and Merari: and the years of the life of Levi were an hundred thirty and seven years.
07:43:12 <fizzie> [17] The sons of Gershon; Libni, and Shimi, according to their families.
07:43:15 <Sgeo__> I mean, I was thinking of that
07:43:15 <fizzie> And so on and so on.
07:43:18 <Sgeo__> But it's been done
07:43:22 <Sgeo__> http://github.com/whymirror/unholy
07:43:36 <fizzie> Admittedly the part of living 137 years is a bit suspicious.
07:43:49 <pikhq> fizzie: Oral history...
07:44:13 <pikhq> But WHAT SORT OF CRAZY PERSON WOULD STICK GENEALOGY IN ORAL HISTORY.
07:44:53 <oerjan> someone who couldn't write, and so had nowhere else to stick it
07:44:53 <fizzie> Oh yes, Numbers was the most boring one.
07:45:38 -!- kar8nga has joined.
07:46:56 <MissPiggy> Text may be sharp, but my aging eyes found it hell to try to read, even for menu choices and song titles. I’d have to pass on the nano just for this reason alone (putting aside that I really need 60GB minimum storage…).
07:47:08 <MissPiggy> what the hell is this guy doing with 60 GB storage..
07:47:27 <fizzie> And the GPS track logs of their wanderings!
07:47:30 <fizzie> [15] And they departed from Rephidim, and pitched in the wilderness of Sinai.
07:47:30 <fizzie> [16] And they removed from the desert of Sinai, and pitched at Kibroth-hattaavah.
07:47:30 <fizzie> [17] And they departed from Kibroth-hattaavah, and encamped at Hazeroth.
07:47:30 <fizzie> [18] And they departed from Hazeroth, and pitched in Rithmah.
07:47:40 <fizzie> Couldn't they have put that stuff in an appendix or something?
07:48:11 <fizzie> (There's about 50 consecutive lines of that.)
07:50:03 -!- tombom has quit (Quit: Leaving).
07:51:07 <pikhq> fizzie: The appendix hadn't been invented yet.
07:51:18 <pikhq> Nor had punctuation.
07:51:24 <pikhq> Or paragraphs.
07:51:46 <pikhq> Or good writing, for that matter.
07:52:29 <fizzie> Yes, well, they could have done some refactoring later, after those all had been invented.
07:54:23 <pikhq> "But but literal word of god!"
07:54:30 <pikhq> "To change would be blasphemy!"
07:54:43 -!- oerjan has quit (Quit: Good night).
07:59:01 -!- dev_squid has quit (Ping timeout: 264 seconds).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:22:51 -!- Sgeo_ has joined.
08:25:40 -!- Sgeo__ has quit (Ping timeout: 265 seconds).
08:33:35 -!- calamari has quit (Quit: Leaving).
08:38:26 -!- Gracenotes has joined.
08:43:53 -!- MigoMipo has joined.
09:42:04 -!- BeholdMyGlory has joined.
09:52:21 -!- scarf has joined.
11:10:25 -!- MizardX has joined.
11:14:32 -!- kar8nga has quit (Read error: Connection reset by peer).
11:14:48 -!- BeholdMyGlory has quit (Remote host closed the connection).
11:15:55 -!- scarf has quit (Ping timeout: 276 seconds).
11:24:28 -!- MigoMipo has quit (Remote host closed the connection).
11:34:19 -!- scarf has joined.
11:34:21 -!- scarf has quit (Changing host).
11:34:21 -!- scarf has joined.
12:15:52 -!- alise has joined.
12:17:46 <alise> scarf: http://search.cpan.org/~miyagawa/App-cpanminus-0.9911/lib/App/cpanminus.pm
12:17:53 <alise> A CPAN client that doesn't suck?!
12:17:58 * scarf looks
12:18:08 <scarf> also, I'm pretty sure a non-sucking CPAN client is theoretically possible
12:18:32 <alise> It's quiet, uses little RAM, and doesn't ask many questions apparently
12:18:40 <alise> [[Yeah, I think my brain has been damaged since I looked at PyPI, gemcutter, pip and rip. They're quite nice and I really wanted something as nice for CPAN which I love.]]
12:19:03 <alise> "I tested installing MojoMojo, Task::Kensho, KiokuDB, Catalyst, Jifty and Plack using cpanminus and the installations including dependencies were mostly successful."
12:19:27 <scarf> there is One True Test of this: seeing if it can handle installing TAEB
12:19:35 <alise> Go for it
12:19:52 <alise> "You should consider using cpanminus." —chromatic, big perl community guy
12:20:11 <scarf> the issue is I already have TAEB installed; I'd need to test it on a clean install to see if it worked
12:20:23 <scarf> hmm, let me try to run a virtualised knoppix or something like that
12:21:20 <alise> scarf: have /you/ read my apparently-very-whiny and completely flawed in every vway critique of files? :P
12:21:24 <alise> *way
12:21:25 <scarf> no, I haven't
12:21:27 <scarf> but I'm interested
12:21:30 <alise> http://catseye.tc/ehird/files-suck.html
12:21:38 <scarf> heh at the URL
12:21:49 <scarf> gah, that's narrow
12:21:59 <alise> 10 words per line. it's actually best
12:22:00 <alise> so thar
12:22:12 <alise> (backed up by studies and shizz :|)
12:22:15 * scarf loads in w3m
12:22:20 <alise> hey
12:22:25 <alise> I worked hard on making sure it had a vertical rhythm!
12:22:26 <alise> :P
12:22:28 <scarf> so your obnoxious styling doesn't affect my reading
12:23:15 <alise> “Anything from 45 to 75 characters is widely regarded as a satisfactory length of line for a single-column page set in a serifed text face in a text size. The 66-character line (counting both letters and spaces) is widely regarded as ideal. For multiple column work, a better average is 40 to 50 characters.”
12:23:28 <alise> hmm, apparently 66 chars is more like 33em
12:23:41 <Deewiant> 66ex?
12:24:05 <alise> an ex is not a character :P
12:24:11 <alise> anyway 66 chars ~= 10 words iirc
12:24:16 <scarf> alise: that's presumably a guide for printed text, that doesn't take into account vertical scrolling
12:24:26 <alise> scarf: oh i forgot you have no mousewheel
12:24:29 <alise> lol sucks to be you
12:24:31 <Deewiant> Oh darn, ex was height not width
12:24:39 <scarf> alise: I have three mousewheels
12:24:44 <alise> scarf: but none of them work, presumably
12:24:53 <scarf> actually, they're one of the few things that do
12:25:04 <scarf> but no, the pain is having to interact with the computer at all while I'm reading
12:25:13 <alise> also, you'll miss out on all my wonderful whiny-italics if you use w3m
12:25:18 <alise> at least just turn styles off in a graphical browser! :-P
12:25:20 <scarf> no I won't, it underlines instead
12:25:30 <alise> that is not the same :( :p
12:26:10 <alise> I'm quite disappointed that nobody's spotted my diæresis
12:26:27 <scarf> reëncode
12:26:30 <alise> oops, right next to it I have a ' in place of a ’
12:26:43 <alise> too busy thinking how cool I am for having a diæresis i guess :)
12:27:17 <scarf> alise: your comments about representation reminded me of something I'm doing in RL
12:27:18 <Deewiant> I'm so used to them that I didn't really realize it was special
12:27:33 <scarf> I was explaining to a non-programmer the difference between communication formats and formats you actually operate on
12:27:38 <alise> Deewiant: What? Nobody uses the diæresis!
12:27:44 <scarf> PNG is a good format for transmitting an image file to someone else, but it's a bad format for storage in memor
12:27:46 <scarf> *memory
12:27:52 <Deewiant> alise: I use them whenever I remember to
12:28:01 <scarf> and presumably, the argument to make is that in-memory formats are better for storing on a disk than communication formats
12:28:15 <Deewiant> And whenever it's not a bad idea
12:28:17 <scarf> (On the other hand, compressed formats take up less disk space...)
12:28:24 <alise> Deewiant: Where is it a bad idea?
12:28:34 <alise> scarf: It, of course, depends on the use case.
12:28:38 <scarf> yes
12:28:53 <scarf> certainly, uncompressed XML is a bad format to store files in
12:29:03 <scarf> it may be an ideal format for communicating them, but not for storage
12:29:11 <alise> http://codu.org/rxml.php
12:29:16 <Deewiant> alise: With English teachers who don't like that kind of trickery, or people who aren't good enough at English to be anything other than confused by it
12:29:21 <alise> I DISAGREE STRONGLY ^_^
12:29:33 <alise> Deewiant: Trickery? Bah! Beats the unsightly -.
12:29:42 <scarf> alise: I suspect Gregor was joking in that page
12:29:46 <alise> And "reencode" just looks really awkward, like "noone".
12:29:53 <alise> noöne
12:30:01 <Deewiant> nobody ;-P
12:30:07 <alise> Well, yeah.
12:30:16 <scarf> gah, swapping mouse buttons is really inconsistent
12:30:22 <scarf> for instance, it swaps on mice but not on the touchpad
12:30:30 <alise> hmm... what if you have a ü or similar non-English letter, and it should have a diaresis?
12:30:33 <scarf> also, the buttons don't seem to be swapped inside (k)qemu
12:30:34 <alise> or even é
12:30:41 <alise> *diæresis
12:30:53 <Deewiant> Then you don't diaeresize it
12:30:58 <scarf> just use ü̈
12:30:59 <alise> üü :-)
12:31:02 <alise> é¨é
12:31:08 <alise> the latter needs to be a combining char :/
12:31:19 <scarf> é̈
12:31:20 <MissPiggy> http://www.youtube.com/watch?v=S2XwN_oQ_Yo OBABO talks to SPACE
12:31:24 <alise> scarf: beautiful
12:31:40 <Deewiant> >_̈<
12:31:59 <scarf> alise: it renders rather badly in this client
12:32:01 <alise> Obama loves the word guys
12:32:03 <alise> scarf: ditto :-D
12:32:23 <Deewiant> Thought it was just a normal ë at a glance
12:33:19 <scarf> what's the package manager on knoppix?
12:33:26 <scarf> I threw up a VM, in order to test CPANMINUS
12:33:28 <alise> it has none
12:33:32 <alise> it's based on debian
12:33:33 <alise> maybe it has apt-get
12:33:37 <alise> but it probably won't work
12:33:40 <alise> knoppix "includes everything"
12:33:54 <scarf> and happened to use the ICFP2008 iso, as I had it handy
12:33:55 <alise> it is the lamest of linux distros :P
12:34:27 <scarf> it has apt-get, yes
12:34:32 <alise> 18:08:43 * Sgeo__ is considering running back to his beloved Python
12:34:32 <alise> Python's shit too :)
12:34:43 <scarf> and sudo works without a password, which is handy due to me having no idea what the password should be otherwise
12:35:24 <scarf> however, it was trying to use debian.uchicago.edu as a repo, and failed
12:35:37 <alise> just use an ubuntu livecd or sth :P
12:35:46 <scarf> ah, isn't online
12:36:51 <alise> 19:36:02 <Gregor> Strawberry shortcake is DEFINITELY a kind of pizza by your definition.
12:36:51 <alise> i lol'd irl. qrx dns
12:37:07 <alise> (19:36:53 <uorygl> I'm getting the idea that my cuisine is strictly inferior to yours.)
12:38:01 <alise> 19:43:27 <oerjan> wait, you are actually in norway?
12:38:02 <alise> oerjan is just desperate for a friend
12:40:33 <scarf> hmm, kqemu is rather slow on a netbook
12:40:48 <scarf> either that, or knoppix is, but I'm guessing it's the emulation that's causing the issues
12:40:57 <alise> no virtualisation
12:41:02 <alise> so it's emulating
12:41:07 <scarf> kqemu virtualises to some extent
12:41:12 <alise> yes, but your CPU can't
12:41:14 <alise> almost certainly
12:41:15 <scarf> ah
12:41:19 <alise> what cpu is it?
12:41:27 <scarf> one of those ultra-low-power ones
12:41:34 <alise> that ULV stuff?
12:41:43 <scarf> which is handy, because I've been running this on the battery for around 3 hours already
12:41:55 <alise> Intel® Virtualization Technology (VT-x)Yes
12:41:55 <alise> for core 2 solo ULV SU3500
12:42:09 <alise> either you have a different cpu or it's actually just really slow
12:42:16 <alise> also, wow 3 hours :P
12:42:44 <scarf> mine's a U2700
12:42:54 <alise> you get core 2 duos on a 17" 1920x1200 screen and ~7 hours of battery life if you're not stressing it on the macbook pros... they /did/ patent the battery technology though :P
12:43:00 <alise> damn patents!
12:43:44 <alise> scarf: huh it's a pentium (apparently)
12:43:49 <alise> no relation to the pentium line tho
12:43:54 <alise> Intel® Virtualization Technology (VT-x)No
12:43:55 <scarf> alise: it has the pentium trademark on it
12:43:56 <alise> No virtualisation.
12:44:06 <scarf> "intel Pentium inside"
12:44:06 <alise> LOL SUX 2 B U
12:44:33 <scarf> not really, it's fast enough for most things, even large compiles of C++ programs
12:44:39 <scarf> even if I have to do something else while it's compiling
12:45:25 <alise> I freak out every time a computer slows down, so I couldn't really work with a low-spec machine
12:45:36 <alise> It's like I go into "BE CAREFUL IT MIGHT FREEZE" mode.
12:45:45 <scarf> oh, I only freak out when it starts swapping
12:45:51 <alise> Anyway anything can compile C++, more or less
12:45:54 <alise> Nowadays at least
12:46:01 <alise> I bet even an Atom could, albeit slowly
12:46:03 <scarf> my standard response to that nowadays is to kill X, but I haven't had to do that for months
12:46:15 <scarf> (when I do, it's normally because I wrote a program which has a memory leak in a tight loop)
12:46:20 <alise> i've had even ctrl+alt+fN freeze before :(
12:46:28 <scarf> same, killing X is more reliable
12:46:33 <alise> how?
12:46:42 <alise> if ctrl+alt+fN don't work ctrl+alt+backspace doesn't either
12:46:46 <scarf> because, it's at the stage where it's only processing one keystroke every half-hour
12:46:49 <scarf> both work, eventually
12:46:51 <alise> reisub probably would but i never bothered trying
12:46:55 <alise> easier to just punch reboot :p
12:46:56 <scarf> so you want to use the one that kills the program you're running
12:47:09 <alise> scarf: well I don't want to wait half an hour
12:47:10 <scarf> (hmm, what about the SAK, i.e. alt-sysrq-k?)
12:47:41 <alise> also it shouldn't matter if it crashes because i can just reboot and all my work will have been persisted ages before :D
12:47:51 <alise> IT WILL NOT DIE
12:48:21 <scarf> anyway, I've decided to have really ambitious requirements for my version control system
12:48:36 <scarf> it should be able to have exact equivalents (not just approximates) for everything in git, hg, and darcs
12:48:48 <scarf> also, it should only have 5 commands (you can have more as abbreviations, but everything can be done in terms of those)
12:49:14 <scarf> yet, I think it's possible
12:49:22 <alise> well, we're ignoring remote push/pull presumably as they're irrelevant to the actual vcs
12:49:26 <scarf> as a bonus, the design I'm currently thinking about can do what rsync does as well
12:49:29 <alise> so you need
12:49:37 <scarf> alise: I'm assuming that they can be implemented the same way as local push/pull
12:49:38 <alise> some sort of thing to record changes, some sort of thing to merge two repositories
12:49:43 <alise> so I say 4 commands
12:49:54 <alise> two _essential_ ones, and then two ones to keep things running
12:49:58 <scarf> alise: reverts?
12:50:08 <alise> merge with a previous version of the repository, duh
12:50:19 <scarf> merge won't do, there
12:50:24 <alise> also, there should be no "options" significantly changing how a command works; if you want to commit some files but not add another one, you list every file but one in the commit
12:50:28 <alise> (obviously you can have sugar on top)
12:50:36 <alise> scarf: merge and always use the previous version
12:50:52 <alise> then commit all files but the ones that were deleted in the previous version
12:50:54 <alise> voila
12:51:16 <scarf> anyway, I'll talk more later, but I have to change connection
12:51:18 <scarf> bye everyone
12:51:24 -!- scarf has quit (Read error: Connection reset by peer).
12:51:24 <alise> bye
13:34:35 -!- asiekierka has joined.
13:34:38 <asiekierka> hi
13:34:39 <asiekierka> `ls
13:34:46 <HackEgo> bin \ cube2.base64 \ cube2.jpg \ help.txt \ huh \ netcat-0.7.1 \ netcat-0.7.1.tar.gz \ paste \ poetry.txt \ quotes \ share \ test.sh \ tmpdir.25461 \ wunderbar_emporium \ wunderbar_emporium-3.tgz \ wunderbar_emporium-3.tgz.1
13:35:06 <MissPiggy> `ls
13:35:07 <HackEgo> bin \ cube2.base64 \ cube2.jpg \ help.txt \ huh \ netcat-0.7.1 \ netcat-0.7.1.tar.gz \ paste \ poetry.txt \ quotes \ share \ test.sh \ tmpdir.25504 \ wunderbar_emporium \ wunderbar_emporium-3.tgz \ wunderbar_emporium-3.tgz.1
13:35:26 <MissPiggy> `echo assquerka > hello.txt
13:35:28 <HackEgo> assquerka > hello.txt
13:35:34 <MissPiggy> -_-
13:35:56 <fizzie> You probably want to `run that; wasn't that the way to get full shell parsing there?
13:36:07 <MissPiggy> `sh "echo assquerka > hello.txt"
13:36:09 <HackEgo> No output.
13:36:12 <MissPiggy> `cat hello.txtx
13:36:14 <HackEgo> No output.
13:36:14 <MissPiggy> `cat hello.txt
13:36:16 <HackEgo> No output.
13:37:21 <fizzie> That should presumably be something like sh -c there, if you want to do it like that.
13:37:51 <fizzie> Aw, help.txt is not exactly helpful.
13:38:06 <MissPiggy> wowowowo
13:38:17 <MissPiggy> `$ENV
13:38:18 <HackEgo> No output.
13:38:21 <MissPiggy> `echo $ENV
13:38:22 <HackEgo> $ENV
13:38:33 <asiekierka> `run echo $ENV
13:38:34 <HackEgo> No output.
13:38:45 <asiekierka> `ls
13:38:47 <HackEgo> bin \ cube2.base64 \ cube2.jpg \ help.txt \ huh \ netcat-0.7.1 \ netcat-0.7.1.tar.gz \ paste \ poetry.txt \ quotes \ share \ test.sh \ tmpdir.25915 \ wunderbar_emporium \ wunderbar_emporium-3.tgz \ wunderbar_emporium-3.tgz.1
13:38:51 <asiekierka> `run sh "echo assquerka > hello.txt"
13:38:53 <HackEgo> No output.
13:38:55 <asiekierka> `ls
13:38:56 <HackEgo> bin \ cube2.base64 \ cube2.jpg \ help.txt \ huh \ netcat-0.7.1 \ netcat-0.7.1.tar.gz \ paste \ poetry.txt \ quotes \ share \ test.sh \ tmpdir.26000 \ wunderbar_emporium \ wunderbar_emporium-3.tgz \ wunderbar_emporium-3.tgz.1
13:38:59 <asiekierka> :((
13:39:17 <fizzie> Again, sh wants a -c if you want it to take a command as an argument.
13:39:26 <asiekierka> `run sh -c "echo assquerka > hello.txt"
13:39:28 <HackEgo> No output.
13:39:30 <asiekierka> `ls
13:39:31 <HackEgo> bin \ cube2.base64 \ cube2.jpg \ hello.txt \ help.txt \ huh \ netcat-0.7.1 \ netcat-0.7.1.tar.gz \ paste \ poetry.txt \ quotes \ share \ test.sh \ tmpdir.26151 \ wunderbar_emporium \ wunderbar_emporium-3.tgz \ wunderbar_emporium-3.tgz.1
13:39:37 <asiekierka> `run cat hello.txt
13:39:39 <HackEgo> assquerka
13:39:41 <asiekierka> :D
13:39:45 <fizzie> "Yay."
13:40:00 <asiekierka> `run sh -c "echo Yay. > fizzie"
13:40:01 <HackEgo> No output.
13:40:02 <asiekierka> `ls
13:40:13 <HackEgo> bin \ cube2.base64 \ cube2.jpg \ hello.txt \ help.txt \ huh \ netcat-0.7.1 \ netcat-0.7.1.tar.gz \ paste \ poetry.txt \ quotes \ share \ test.sh \ tmpdir.26297 \ wunderbar_emporium \ wunderbar_emporium-3.tgz \ wunderbar_emporium-3.tgz.1
13:42:10 <fizzie> Hah, someone seriously wrote that cube2 in there with repeated `run echo "[base64 stuff here]" >> nonsense. That's... silly.
13:42:11 <MissPiggy> `touch me
13:42:13 <HackEgo> No output.
13:42:13 <MissPiggy> `ls
13:42:15 <HackEgo> bin \ cube2.base64 \ cube2.jpg \ fizzie \ hello.txt \ help.txt \ huh \ netcat-0.7.1 \ netcat-0.7.1.tar.gz \ paste \ poetry.txt \ quotes \ share \ test.sh \ tmpdir.26419 \ wunderbar_emporium \ wunderbar_emporium-3.tgz \ wunderbar_emporium-3.tgz.1
13:43:00 <MissPiggy> `cat cube2.base64
13:43:01 <HackEgo> /9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAASUkqAAgAAAAAAAAAAAD/2wBDAAgGBgcGBQgH \ BwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/ \ 2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy \ MjIyMjIyMjIyMjL/wAARCAF3AfQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF
13:43:10 <asiekierka> (it cuts output)
13:43:26 <fizzie> The web-browser view is a lot easier for file-browsing.
13:43:37 <fizzie> `rm fizzie
13:43:39 <HackEgo> No output.
13:43:45 <fizzie> In any case, I don't want to be highlighted on every `ls.
13:45:15 <fizzie> Probably should've reverted instead, but I can't quite remember the revision-specifying syntax for that.
13:45:58 <asiekierka> `ls
13:45:59 <HackEgo> bin \ cube2.base64 \ cube2.jpg \ hello.txt \ help.txt \ huh \ me \ netcat-0.7.1 \ netcat-0.7.1.tar.gz \ paste \ poetry.txt \ quotes \ share \ test.sh \ tmpdir.26564 \ wunderbar_emporium \ wunderbar_emporium-3.tgz \ wunderbar_emporium-3.tgz.1
13:46:01 <asiekierka> `help
13:46:02 <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/
13:46:18 <asiekierka> `revert 26419
13:46:19 <HackEgo> Done.
13:46:22 <asiekierka> `ls
13:46:23 <HackEgo> bin \ cube2.base64 \ cube2.jpg \ hello.txt \ help.txt \ huh \ me \ netcat-0.7.1 \ netcat-0.7.1.tar.gz \ paste \ poetry.txt \ quotes \ share \ test.sh \ tmpdir.26693 \ wunderbar_emporium \ wunderbar_emporium-3.tgz \ wunderbar_emporium-3.tgz.1
13:46:29 <asiekierka> That didn't help
13:47:05 <fizzie> `revert 1431
13:47:08 <HackEgo> Done.
13:48:15 <alise> Revert your mother.
13:48:20 <fizzie> That seems reasonable, it got rid of me and "me".
13:48:39 <alise> 24 hoursHackBot<asiekierka> fetch http://www.securityfocus.com/data/vulnerabilities/exploits/wunderbar_emporium-3.tgz
13:48:39 <alise> lol?
13:49:12 <fizzie> It did not quite work out, I guess.
13:50:13 <alise> kiddie
13:51:04 <fizzie> One could consider going backwards to 1424 to clean things up a bit.
13:53:03 <alise> what is cube2.base64?
13:53:12 <alise> `run wc -c cube2.base64
13:53:14 <HackEgo> 61187 cube2.base64
13:53:16 <alise> someone decode it :P
13:53:24 <alise> ah
13:53:24 <alise> <Lil`Cube> run cat cube2.base64 | base64 -d > cube2.jpg
13:54:17 <fizzie> It seems to be a way of getting a mediocre excuse for pasting a lot of base64 text on IRC.
13:54:30 <alise> `run y(){mkdir $RANDOM; y};x(){y|x&};x
13:54:32 <HackEgo> No output.
13:54:38 <alise> that was uncannily quick :D
13:54:44 <alise> `run y(){mkdir $RANDOM; y};x(){y;x|x&};x
13:54:45 <HackEgo> No output.
13:55:56 <MissPiggy> `run tits
13:55:58 <HackEgo> No output.
13:56:03 <MissPiggy> `No output
13:56:04 <HackEgo> No output.
13:57:08 <fizzie> That's almost a HackEgo quine.
13:57:18 <fizzie> (A boring one.)
13:57:26 <MissPiggy> Almost boring !
13:57:58 -!- BeholdMyGlory has joined.
13:58:11 <fizzie> I've always been a bit surprised that $RANDOM has such a common name. I wonder how many shell script authors have done "RANDOM=x" and later been bitten by the contents of $RANDOM.
14:02:41 -!- scarf has joined.
14:04:19 <asiekierka> it's a scarf
14:04:20 <asiekierka> a scaarf
14:05:45 <alise> wear it around your neck.
14:06:19 <alise> fizzie: dot is the best thing for drawing graphygraphs isn't it
14:06:22 <alise> say yes
14:07:24 <alise> actually i can't tell which i want :D
14:08:19 <scarf> <yellowstuff> I'm a little worried that sudoku getting even brief attention from Knuth and Peter Norvig may be a greater waste of human intelligence than the combined loss from everyone trying to solve them manually.
14:08:47 <alise> :D
14:08:48 <asiekierka> `run test.sh
14:08:49 <HackEgo> No output.
14:09:15 <scarf> `define salmiak
14:09:18 <HackEgo> * Salty liquorice, salmiak or salmiakki is a variety of liquorice (confectionery) that contains a relatively large amount of ammonium chloride ... \ [13]en.wikipedia.org/wiki/Salmiak \
14:11:26 <asiekierka> `define HackEgo
14:11:28 <HackEgo> No output.
14:13:00 <MissPiggy> `run lisp
14:13:01 <HackEgo> No output.
14:13:15 <MissPiggy> `run please, a program that prints "No output"
14:13:16 <HackEgo> No output.
14:13:18 <MissPiggy> it does IRP too!
14:13:26 <asiekierka> haha
14:13:33 <asiekierka> well, it doesn't
14:13:41 <scarf> MissPiggy: that's sort-of a Kimian quine
14:13:47 <scarf> except not a quine
14:13:50 <scarf> just a Kimian execution
14:13:52 <scarf> ^ul .
14:13:53 <fungot> ...bad insn!
14:13:58 <scarf> ^ul ...bad insn!
14:13:58 <fungot> ...bad insn!
14:14:02 <MissPiggy> what's kimian?
14:14:08 <scarf> MissPiggy: like that Underload quine I just saw
14:14:16 <scarf> you have the program be equal to one of the interp's error messages
14:14:22 <MissPiggy> ahah
14:14:26 <scarf> in such a way, that the error message causes itself
14:14:51 <MissPiggy> `bf [+]
14:14:52 <HackEgo> No output.
14:14:59 <asiekierka> `bf +[]
14:15:00 <scarf> it's possible in many languages, but rather depends on the details of the interp
14:15:00 <HackEgo> No output.
14:15:01 <MissPiggy> !bf_txtgen No output.
14:15:15 <EgoBot> 95 +++++++++++[>+++++++>++++++++++>+++>+<<<<-]>+.>+.>-.<.++++++.-.----.+++++.-.>++++++++++++++.>-. [711]
14:15:22 <MissPiggy> `bf +++++++++++[>+++++++>++++++++++>+++>+<<<<-]>+.>+.>-.<.++++++.-.----.+++++.-.>++++++++++++++.>-.
14:15:23 <HackEgo> No output.
14:15:38 <asiekierka> `bf [+.]
14:15:39 <HackEgo> No output.
14:15:42 <asiekierka> `bf +[+.]
14:15:43 <HackEgo> No output.
14:15:54 <asiekierka> `help
14:15:55 <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/
14:16:02 <asiekierka> `run cd bin && ls
14:16:03 <HackEgo> ? \ addquote \ calc \ commands \ creatures \ define \ esolang \ etymology \ fortune \ google \ helpme \ imdb \ karma \ minifind \ paste \ ping \ quote \ rec \ runfor \ sayhi \ strfile \ swedish \ toutf8 \ translate \ translatefromto \ translateto \ unstr \ url \ wolfram
14:16:11 <asiekierka> `run cd /bin && ls
14:16:11 <scarf> `bf isn't actually a HackEgo command
14:16:13 <HackEgo> bash \ bunzip2 \ bzcat \ bzcmp \ bzdiff \ bzegrep \ bzexe \ bzfgrep \ bzgrep \ bzip2 \ bzip2recover \ bzless \ bzmore \ cat \ chgrp \ chmod \ chown \ cp \ cpio \ date \ dd \ df \ dir \ dmesg \ dnsdomainname \ domainname \ echo \ ed \ egrep \ false \ fgrep \ grep \ gunzip \ gzexe \ gzip \ hostname \ ip \ kill \ less \ lessecho
14:16:22 <asiekierka> scarf: you mean not yet
14:16:22 <scarf> also, cpio? /why/?
14:16:22 <HackEgo> No output.
14:16:28 <MissPiggy> `fungot style
14:16:29 <fungot> MissPiggy: they say that you should always be marked `caution: trap door there may be reproduced, stored in a great hunter, few gods can match his fury. unlike the older race of the ring, by michael jordan)
14:16:29 <HackEgo> No output.
14:16:49 <scarf> ^style
14:16:49 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc jargon lovecraft nethack* pa speeches ss wp youtube
14:16:59 <scarf> I like this fungot style
14:16:59 <fungot> scarf: they say that there are that your wand explodes as you bound across the cold of winter. the christian calendar adopted the same size? salmon gets thinner at both ends." the archchancellor leaned towards him.
14:17:08 <alise> fizzie: you know dot and stuff don't you? can you have multiple nodes with the same value (say yes)
14:17:21 * scarf wonders if "salmon gets thinner at both ends" is a literal quote, I'll grep the NetHack source
14:18:01 <MissPiggy> I want to understand 4D :(
14:18:07 <scarf> yes, it is
14:18:08 <asiekierka> ^style c64
14:18:09 <fungot> Selected style: c64 (C64 programming material)
14:18:12 <asiekierka> fungot: Hello!
14:18:12 <fungot> asiekierka: multicolor sprites 53276 ( d01c). bits 0-7 of memory are used.
14:18:20 <asiekierka> fungot: How do you hax the c64 man
14:18:21 <fungot> asiekierka: preparatory routines: none note: might be plugged into the accumulator. to create a
14:18:21 <scarf> it's a quote from Terry Pratchett
14:18:22 <MissPiggy> do't you think if you were born 4D you could understand it no problem
14:18:27 <MissPiggy> it's just a matter of learning
14:18:40 <asiekierka> fungot: Do you like this scarf over here? ->
14:18:41 <fungot> asiekierka: 400 next l ( cp/ m(r) 1000 ( hex). if the numeric argument, any computer for everything from lightpens and joysticks to disk drives, printers, and then redefine a particular sprite by means of plug-in expansion cartridges which are the only difference is in a program to display characters on the joystick in controller port 2 to a 1 based on the serial ports.
14:18:42 <MissPiggy> maybe 7D would be easier than 4?
14:18:44 <MissPiggy> hmmmm
14:18:57 <asiekierka> fungot: multicolor
14:18:58 <fungot> asiekierka: 10 get junk: if peek(v+30)andx=xthen insert action here.
14:19:04 <scarf> MissPiggy: 4 is a special case of 7
14:19:06 <asiekierka> ^style
14:19:06 <fungot> Available: agora alice c64* ct darwin discworld europarl ff7 fisher ic irc jargon lovecraft nethack pa speeches ss wp youtube
14:19:11 <asiekierka> $style youtube
14:19:13 <asiekierka> ^style youtube
14:19:13 <fungot> Selected style: youtube (Some YouTube comments)
14:19:15 <alise> MissPiggy: we don't have a 4d spatial universe though
14:19:21 <asiekierka> oh yes, i remember when I was preparing the youtube style
14:19:23 <asiekierka> fungot: ALISE
14:19:24 <alise> so we have no way to relate 4d :: things we experience
14:19:37 <asiekierka> fungot: Hello?
14:19:43 <asiekierka> Did I break fungot?
14:19:57 <scarf> asiekierka: no, it just ignores people spamming it
14:20:07 <scarf> other people will be able to use it just fine
14:20:14 <asiekierka> fungot: Hello
14:20:21 -!- asiekierka has changed nick to mytheory.
14:20:22 <mytheory> fungot: Hello
14:20:23 <fungot> mytheory: what the fuck!! the crystal ball thru the vending machine was the second time, some bastard knows who he is on valkyr. the best 4ever!! britain's really got tallent! what
14:20:25 -!- mytheory has changed nick to asiekierka.
14:20:40 <scarf> ugh, youtube comments can be really stupid sometimes
14:20:49 -!- asiekierka has changed nick to mypeory.
14:20:57 <scarf> also, I never figured out what order they were in
14:21:00 <alise> Britain's Really Got Tallent
14:21:01 <MissPiggy> fungort
14:21:02 <MissPiggy> fungot
14:21:03 <fungot> MissPiggy: u rock dudette! plus he's hot :) the way! i like
14:21:07 <MissPiggy> :)
14:21:08 <mypeory> fungot: Give me a scarf
14:21:09 <fungot> mypeory: hi climbdatowerofpower. i get from it without the cod title on it hard to fiqure out what going to do something dumb place to have a custom pc, a eto illusia.
14:21:16 <mypeory> I should update it one day
14:21:19 <mypeory> it was 500kb of comments
14:21:21 -!- mypeory has changed nick to asiekierka.
14:21:33 <asiekierka> i wanted to make it 1MB
14:21:33 <scarf> tbh, you don't need to Markov youtube comments, they're just as meaningless before and after
14:21:40 <asiekierka> nah
14:21:43 <scarf> you get some intelligent ones sometimes, but they're the exception
14:21:46 <asiekierka> i just wanted a youtube comment generator
14:22:26 <asiekierka> i just can't remember where i had it
14:22:28 <asiekierka> gotta look for sed
14:22:30 <asiekierka> it's the same dir
14:26:03 <alise> so I had an idea
14:26:04 -!- scarf has quit (Ping timeout: 240 seconds).
14:26:09 <alise> a blend of zoom ui/graph traversing
14:26:18 <MissPiggy> alise, what o you think of 4D?
14:26:21 <alise> you have a graph laid out primarily vertically and each node down you go
14:26:24 <alise> it gets smaller
14:26:33 <alise> and choosing one path will make that the biggest and zoom in on it
14:26:39 <alise> to show its "children" in a sense
14:26:43 <alise> MissPiggy: /shrug
14:26:46 <alise> dimensions are cool.
14:27:01 <MissPiggy> 4
14:27:04 <MissPiggy> or 7
14:27:39 <alise> 90
14:27:41 <alise> 7
14:27:47 <alise> 7 because 4 is explored enough already
14:28:05 <MissPiggy> alise, my assumption is that with enough immersion you could understand 7D as well as 3D
14:28:22 <alise> i disagree because the universe is spatially 3d so we understand 3d because we live 3d every single second
14:28:34 <alise> 2d is a subset, we can do 2d stuff on paper, so we can understand it
14:28:38 <alise> >3d not so much.
14:28:42 <MissPiggy> if you lived 7D just as much you could understand it as well
14:28:50 <alise> you can't live 7d
14:28:51 -!- ais523 has joined.
14:28:53 <alise> space doesn't have enough dimensions
14:28:55 <MissPiggy> if you just spent one hour in 7D you could get a good intuition
14:28:58 -!- ais523 has quit (Changing host).
14:28:58 -!- ais523 has joined.
14:28:58 -!- ais523 has quit (Changing host).
14:28:58 -!- ais523 has joined.
14:29:08 <ais523> that was bizarre
14:29:20 <alise> MissPiggy: you /can't/ spend one hour in 7d
14:29:21 <ais523> the computer turned itself off for no apparent reason
14:29:42 <ais523> then I turned it on again, and it did a fsck then turned itself off for no apparent reason again
14:30:10 <asiekierka> OLD NICK TIME
14:30:11 <asiekierka> anyway
14:30:13 <alise> it just wants some rest
14:30:50 <asiekierka> We live in 3D and what we move in is 4D, the 4th dimension being the line of time. We can control the first, second and third dimension, but we move in the 4th dimension outside our control
14:31:04 <asiekierka> Living in 4D would mean we move uncontrollably in 5D, but we can control the first 4 dimensions
14:31:07 <ais523> now it's booted and seems to be working normally
14:31:17 <alise> asiekierka: Congratulations Einstein you discovered the most trivial thing ever.
14:31:19 * ais523 decides not to mess around with kqemu for a while
14:31:44 <asiekierka> I love discovering the most trivial things ever
14:32:08 -!- scarf has joined.
14:32:24 -!- sebbu has quit (*.net *.split).
14:33:42 <asiekierka> good, found them
14:33:46 <MissPiggy> hi
14:34:24 <asiekierka> apparently the newest version is q7.txt
14:34:27 <asiekierka> weighing at 492 kilos
14:34:36 <asiekierka> :D
14:36:49 <alise> Sigh — Perl's GraphViz module can't output PDFs.
14:36:54 -!- sebbu has joined.
14:37:00 <scarf> alise: what about indirectly?
14:37:06 <scarf> this is Perl, there's probably some way
14:37:24 <alise> CBA; instead, I'll use as_text to print the totally rendered form, and pipe it to dot or whatever
14:37:57 <MissPiggy> dogt
14:38:09 <MissPiggy> I want to understand 7D
14:38:12 <alise> perl diag.pl | dot -Tpdf -o diag.pdf
14:38:42 <MissPiggy> imagine how much better life would be if we lived in 7D
14:40:14 <alise> ok so i need shorthand for $g->add_node(label => 'foo'), say node('foo')
14:40:25 <alise> and I need shorthand for $g->add_edge(a => b), say edge(a => b)
14:40:45 <scarf> <Jafet> I can implement nethack in hq9+n.
14:40:55 <alise> :D
14:41:08 <alise> does shift => shift have a defined evaluation order in perl? I guess not
14:41:23 <scarf> alise: Perl5 isn't defined at all, except by the reference implementation
14:41:29 <alise> you know what i mean :|
14:41:34 <scarf> anyway, it probably does, because => is syntactic sugar for comma
14:41:39 <MissPiggy> alise why is the world 3D
14:41:44 <alise> scarf: :-D
14:41:45 <scarf> besides, the evaluation order doesn't matter anyway, as that probably parses as 'shift' => shift
14:41:49 <alise> darn
14:41:59 <alise> MissPiggy: why is the world quantum
14:42:01 <alise> it just is
14:42:05 <MissPiggy> no
14:42:08 <MissPiggy> there must be a reason
14:42:12 <MissPiggy> and not anthropic principle
14:42:15 <alise> no, that's religious thinking
14:42:22 <MissPiggy> you're moms religious
14:42:36 <alise> 3d + 1 time d is the only "real" dimension, we have a mathematical model of it and if we tweak parameters we get some random other mathematical models that we find make sense in some way
14:42:39 <alise> it's all just models
14:42:52 <MissPiggy> 3D is real ehird
14:42:55 <MissPiggy> just admit it
14:42:55 <alise> scarf: Darn I actually need sugar for "my $foo = func(label => 'foo')"
14:43:00 <alise> MissPiggy: yes, it is.
14:43:07 <scarf> alise: it's Perl, you can sugar what you like
14:43:15 <alise> scarf: but how :|
14:43:18 <scarf> although with "my", it's a little tricky
14:43:27 <scarf> you'd probably have to directly inject lexicals into the symbol table or something stupid like that
14:43:32 <alise> basically I'm abusing perl to use it as a glorified graphviz input format
14:43:34 <alise> because DOT sux
14:43:35 <MissPiggy> in 7D normal art would be 6 or 7D
14:43:38 <alise> scarf: :D how
14:43:51 <scarf> alise: I'm not entirely sure; ##perl would probably know
14:43:53 <MissPiggy> doing human style 3D sculpture would be considered minimalist and restrictive like haiku
14:43:56 <scarf> I can do it with globals, but not lexicals
14:44:00 <alise> scarf: darn
14:44:04 <alise> scarf: oh globals is fine
14:44:06 <alise> absolutely fine
14:44:24 <alise> can I even have it so that if I do "$foo = func('x')" it doesn't assign $x? :-D
14:45:51 <scarf> if you write «*{"${caller}::$var"} = sub { ... }» in a function, then it creates a subroutine called whatever's in $var in the context of its caller
14:46:05 <alise> but that's a subroutine
14:46:24 <scarf> you can do the same with variables: «*{"${caller}::$var"} = \$x» makes the variable called $ followed by the value of $var in the context of the caller into the same variable as $x in the current scope
14:46:37 <scarf> as in, hardlink-style
14:46:41 <alise> x_x
14:46:43 <alise> what if the scope exists
14:46:45 <alise> *exits
14:46:54 <scarf> that's the joys of refcounting
14:47:00 <scarf> variables can outlive their scope in Perl
14:47:07 <alise> I'm not sure all of this just to avoid
14:47:11 <alise> my $usys = node('usys')
14:47:14 <alise> is rational :D
14:47:17 <scarf> the variable still belongs to the scope it was historically in, even if that scope no longer exists
14:47:26 <alise> I will need to do my $x86_64 = node('x86-64') at the very list
14:47:28 <alise> *least
14:47:39 <alise> scarf: So how do you detect if your caller is assigning a variable of its own?
14:48:00 <scarf> hmm, in Perl5 that's tricky because the variable doesn't exist until after the function call
14:48:03 <scarf> oh, of course
14:48:06 <scarf> you can use context tricks
14:48:14 <scarf> you're being called in scalar context if it's $foo=func('x')
14:48:14 <alise> :D
14:48:19 <scarf> and void context if it's just func('x'
14:48:22 <scarf> *func('x')
14:48:24 <alise> how can you tell?
14:48:52 <scarf> the value of wantarray is undefined in void context, and some other false value in scalar context
14:49:05 <scarf> so you can specifically check if it's defined or not
14:49:26 <alise> node 'usys';
14:49:26 <alise> node 'hw';
14:49:26 <alise> edge $usys => $hw;
14:49:27 <alise> node 'cpu';
14:49:27 <alise> edge $hw => $cpu;
14:49:27 <alise> ↑ I foresee this becoming tedious
14:49:42 <scarf> node qw/usys hw cpu/;
14:49:46 <alise> Global symbol "$caller" requires explicit package name at diag.pl line 12.
14:49:46 <alise> Global symbol "$usys" requires explicit package name at diag.pl line 23.
14:49:47 <alise> Global symbol "$hw" requires explicit package name at diag.pl line 23.
14:49:47 <alise> Global symbol "$hw" requires explicit package name at diag.pl line 25.
14:49:47 <alise> Global symbol "$cpu" requires explicit package name at diag.pl line 25.
14:49:50 <alise> lol fuq me.
14:49:53 <alise> :|
14:50:00 <alise> scarf: nice
14:50:01 <scarf> err, what's with the $ before caller?
14:50:08 <alise> you told me to
14:50:11 <alise> *{"${caller}::$name"} = \$id;
14:50:24 <scarf> hmm... that looks correct
14:50:42 <scarf> oh, I defined my $caller = caller earlier
14:50:45 <scarf> and forgot to tell you
14:50:47 <alise> lol
14:50:51 <alise> will just {caller} work :-D
14:50:56 <scarf> only in Perl6
14:51:02 <alise> caller . '::' . $name?
14:51:22 <alise> *caller()
14:51:29 <alise> Still t'errors:
14:51:29 <alise> Global symbol "$usys" requires explicit package name at diag.pl line 23.
14:51:29 <alise> Global symbol "$hw" requires explicit package name at diag.pl line 23.
14:51:30 <alise> Global symbol "$hw" requires explicit package name at diag.pl line 24.
14:51:30 <alise> Global symbol "$cpu" requires explicit package name at diag.pl line 24.
14:51:38 <scarf> you have a timing problem there, in that use strict runs before the code
14:51:48 -!- MigoMipo has joined.
14:51:49 <alise> Er. Yes, yes it does.
14:51:59 <scarf> the solutions are no strict for the section, or putting the code that creates the variable in a BEGIN block
14:52:09 <alise> The caller of node, or the sub node?
14:52:18 <scarf> the caller of node
14:52:21 <alise> Darn.
14:52:29 <alise> I'd have to put my whole graph in BEGIN. Wait, why does that matter? :-D
14:52:33 <alise> Will it have strict, though?
14:52:35 <alise> in the BEGIN
14:52:45 <scarf> the timing of use strict is begin-timing itself
14:52:50 <alise> Global symbol "$usys" requires explicit package name at diag.pl line 25.
14:52:50 <alise> Global symbol "$hw" requires explicit package name at diag.pl line 25.
14:52:50 <scarf> so it shouldn't
14:52:51 <alise> Global symbol "$hw" requires explicit package name at diag.pl line 26.
14:52:51 <alise> Global symbol "$cpu" requires explicit package name at diag.pl line 26.
14:52:51 <alise> even in BEGIN
14:52:59 <scarf> hmm, is the use strict above the begin or below?
14:53:03 <alise> above
14:53:07 <alise> ah
14:53:14 <alise> Name "main::usys" used only once: possible typo at diag.pl line 26.
14:53:14 <alise> Name "main::cpu" used only once: possible typo at diag.pl line 27.
14:53:15 <alise> ↑ with no strict
14:53:15 <alise> xD
14:53:21 <scarf> now it's just warnings
14:53:25 <alise> Can't use string ("main::usys") as a symbol ref while "strict refs" in use at diag.pl line 14.
14:53:26 <alise> what
14:53:35 <alise> line 14
14:53:36 <alise> *{"${caller}::$name"} = \$id;
14:53:39 <scarf> alise: you want no strict 'refs'; for that procedure
14:53:52 <alise> hmm... what's the part of strict that breaks the node stuff?
14:53:53 <scarf> because injecting symbols into another scope is a "do you really want to do that?" moment
14:53:55 <alise> the explicit package name bits
14:54:02 <alise> I don't want to disable all of strict if I don't have to
14:54:16 <scarf> I think it's use strict "refs" in each case
14:54:22 <scarf> or maybe use strict "vars"
14:54:23 <alise> nope
14:54:27 <alise> yep, vars
14:54:30 <alise> now all I have is 45987345984359 errors
14:54:33 <alise> Use of uninitialized value in string eq at /opt/local/lib/perl5/site_perl/5.8.9/GraphViz.pm line 615.
14:54:37 <alise> oh, of course
14:54:42 <alise> foreach (@_) {
14:54:43 <alise> my $name = shift;
14:54:43 <alise> my $id = $g->add_node(label => $name);
14:54:43 <alise> my $caller = caller;
14:54:43 <alise> *{"${caller}::$name"} = \$id;
14:54:44 <alise> }
14:54:50 <alise> doesn't $id mutate each time? I bet it's the foreach causing scope problems or something
14:55:15 <scarf> that looks OK to me... is add_node returning a nonnull string?
14:55:24 <alise> Well. It /should/ be. Let me check.
14:55:47 <alise> foreach (@_) {
14:55:47 <alise> my $name = shift;
14:55:48 <alise> Duh.
14:55:55 <scarf> haha
14:55:57 <scarf> well noticed
14:56:14 <alise> Name "main::usys" used only once: possible typo at diag.pl line 27.
14:56:14 <alise> Name "main::cpu" used only once: possible typo at diag.pl line 28.
14:56:18 <alise> any way to turn those off?
14:56:33 <scarf> it'll be no warnings "something"
14:56:37 <scarf> but I'm not sure what the something is
14:56:47 <alise> maybe I should just turn of all strict and warnings for the whole thing
14:56:52 <alise> more trouble than it's worth for a DSL
14:57:12 <scarf> no warnings "once";
14:57:13 <alise> you're meant to put a ; after a {...} on its own right?
14:57:22 <scarf> alise: depends on context
14:57:31 <alise> {
14:57:31 <alise> no strict 'vars';
14:57:32 <alise> no warnings 'once';
14:57:32 <alise> node qw/usys hw cpu/;
14:57:32 <alise> edge $usys => $hw;
14:57:32 <alise> edge $hw => $cpu;
14:57:33 <alise> }
14:57:33 <scarf> {...} as a hash constructor needs a semicolon
14:57:36 <scarf> {} as a plain statement doesn't
14:57:39 <scarf> and this is the latter
14:57:41 <alise> right but i'm talking style here :P
14:57:58 <scarf> no, you don't need one
14:58:03 <scarf> you use one after do{ };
14:58:06 <scarf> but not with plain {}
14:58:09 <alise> okay
14:58:13 <scarf> that's maybe what's confusing you
14:58:24 <scarf> (do{} in Perl is equivalent to ({ }) in gcc)
15:00:40 <alise> how do you reference a variable with an invalid name?
15:00:43 <alise> $"x86-64"?
15:00:52 <alise> ${"x86-64"}?
15:01:20 <scarf> I don't think invalidly-named variables can exist
15:01:27 <scarf> as in, there isn't a place in the symbol table for them
15:01:41 <alise> well
15:01:41 <alise> *{"${caller}::$_"} = \$id;
15:01:42 <alise> didn't barf
15:01:44 <alise> about it :D
15:02:10 <scarf> you could try ${"x86-64"}, although that'll annoy strict 'refs'
15:02:28 <alise> it works :-D
15:02:44 <alise> Unknown 'strict' tag(s) 'vars refs' at diag.pl line 24
15:02:45 <alise> qw I presume
15:02:50 <scarf> yep
15:02:57 <alise> node 'usys';
15:02:58 <alise> node qw/hw cpu x86-64/;
15:02:58 <alise> edge $usys => $hw;
15:02:58 <alise> edge $hw => $cpu;
15:02:58 <alise> edge $cpu => ${'x86-64'};
15:03:00 <alise> Not bad.
15:03:03 <alise> I'd prefer to write it like:
15:03:21 <alise> usys => hw
15:03:21 <alise> hw => cpu => x86-64
15:03:31 <alise> Hmm, my "node" doesn't let me create duplicate names.
15:03:37 <alise> Well, it does, but it gives me no way to reference them.
15:03:37 <scarf> you could get rid of the dollars, at least, by extracting variables out of the caller's scope the same way that you put them in in the first place
15:03:39 <alise> $noscalar was it?
15:03:44 <alise> scarf: wat
15:03:49 <scarf> just by using the names
15:04:01 <scarf> but that's probably going to slow the program down a lot for no reason
15:04:50 <alise> $wantarray
15:04:52 <alise> or is it wantarray?
15:05:12 <alise> wantarray it seems
15:05:14 <scarf> no dollar
15:05:18 <scarf> it's a built-in function
15:05:27 <scarf> (kind-of hard to see how you could do it as a /non/-builtin)
15:05:28 <alise> *{"${caller}::$_"} = \$id if (undef wantarray);
15:05:33 <alise> Most meaningless bit of code ever written
15:05:38 <alise> *if undef wantarray
15:05:42 <scarf> um, !defined wantarray
15:05:51 <scarf> undef sets something to be undefined, rather than testing if it is defined
15:05:58 <alise> oops
15:06:01 <alise> and you mean "unless defined"
15:06:11 <scarf> unless defined wantarray;
15:06:20 <scarf> Perl has an unless control-flow operator
15:06:58 <alise> yes, I know
15:07:02 <alise> that's why I said it
15:09:10 <alise> actually the main thing I want is edge foo => (bar,baz,quux);
15:09:29 <alise> edge $insns => ('nop', 'jump');
15:09:32 <alise> I could do that with varargs I guess
15:10:20 <scarf> the parens there would screw it up
15:10:33 <scarf> is edge $insns => ['nop', 'jump'] good enough?
15:10:41 <alise> it would turn into
15:10:42 <scarf> or just edge $insns => 'nop', 'jump'
15:10:47 <alise> edge $insns, 'nop', 'jump' wouldn't it?
15:10:53 <alise> and the latter would be fine yes of course
15:11:11 <scarf> nope, because I don't think you can interpolate a list literal into another list literal
15:11:43 <alise> print $g->{"as_$ARGV[0]"};
15:11:43 <alise> alas, doesn't work
15:11:46 <alise> :P
15:12:45 <alise> (it's a method)
15:15:55 <alise> hmm
15:16:22 <alise> eval "print \$g->as_$fmt";
15:16:23 <alise> problem solved
15:16:33 <alise> (I blame society)
15:17:34 <alise> http://imgur.com/vMnkW.png
15:17:35 <alise> woot
15:17:54 * Sgeo_ shoots Perl
15:18:09 <Sgeo_> Is it hypocritical for me to shoot Perl while being interested in Ruby?
15:18:46 <Sgeo_> [that's probably an.. interesting and wrong usage of the word hypocritical]
15:19:13 <alise> Perl is a better Ruby than Ruby.
15:19:30 <alise> Ruby is just the bad parts of Lisp, a tiny bit of Smalltalk messed up, and Perl combined. Badly.
15:20:53 <Sgeo_> I don't see any parentheses abuse in Ruby
15:20:58 <Sgeo_> Are there other bad parts of Lisp?
15:21:14 <scarf> paren abuse isn't really a bad part of lisp
15:22:33 <alise> Sgeo_: ugh
15:22:41 <alise> you just made me want to punch you :| don't do that
15:25:12 -!- ais523 has quit (Quit: Page closed).
15:25:15 <alise> Sgeo_: fodijg firstly it's not abuse it's the syntax and it's not like that for no reason, secondly it's not actually a problem
15:25:24 <alise> thirdly the bad parts of lisp are nothing to do with that whatsoever
15:31:04 <Sgeo_> I'll agree with with the first part, question the second part, and note that the third part seems to be a conclusion
15:33:21 <Sgeo_> What are the bad parts of Lisp?
15:34:29 <AnMaster> hi
15:34:45 <MissPiggy> Sgeo_, the attitude non-lisp people have towards the language is the worst thing
15:34:59 <MissPiggy> I would think that I don't really care about such petty things, but actually it is very frustrating
15:35:08 <AnMaster> <ais523> now it's booted and seems to be working normally <-- did you figure out the cause scarf ?
15:35:15 <scarf> no
15:35:26 <scarf> although I'm currently blaming either kqemu or hardware problems
15:35:46 <AnMaster> I would recommend that you run memtest during the next night.
15:36:20 <scarf> AnMaster: I've already done long memtest runs on here
15:36:26 <scarf> I don't think it's the memory that's at fault
15:36:27 <alise> lol, Sgeo_ thinks the parens in lisp are there for no reason
15:36:29 <AnMaster> scarf, and kqemu? I thought qemu was able to use kvm or something nowdays
15:36:34 <alise> i take it back you are stupid :/
15:36:36 <Sgeo_> alise, no, I know the reason.
15:36:41 <scarf> AnMaster: it is, but kvm isn't installed here
15:36:44 <AnMaster> ah
15:36:47 <Sgeo_> So that order of precedence doesn't need to exist
15:36:49 <Sgeo_> (I think)
15:36:50 <alise> "question the second part" "and it's not like that for no reason"
15:36:53 <alise> Sgeo_: HAHAHA
15:36:54 <alise> no
15:37:14 <alise> ignorance isn't the problem here it's that you made wild generalisations without knowing things about lisp
15:37:18 <AnMaster> scarf, but does the hardware support it in theory?
15:37:28 <scarf> no idea
15:37:32 <Sgeo_> " secondly it's not actually a problem"
15:37:40 <AnMaster> scarf, some flag in /proc/cpu
15:37:44 <Sgeo_> You didn't say "secondly there is a reason"
15:37:53 <AnMaster> you could paste the flags line, since I don't remember which flag exactly
15:38:00 <AnMaster> vmi or something iirc
15:38:07 <alise> all very nice for you to question it but you obviously don't know the first thing about programming in lisp soo...
15:38:43 <alise> the bad parts of lisp... untyped syntax, needing macros to do lots of things...
15:38:52 <scarf> alise: I know the first thing about programming in lisp, but I'm stuck on the third or fourth
15:38:54 <alise> that's inherent to lisp, as far as common lisp goes... all bad
15:38:59 <alise> scheme is mostly good.
15:39:03 <alise> (r5rs)
15:39:13 <AnMaster> alise, scheme has those clean macros though
15:39:30 <alise> and?
15:39:31 <AnMaster> argh, mental lag
15:39:36 <alise> nothing wrong with hygienic macros
15:39:43 <AnMaster> indeed that was my point
15:39:53 <alise> yeah but having to use them is still bad
15:40:00 <alise> you need to do tons of macros in lisps when normal lazy functions would suffice
15:40:12 <AnMaster> alise, I was responding to "<alise> the bad parts of lisp... untyped syntax, needing macros to do lots of things..." you see. I didn't notice you mentioned scheme between me starting typing and when I hit enter
15:40:25 <AnMaster> I'm somewhat tired.
15:40:28 <alise> well you still have to use them a lot which is the actual problem
15:40:32 * Sgeo_ wonders if he'll have nostalgia for There
15:40:52 <AnMaster> alise, but lisp macros are awesome.
15:41:13 <scarf> the awesomeness is the language's own downfall
15:41:19 <AnMaster> hm maybe
15:41:21 <alise> http://www.there.com/ OH LOOK let another shitty 3d virtual reality
15:41:32 <alise> I am utterly shocked, Sgeo_
15:41:33 <scarf> needing to use awesome in order to get work done may be awesome, but it means there's something wrong in the rest of the language
15:41:48 <alise> scarf: hey i disagree
15:41:52 -!- cpressey has joined.
15:41:53 <alise> dependent types - printf
15:41:56 <alise> so thar :P
15:42:05 <scarf> printf doesn't /need/ dependent types, they just make it better
15:42:08 <alise> but the fact that lisp requires you to use macros all the time is a problem due to the nature of macros
15:42:12 <AnMaster> scarf, yeah, backtracking with macros + call/cc... (seen that, think it was from that "fixnum days" tutorial?)
15:42:13 <alise> scarf: well, yes.
15:42:18 <scarf> so that's good awesome
15:42:20 <Sgeo_> alise, every time I've been there [twice], it's left a bad taste in my mouth.
15:42:45 <alise> The 3D has too many polygons for your liking?
15:42:46 <alise> :P
15:42:48 <Sgeo_> lol
15:43:07 <Sgeo_> Not enough room for creativity. Although it's not as bad as IMVU
15:43:11 <Sgeo_> I hate IMVU with a passion
15:43:48 <Sgeo_> Until someone shows me how to get to a populated chatroom in IMVU [and I mean more than 10 people], I'll continue to hate it
15:44:07 <AnMaster> alise, I'm not sure lisp actually requires you to use macros
15:44:21 <alise> ooh time for some AnMaster pedancy
15:44:56 <AnMaster> alise, I was about to add that it would be rather painful to code in lisp without the macros though
15:45:09 <alise> you have macros no matter what - "special forms"
15:45:16 <alise> well
15:45:20 <alise> yes, yes you do
15:45:23 <alise> hmm wait
15:45:27 <alise> there is one way you could do it
15:45:39 <alise> (quote-symbol (list 97 98)) == 'ab
15:45:44 <alise> and then use (list x)
15:46:05 <alise> (if (= (+ 2 2) 4) (list (quote-symbol (list ... numbers spelling 'display' ...
15:46:07 <AnMaster> alise, hm but is ' a macro?
15:46:11 <alise> 'x -> (quote x)
15:46:13 <alise> special form
15:46:18 <alise> just like a macro except implemented in the compiler
15:46:22 <alise> you can implement quote yourself but it's a bitch
15:46:32 <alise> (Oleg did it iirc)
15:46:33 <AnMaster> alise, well, yeah, I guess you could regard special forms as a special sort of macros
15:46:37 <AnMaster> didn't think of that
15:46:44 <alise> http://okmij.org/ftp/Scheme/quote-as-macro.txt
15:46:46 <alise> quote as a macro
15:46:55 <alise> relies on string->symbol though which is /so/ cheating
15:48:56 <cpressey> Regardless, you need *some* special forms. They can't all be defined as macros. I'm not sure what the discussion is about, but I think there's a distinction between the two.
15:48:59 <AnMaster> alise, yes that is as my-quote. I have no idea if there is some way to make it work for the actual '
15:49:23 <alise> 'x is just syntax for (quote x).
15:49:32 <alise> so just name the macro "quote".
15:49:43 <alise> cpressey: Actually, I think you don't.
15:49:47 <cpressey> Well, actually, maybe you don't.
15:49:59 <alise> (lambda (list (quote-symbol 97)) (quote-symbol 97))
15:49:59 <AnMaster> (I mean, it doesn't really follow normal rules, like (foo bar '(1 2)) is valid, but putting my-quote at that point would require ( in front of my-quote, not after, wouldn't it?)
15:50:00 <alise> ->
15:50:04 <alise> (lambda (a) a)
15:50:04 <AnMaster> alise, cya!
15:50:09 <alise> So all you need is lambda, one single primitive function.
15:50:11 <alise> AnMaster: no
15:50:17 <alise> 'x EXPANDS TO (quote x)
15:50:18 <alise> at PARSE TIME
15:50:22 <AnMaster> alise, ah, wasn't that type of arrow
15:50:31 <alise> cpressey: It basically relies on the fact that numbers quote themselves.
15:50:36 <Sgeo_> By "question it" I meant I wanted an explanation >.>
15:50:44 <alise> You could have no numbers and an evaluation rule () -> () if you want loads of fun.
15:50:53 <alise> Sgeo_: it just isn't an issue in practice when writing lisp code
15:50:55 <AnMaster> alise, indeed, and that is what I thought you couldn't hack in using macros.
15:50:59 <Sgeo_> Ah
15:51:07 <alise> AnMaster: well that's syntax not macros or special forms :P
15:51:16 <alise> cpressey: And since the lambda calculus is good enough for anything...
15:51:35 <AnMaster> alise, of course. A pitty you can't do that to the syntax then. We need more powerful macros here. ;)
15:51:39 <alise> cpressey: Oh, if you want to build all of a regular Lisp on top of it you need one special form to define macros.
15:51:42 <alise> AnMaster: Reader macros
15:51:53 <alise> cpressey: You could have it as a function but that makes no sense; macros are compile-time.
15:52:13 <AnMaster> alise, hm, does that actually exist? Or is it a proposed solution?
15:52:23 <alise> AnMaster: Exists.
15:52:37 <AnMaster> heh, in scheme?
15:52:38 <alise> Common Lisp and some Schemes have them.
15:52:41 <AnMaster> ah
15:52:49 <alise> http://www.lispworks.com/documentation/HyperSpec/Body/f_set_ma.htm
15:52:50 <alise> example
15:52:56 * AnMaster looks
15:53:40 <alise> Hey, those are functions.
15:53:45 <AnMaster> wonderful
15:53:48 <alise> cpressey: So if you have reader macros, you can just define your own mega-quoting stuff.
15:53:58 <alise> You won't even need any syntax except for (, ) and atoms.
15:54:12 <alise> (numbers can be done like (() () ()) = 3)
15:54:16 <MissPiggy> uyck
15:54:36 <MissPiggy> use binary for goodness sake: ((()) (()))
15:54:47 <alise> Plus cons, () evaluates to (), quote-symbol : some-representation-of-an-atom-using-()s -> symbol, and lambda (a function).
15:55:07 <alise> Put a reader macro definition function on top of that (pass in the relevant stream-accessing functions yielding the ()-y representation), and tada.
15:55:15 <scarf> alise: please stop, you're going to accidentally invent Ursala
15:55:18 <alise> You can define numbers, comments, and quote.
15:55:24 <alise> Tada! Lisp.
15:55:27 <alise> scarf: :D
15:55:32 <MissPiggy> alise no lisp is defined this way :|
15:55:34 <AnMaster> alise, It would be an awsome to use reader macros to implement a language with as much syntax as perl on top of lisp
15:55:37 <alise> MissPiggy: BUT
15:55:37 <alise> IT
15:55:38 <alise> CAN
15:55:38 <alise> BE
15:55:42 <MissPiggy> yes I agree
15:55:46 <MissPiggy> and it is much simpler too
15:55:48 <alise> and it would be hilarious
15:55:55 <MissPiggy> I'm just saying in reality lisp is a lot less pure
15:56:07 <AnMaster> <scarf> alise: please stop, you're going to accidentally invent Ursala <-- Ursala?
15:56:12 <AnMaster> I'm not familiar with that
15:56:17 <alise> AnMaster: you're lucky
15:56:18 <scarf> you don't want to be
15:56:20 * MissPiggy wonders why anmaster has to quote so much
15:56:28 <AnMaster> scarf, an esolang?
15:56:28 <alise> MissPiggy: he only has one line of scrollback
15:56:32 <MissPiggy> < AnMaster> <scarf> alise: please stop, you're going to accidentally invent Ursala <-- Ursala? <--- why does have to quote so much?
15:56:33 <scarf> it's in the BancSTAR category; languages which aren't meant to be eso, but act like it
15:56:45 <alise> AnMaster: Eight Queens in Ursala:
15:56:46 <alise> queens =
15:56:46 <alise> %np+~command.options.&h.keyword.&iNC; -+
15:56:47 <alise> ~&iNC+ file$[contents: --<''>+ %nLP*=; * '<'%='[ '+ ','%=', '+ '>'%=' ]']+ ~&rSSs+ nleq-<&l*rFlhthPXPSPS,
15:56:47 <alise> ~&i&& ~&lNrNCXX; ~&rr->rl %tLnLtXLLWXMk+ ^/~&l ~&lrrhrSiF4E?/~&rrlPlCrtPX ~&r; ^|/~& ^|T\~& -+
15:56:47 <alise> -<&l^|*DlrTS/~& ~&iiDlSzyCK9hlPNNXXtCS,
15:56:48 <alise> ^jrX/~& ~&rZK20lrpblPOlrEkPK13lhPK2; ~&i&& nleq$-&lh+-,
15:56:48 <alise> ^/~&NNXS+iota -<&l+ ~&plll2llr2lrPrNCCCCNXS*=irSxPSp+ ^H/block iota; *iiK0 ^/~& sum+-
15:56:49 <AnMaster> MissPiggy, ?
15:56:52 <MissPiggy> lol
15:57:04 <AnMaster> alise, heh
15:57:08 <alise> AnMaster: So I think you should just forget about wanting to know anything about Ursala.
15:57:17 <AnMaster> scarf, ah, those are kind of sad yet awesome at the same time
15:57:20 <Sgeo_> What does "Plain English" or whatever it's called count as?
15:57:23 <Sgeo_> Same category?
15:57:28 <alise> AnMaster: Let's put it this way: You create a tuple by changing the operator precedence of the previous expressions (postfix)
15:57:41 <scarf> AnMaster: that would compile into code that looked like ((() () ()) (() () () (() ())) etc
15:57:45 <AnMaster> alise, wut?
15:57:55 <scarf> alise: at least, the two come to the same thing
15:58:02 <Sgeo_> We have fun with esolangs, why can't we have fun with supposed non-esolangs that are as strange as esolangs?
15:58:08 <scarf> we can
15:58:16 <scarf> alise and I have had endless fun laughing at Ursala
15:58:21 <AnMaster> scarf, what was this language made for?
15:58:26 <scarf> AnMaster: numerical computation
15:58:30 <alise> AnMaster: LSD
15:58:33 <scarf> not that you could tell by looking at it
15:58:37 <alise> they go perfectly together
15:58:59 <AnMaster> scarf, then: by who? when? for whom?
15:59:04 <Sgeo_> I'd say something about J, but J makes me want to run screaming too
15:59:10 <AnMaster> J isn't all that bad
15:59:11 <alise> J is wonderful
15:59:14 <alise> nothing like Ursala
15:59:18 <AnMaster> it is just.... very terse?
15:59:25 <alise> AnMaster: It's TWO LANGUAGES
15:59:27 <scarf> I'd say Ursala tries to imitate some J concepts but fails
15:59:31 <alise> one is the ldfkjsdfoweriujWERIOJEIORJ thing
15:59:34 <cpressey> <alise> cpressey: You could have it as a function but that makes no sense; macros are compile-time. <-- I submit this is the real debate to have.
15:59:36 <alise> all functions are postfix and right-associative
15:59:44 <AnMaster> alise, J? possibly, I don't know J. I have only seen J code
15:59:44 <alise> and you do parens by saying "parenthesize the last N expressions" as an operator
15:59:53 <alise> AnMaster: no, ursala
15:59:56 <Sgeo_> Very incomprehendible to someone who doesn't know J. Python is somewhat readable, Haskell is sometimes somewhat readable, J is impossible
16:00:00 <AnMaster> alise, ah. hm
16:00:07 <alise> seriously, it's just crazy
16:00:13 <alise> Sgeo_: Only because of what you know.
16:00:23 <MissPiggy> what J is very readible
16:00:24 <alise> I am /tired/ of this "intuitive" rubbish based on relative knowledge
16:00:37 <scarf> alise: you missed the bit where arguments get implied into expressions if they're missing from the syntax
16:00:42 <MissPiggy> haskell is mostly unreadible
16:00:43 <alise> AnMaster: also, types are done by simply guessing
16:00:52 <alise> if you run a program you have to specify the type to cast its result to
16:00:55 <scarf> e.g. ~&B is a synonym for ~&lrB
16:00:56 <Sgeo_> Erm, my statement was supposed to be relative to what someone who hasn't seen the language being compared knows
16:00:59 <MissPiggy> unless it's the accumulation of 10 PhDs on writing readible code
16:01:01 <AnMaster> scarf, where can one read more about it? Plus the questions above
16:01:04 <alise> scarf: what's that operator that has no formal definitions?
16:01:11 <scarf> alise: you could try web-surfing for it
16:01:11 <alise> AnMaster: http://www.basis.uklinux.net/ursala/manual.pdf, http://www.basis.uklinux.net/ursala/
16:01:13 <scarf> alise: I'll check
16:01:16 <alise> scarf: I am
16:01:23 <AnMaster> huh
16:01:54 <Sgeo_> There's an operator that has no formal definitons? *cries*
16:01:55 <AnMaster> *shudder*
16:02:05 <alise> well, it does, they just haven't figured it out yet
16:02:07 <MissPiggy> is ursala real?
16:02:12 <AnMaster> alise, what is the other language then?
16:02:13 <alise> because it's just a list of special cases
16:02:14 <MissPiggy> I could never decide if it was a joke or not
16:02:15 <alise> MissPiggy: Yep
16:02:17 <alise> AnMaster: the other part of ursala
16:02:20 <scarf> "The I constructor has four practical uses shown in Table 2.2, as well as any generalizations of those obtained by using lrX in place of b and/or any single valued deconstructor in place of r or l. Other generalizations can be used experimentally but their effect isunspecified and subject to change in future revisions."
16:02:27 <AnMaster> alise, which is all but "ldfkjsdfoweriujWERIOJEIORJ"?
16:02:28 <alise> "(~&w/`.)*~+ ~&s+ * skip/7; takewhile -=letters--digits--'.'"
16:02:31 <alise> "*= skip/*9+ =]'Address: '*~+ ~&hm+ ask(bash)/<>+ <.'nslookup '-->"
16:02:31 <AnMaster> err
16:02:32 <AnMaster> ah
16:02:36 <alise> those first and last quotes are mine
16:03:03 <scarf> single quotes delimit variable names in Ursala, i.e. Ursala "x" is equivalent to Perl $x
16:03:08 <AnMaster> alise, and I guess this split is done in a way that makes no sense?
16:03:17 <alise> AnMaster: you just intermingle them freely
16:03:18 <AnMaster> scarf, that was double quotes?
16:03:25 <alise> those double quotes were mine
16:03:29 <scarf> AnMaster: yes
16:03:31 <AnMaster> alise, then what makes them different?
16:03:35 <scarf> s/single quotes/double quotes/
16:03:37 <AnMaster> alise, I didn't mean your
16:03:39 <AnMaster> scarf, ah
16:04:41 <alise> I have to go for a while, guys; moving to another temporary residence lulz.
16:04:48 <alise> See you soon! ...Hopefully!
16:04:53 <Sgeo_> I'm just going to pretend that Ursula code looks sane to someone who knows Ursula, same way J is readable to J programmers.
16:04:55 -!- alise has quit (Quit: alise).
16:04:57 <scarf> ok, bye, and that sounds worrying
16:04:58 <cpressey> I ASK YOU, is it a mere coincidence that BancSTAR was developed for the banking industry *and* the author or Ursala has a degree in finance?
16:05:22 <cpressey> Hm yes, that did sound worrying.
16:05:26 <scarf> cpressey: possibly not, the finance/banking industry is a source of some of the biggest problems in programming
16:06:20 <AnMaster> both what cpressey mention and what alise said sounds worrying
16:09:19 <cpressey> scarf: Given the context, I'm not sure whether to interpret the "in" in your statement as "that can be addressed by" or "that are caused by"
16:09:47 <scarf> um, I don't think I meant what I said
16:09:57 <scarf> would "some of the most problematic programs" work better?
16:10:20 <cpressey> Yeah, that works.
16:11:33 -!- jcp has joined.
16:16:19 -!- dev_squid has joined.
16:23:53 * Sgeo_ goes to look for BancSTAR tutorials
16:24:13 <scarf> Sgeo_: I don't think there are any
16:24:23 <Sgeo_> Any documentation, then?
16:24:30 <scarf> no
16:24:37 <scarf> it was a proprietary trade-secret lang
16:24:56 -!- dev_squid has quit (Ping timeout: 246 seconds).
16:25:50 <Sgeo_> :(
16:26:09 <cpressey> There was an example source posted on The Turing Tarpit site. But that was on geocities. Not sure if it was put back up?
16:26:22 <MissPiggy> geocities :(
16:26:31 <cpressey> I have a backup
16:26:43 <cpressey> (of TTT, NOT of all of geocities)
16:27:17 <scarf> is it on reocities?
16:27:30 <scarf> or archive.org?
16:27:34 <scarf> both were trying to back up the whole thing
16:27:58 <cpressey> http://www.geocities.com/ResearchTriangle/Station/2266/tarpit/tarpit.html
16:28:01 <cpressey> was its orig url
16:28:17 <cpressey> Yup, reocities works
16:28:48 <cpressey> http://www.reocities.com/ResearchTriangle/Station/2266/tarpit/bancstar.html
16:30:18 <AnMaster> cpressey, btw do not assign the middot char to anything in befunge-111
16:30:49 <scarf> ... because the befunge-98 spec allows for use of characters above 128 for private-use
16:30:52 <AnMaster> cpressey, doing so would break the only known case of "values above 127 being used for implementation thing"
16:30:54 <AnMaster> scarf, yes
16:30:58 <scarf> and IFFI actually uses middot as a private-use character
16:31:00 <AnMaster> and the middot is used in IFFI
16:31:05 <scarf> is there some sort of registry to declare these things?
16:31:20 <AnMaster> cpressey, IFFI being a fingerprint for befunge/intercal integration
16:32:20 -!- dev_squid has joined.
16:32:31 <cpressey> AnMaster: OK. I had no plans to.
16:33:03 <scarf> AnMaster: IFFI's the fingerprint, CFFI's the handprint
16:33:08 <scarf> and the implementation itself is mostly cfunge
16:33:14 <scarf> hmm, I should direct that at cpressey, really
16:33:19 <AnMaster> indeed
16:33:25 <scarf> I'm not entirely sure he knew it was possible to link Befunge and INTERCAL programs
16:33:28 <AnMaster> scarf, handprints are going to be deprecated in 111
16:33:35 <AnMaster> scarf, well true
16:33:44 <scarf> AnMaster: you still need to put something in the y output
16:34:09 <AnMaster> scarf, "reserved for compat reasons" is the plan last I heard
16:34:24 <scarf> fair enough
16:34:33 <cpressey> Handprints are going to be implementation-defined... handprints are *already* implementation-defined...
16:35:09 <cpressey> No, I had no idea.
16:35:15 <cpressey> No, there is no registry.
16:35:24 <AnMaster> ah
16:36:03 <scarf> anyway, a single entry point at the top-left turns out to be inadequate for embedding Befunge as a scripting language within INTERCAL programs
16:36:12 <scarf> so the middots mark additional points to check to see if they're entry points or not
16:36:23 <cpressey> Hm, COME FROM-style?
16:36:37 <cpressey> That sounds horrible, at any rate.
16:37:15 <scarf> that's sort-of the point
16:37:19 <AnMaster> cpressey, scarf (maintainer of c-intercal (ick)) wrote a fingerprint for cfunge, that allows this integration, cfunge is built as a library and statically linked to the compiled INTERCAL program (only if it uses befunge linking of course)
16:37:35 <scarf> IFFI the fingerprint is an implementation of all the INTERCAL flow-control operations in Befunge
16:37:38 <AnMaster> the program is loaded from an unsigned char * array
16:38:02 <AnMaster> (meh, small technical incorrectness in that type, but doesn't really matter)
16:38:30 <scarf> if you use it with CFFI/ick_ecto_b98 the implementation, then it additionally links those flow-control operations in the Befunge with the flow-control operations in the INTERCAL
16:38:48 <scarf> so you can do the equivalent of COME FROM (5) in the Befunge and come from line (5) in the INTERCAL program, or vice versa
16:39:04 <AnMaster> scarf, wasn't it come from x,y ?
16:39:14 <scarf> nope, line numbers
16:39:20 <scarf> so it fits in with the INTERCAL program
16:39:23 <AnMaster> scarf, even for befunge code side?
16:39:26 <scarf> yep
16:39:30 <scarf> you can even do computed COME FROMs
16:39:36 <cpressey> scarf: Dare I ask, does this support self-modification? Like if I 'p' a middot into the playfield...
16:39:42 <AnMaster> scarf, I mean, comming from befunge
16:39:44 <AnMaster> to intercal
16:40:02 <scarf> cpressey: it supports self-modification for everything but middot locations, at the moment; the middots are more compiler directives, they vanish on program load
16:40:15 <AnMaster> didn't they turn into M or something?
16:40:18 <scarf> yep
16:40:33 <scarf> come to think of it, it wouldn't be that hard to change the directives at runtime; I'm just not sure if it's useful
16:40:37 <AnMaster> scarf, could you come from a position in befunge too? I don't remember
16:40:59 <scarf> AnMaster: M5C M5L is an infinite loop
16:41:07 <scarf> if I've remembered the syntax correctly
16:41:14 <scarf> I may have got that backwards
16:41:27 <AnMaster> scarf, well, come from is more like "if we get to that point, jump here"
16:41:37 <scarf> yep
16:41:40 <AnMaster> so, it should be able to target anywhere shouldn't it?
16:41:46 <scarf> it can target any line label
16:41:48 <AnMaster> like COME FROM befunge (2,4)
16:41:52 <AnMaster> in intercal
16:41:53 <scarf> come from can only hit lines which actually have a label on
16:41:59 <AnMaster> (well, with different syntax of course)
16:42:11 <scarf> so in the INTERCAL, you write COME FROM (5), then it'll come from an M5L in the Befunge
16:42:23 <AnMaster> ah right
16:42:42 <AnMaster> scarf, btw, is there anything in IFFI that can interact weirdly with k? I don't remember
16:43:01 <scarf> AnMaster: quite possibly
16:43:14 <scarf> but the fingerprint isn't /very/ feral, so probably not
16:43:16 <AnMaster> ooh kM?
16:43:21 <AnMaster> that sounds fun
16:43:37 <scarf> M does nothing when actually encountered, though; it just specifies a location to start executing at
16:43:40 <AnMaster> because, well, k calls execute_instruction in a loop
16:43:53 <AnMaster> scarf, hm
16:43:53 <scarf> M means "here might be an entry point"
16:44:10 <AnMaster> scarf, what about *exit* points then?
16:44:12 <scarf> and is written with a middot in the original source
16:44:20 <scarf> AnMaster: they're the usual @, etc
16:44:28 <AnMaster> scarf, no, that isn't what I asked
16:44:30 <scarf> otherwise, to exit you use fingerprint commands
16:44:34 <AnMaster> <AnMaster> scarf, could you come from a position in befunge too? I don't remember
16:44:34 <AnMaster> <scarf> AnMaster: M5C M5L is an infinite loop
16:44:37 <AnMaster> I meant
16:44:40 <AnMaster> come from befunge
16:44:42 <AnMaster> to intercal
16:44:46 -!- jcp has quit (Quit: I will do anything (almost) for a new router.).
16:44:46 <scarf> AnMaster: you put a line label in
16:44:50 <scarf> along the lines of M5L
16:44:58 <scarf> and it can come from there
16:45:01 <AnMaster> scarf, and then when that label is encounterd in the befunge program it jumps to intercal?
16:45:04 <scarf> you need the M, because it might NEXT to that line later
16:45:08 <scarf> AnMaster: yep
16:45:19 <AnMaster> scarf, then how could kM *not* cause issues?
16:45:35 <scarf> because, it starts executing at the M
16:45:37 <AnMaster> oh wait, you check that in your top loop?
16:45:47 <AnMaster> scarf, shouldn't it jump to intercal when it hits the M?
16:45:50 <AnMaster> that is what I thought you said
16:45:54 <scarf> no, when it hits the L
16:46:03 <scarf> otherwise, how could it know what the number was?
16:46:06 <AnMaster> scarf, okay, so what about kL then?
16:46:16 <scarf> AnMaster: then it returns on the first L, so the others don't happen
16:46:27 <AnMaster> scarf, returns from where?
16:46:29 <scarf> sort of like for(int i = 0; i < 10; i++) return;
16:46:33 <scarf> in C
16:46:44 <AnMaster> scarf, in the main loop? Well k doesn't go by the main loop
16:46:45 <scarf> AnMaster: well, gets come-frommed, or whatever
16:46:51 <AnMaster> remember it calls execute_instruction directly
16:46:53 <scarf> AnMaster: that isn't in the main loop, that's in the fingerprint I think
16:46:54 <AnMaster> in a loop
16:47:03 <scarf> hmm, I'm actually going to read the source now
16:47:21 <AnMaster> scarf, it would need to somehow get up through run_iterate() (which implements k)
16:47:26 <AnMaster> a longjmp is all I can think of
16:47:52 <scarf> hah, I see what's hapened
16:47:53 <scarf> *happened
16:47:57 <AnMaster> scarf, oh?
16:48:04 <scarf> it sets a flag in the code, multiple times, which does nothign
16:48:08 <AnMaster> ah
16:48:13 <scarf> then when it goes back to the main loop, it simulates only having happened once
16:48:26 <scarf> so you get the effect of returning on the first call, although actually it ignores all but the last then returns on the last call
16:48:27 * AnMaster wonders how longjmp() interacts with __attribute__((regparm(3)))
16:48:51 <AnMaster> (I hope it handles it)
16:49:52 <AnMaster> scarf, hm, does L take the line number as a parameter on stack?
16:49:58 <scarf> yep
16:50:09 <AnMaster> if so, won't it be overwritten to actually be the last one given to L?
16:50:12 <AnMaster> in a k loop
16:50:20 <AnMaster> also, what does negative line numbers do?
16:50:26 <scarf> AnMaster: yes, it will
16:50:36 <AnMaster> scarf, and is line 0 valid?
16:50:38 <scarf> and line numbers outside the range 1..65535 are ignored
16:50:54 <AnMaster> scarf, not very befungeish, silently ignoring
16:51:08 <scarf> AnMaster: that's the correct behaviour for computed COME FROM
16:51:14 <AnMaster> hrrm
16:51:18 <scarf> a COME FROM should do nothing if aimed at an illegal line number
16:51:30 <AnMaster> okay
16:52:00 <AnMaster> would be fun to do this as a free standing befunge fingerprint. Not sure how much it depends on ick internals
16:52:19 <Sgeo_> Is Ruby a good language to first try to learn continuations in?
16:52:33 <scarf> you'd have to separate it out to some extent; it depends on ick internals for the control flow deliberately, because it needs to be the same control flow as in the INTERCAL program
16:52:44 <AnMaster> well yes
16:53:12 <AnMaster> scarf, what I actually meant (but didn't say I realise) was: "how hard would it be to rewrite those bits for freestanding"
16:53:29 <scarf> shouldn't be massively hard; INTERCAL control flow is relatively easy to implement
16:53:41 <scarf> hard to /use/, but easy to implement
16:53:55 <AnMaster> one of the few easy parts to implement?
16:54:17 <AnMaster> scarf, also, what about memory leaks? Is there any way to remove a come from?
16:54:43 <cpressey> Sgeo_: Actually, I think it is.
16:54:55 <AnMaster> scarf, I'm not very happy with REFC and such
16:54:56 <scarf> AnMaster: the way it works is, whenever a line label's encountered, it starts executing in every cardinal direction from every middot, to see if it comes across a comefrom
16:55:05 <AnMaster> which *requires* you to leak memory basically
16:55:20 <scarf> why is that a leak?
16:55:26 <scarf> it uses a fixed amount of memory in every case
16:55:37 <AnMaster> scarf, you can't remove refences, just add new and dereference existing
16:55:38 <scarf> because the set of middots is fixed at compiletime
16:55:44 <scarf> AnMaster: references to what?
16:55:48 <AnMaster> references*
16:55:55 <AnMaster> scarf, cells
16:55:57 <AnMaster> x,y
16:56:05 <scarf> oh, you can't add new either
16:56:06 <AnMaster> http://catseye.tc/projects/funge98/library/REFC.html
16:56:09 <AnMaster> scarf, ^
16:56:13 <scarf> ah, you're talking about REFC, rather than IFFI
16:56:16 <AnMaster> scarf, yes
16:56:29 <AnMaster> scarf, I mean, I want to avoid this scenario for a fingerprint
16:56:46 <cpressey> I'm not sure what the point of REFC is
16:56:50 <scarf> clearly you need reference-counting
16:56:59 <cpressey> Why not just share vectors
16:57:03 <AnMaster> scarf, for funge cells? Don't be daft XD
16:57:08 <scarf> no, for vectors
16:57:19 <AnMaster> scarf, well, how would I track them
16:57:24 <scarf> cpressey: maybe it's so you can have vectors /of/ vectors
16:57:54 <AnMaster> nothing forbids you to output it, then later ask the user to input the same number
16:58:01 <AnMaster> and so on
16:58:10 <scarf> AnMaster: let's say, R creates a reference with a refcount of 1, D dereferences a reference, C increases a reference's refcount, X decreases a reference's refcount, and if it falls to 0 it can't be used in future
16:58:18 <scarf> I mean, refcounting in the fingerprint
16:58:25 -!- tombom has joined.
16:58:28 <AnMaster> scarf, well that would require changing the fingerprint
16:58:32 <AnMaster> which is unrealistic
16:58:40 <MissPiggy> http://etext.virginia.edu/toc/modeng/public/ManFour.html
16:58:42 <cpressey> It does say "Under development"
16:58:43 <MissPiggy> facts about 4our
16:58:48 <scarf> the fingerprint as written requires a memory leak, yes
16:58:54 <AnMaster> cpressey, doesn't all your fingerprints almost?
16:59:05 <AnMaster> also, still in beta (oh wait it isn't)
17:00:48 <cpressey> It should probably just be burnt
17:01:07 <cpressey> There'
17:01:25 <AnMaster> what?
17:01:38 <cpressey> There's a saying about how the only thing worse than generalizing from a single example is generalizing from no examples at all.
17:02:05 <cpressey> # of use cases for REFC = 0, so... garbage collect it :)
17:02:37 <AnMaster> cpressey, how do you know?
17:02:47 <AnMaster> well mycology doesn't count I guess
17:02:54 <cpressey> AnMaster: Feel free to prove me wrong
17:03:09 <AnMaster> cpressey, is writing one now allowed? ;P
17:03:30 <scarf> linked lists?
17:03:35 <scarf> trees?
17:03:40 <AnMaster> scarf, hm interesting
17:03:46 <scarf> REFC's about the best you can do for writing object-oriented funge, too
17:03:56 <AnMaster> oh?
17:04:01 <AnMaster> objects are immutable
17:04:02 <scarf> but that really needs a fingerprint of its own
17:04:12 <scarf> AnMaster: yep, but you can make slightly mutated copies, Haskell-style
17:04:13 <AnMaster> also what about rc/funge's FOBJ?
17:04:22 <AnMaster> (not very good OO though)
17:04:28 <scarf> and I don't have the whole list of rc/funge fingerprints memorised, for presumably obvious reasons
17:04:36 <AnMaster> (object, but not most of the concepts of OO)
17:05:06 <AnMaster> http://rcfunge98.com/rcsfingers.html#FOBJ
17:05:55 <scarf> hmm, that appears to be a Trefunge-only fingerprint
17:05:57 <cpressey> I don't see a strong argument for using references instead of vectors (even for linked lists, objects, etc.) except for some pie-in-the-sky notion of writing a *funge polyglot, e.g. Befunge and Trefunge.
17:06:14 <AnMaster> hah
17:06:21 <AnMaster> cpressey, I didn't think of that one
17:06:36 <scarf> cpressey: oh, I forgot that vectors couldn't be arbitrary-length
17:06:45 <scarf> hmm, the case of trees still applies, though
17:07:10 <scarf> AnMaster: in efunge, you wouldn't need to have a memory leak
17:07:11 <cpressey> scarf: Why can't you just store the vector of the child node, in the parent node?
17:07:24 <AnMaster> scarf, hm?
17:07:27 <scarf> cpressey: because then it wouldn't fit into one cell, unless you had bignums
17:07:27 <cpressey> And yes, you do have memory leaks with REFC.
17:07:30 <AnMaster> scarf, how
17:07:36 <cpressey> scarf: Why do you have to use one cell?
17:07:47 <scarf> AnMaster: you can implement R as mingling all the elements of the vector, and D as unmingling them
17:07:56 <scarf> cpressey: you don't have to, but you might want to, for code simplicity reasons
17:08:02 <AnMaster> scarf, interesting idea
17:08:09 <cpressey> scarf: That'
17:08:23 <AnMaster> that'?
17:08:23 <scarf> cpressey: your comment was cut off
17:08:23 <cpressey> That's not what I call a strong argument.
17:08:34 <cpressey> Dude
17:08:38 <AnMaster> cpressey, scarf's suggestion about mingling was quite nice
17:08:39 <cpressey> ' is right next to Enter
17:08:45 <scarf> cpressey: well, think about, say, STRN or TOYS; those exist only for code simplicity too
17:08:45 <AnMaster> cpressey, true
17:08:54 <scarf> also, I'm not complaining about the cut-off, just pointing it out in case you missed it
17:08:56 <AnMaster> cpressey, on some layouts at least
17:09:02 <AnMaster> (including mine)
17:09:10 <scarf> there's # between ' and enter on this keyboard
17:09:53 <AnMaster> asdfghjklöä'<lower part of enter, enter takes up two rows>
17:10:24 <scarf> asdfghjkl;'#<lower part of enter>
17:10:43 <MissPiggy> the old pond a frog jumps in splash?
17:10:54 <AnMaster> MissPiggy, ?
17:11:37 <cpressey> I should say, implementing REFC without memory leaks is pretty hard.
17:11:52 <cpressey> I don't know that it's impossible.
17:11:54 <scarf> yep, the only solution's to encode the entire vector into the pointer
17:11:59 <scarf> which requires either bignums or Unefunge
17:12:06 <scarf> (it is very easy to write a non-leaky REFC in Unefunge)
17:12:19 <cpressey> scarf: No, even then, you have to distinguish it from integers which happen to coincidentally have the same value.
17:12:20 <scarf> (because you can make both R and D NOPs)
17:12:28 <Deewiant> arstdhneio'\<lower part of enter>
17:12:28 <cpressey> So you have to carry type information
17:12:36 <cpressey> On the stack and throughout the playfield.
17:12:44 <scarf> cpressey: hmm, no, because nothing's forcing REFC values to be distinct from integers
17:12:55 <Deewiant> You can't add type information
17:13:22 <Deewiant> You can read in an integer with & and use it to access a REFC vector as well as do anything else
17:13:28 <cpressey> scarf: OK, in the bignum case. I guess I'm talking about the non-bignum case.
17:13:46 <AnMaster> cpressey, also unefunge
17:13:54 <cpressey> Deewiant: well, REFC doesn't define what ,D would mean
17:13:56 <scarf> in the non-bignum case, with unefunge, there are a finite number of possible integers, and an equal finite number of possible vectors
17:13:58 <AnMaster> for fixnum befunge-or-above...
17:14:00 <cpressey> It could reflect.
17:14:01 <scarf> so you can just map them one-on-one
17:14:25 <cpressey> Yes, I'm also not very interested in Unefunge.
17:14:37 <scarf> the internal list would be a fixed internal list, {0=>0,1=>1,...}
17:14:48 <scarf> except for bignum and unefunge, though, it's impossible to do without a memleak
17:15:05 <Deewiant> cpressey: REFC just says that if you give it an integer which is the same as one that R earlier pushed it'll work
17:15:13 <Deewiant> It doesn't matter where that integer came from
17:15:17 <AnMaster> Deewiant &cpressey, how does REFC interact with storage offset?
17:15:21 <AnMaster> I don't remember
17:15:29 <cpressey> Deewiant: REFC says nothing about integers
17:15:31 <AnMaster> s/&/& /
17:15:35 <AnMaster> I think that should work
17:15:40 <cpressey> "scalar values"
17:15:41 <AnMaster> (that sed expression)
17:15:48 <Deewiant> cpressey: So you're arguing that "a scalar value" could be a non-stack cell? :-P
17:15:57 <scarf> cpressey: ooh, the idea is that you might be storing something other than integers in fungespace / on the stack?
17:16:00 <cpressey> Deewiant: I'm trying to make an argument for burning REFC
17:16:00 <AnMaster> cpressey, that would be quite ferral
17:16:06 <scarf> then what happens if you p them onto the playfield, then execute them?
17:16:11 <AnMaster> cpressey, well, things implement it
17:16:26 <Deewiant> cpressey: I'd rather make it actually useful ;-)
17:16:28 <AnMaster> oooh that gave me a good idea
17:16:33 <AnMaster> a *wonderful* idea
17:16:37 <AnMaster> scarf, thanks a LOT
17:16:38 <Deewiant> But I guess it's equivalent to burning it and doing something else
17:16:47 <scarf> AnMaster: ?
17:17:02 <Deewiant> AnMaster: REFC says nothing about storage offset so IMO it's not affected by it
17:17:17 <cpressey> Deewiant: someone will surely make an argument that fingerprints are immutable, even if they're crap-ambiguous
17:17:31 <Deewiant> cpressey: Yep, AnMaster will
17:17:42 <AnMaster> scarf, I have considered opaque values. For efunge things like {float,12.42} or {socket, Data_about_it} would be a lot nicer for fingerprints like FILE or SOCK or FPDP
17:17:49 <AnMaster> of course that would be a pain in some other parts
17:17:54 <AnMaster> but it would be kind of neat
17:17:58 <Deewiant> Myself, I don't mind fixing broken-ass stuff in-place
17:18:00 <scarf> the idea of ping them onto the playfield then executing them's a weird one
17:18:00 <AnMaster> but now I figured out a way to solve it
17:18:09 <AnMaster> scarf, the idea is that they are represented as functions
17:18:14 <AnMaster> that can be acted upon
17:18:20 <scarf> ooh, you could have lazy values
17:18:24 <AnMaster> so if something tries to add them together and what not..
17:18:28 <AnMaster> scarf, that too
17:18:49 <scarf> in fact, if you have some sort of lambda fingerprint, you could (very ferally) have a completely lazy funge, and still stay within the spec
17:19:15 <AnMaster> scarf, my primary interest was about what happens if you pass a {socket,523} and a {float,2.3} to FPDP's "add two floating point numbers" or such
17:19:19 <AnMaster> and where the error should be handled
17:19:26 <scarf> FPDP should reflect
17:19:33 <AnMaster> but I think this could mean it can implement the behaviour itself
17:19:33 <scarf> well, the specific command in it should reflect
17:19:50 <scarf> either that, or it should read a floating-point number from the socket and add that
17:19:57 <scarf> operand overloading FTW
17:19:58 <AnMaster> scarf, yes. But there would be a lot of "check what sort of value this is" or a lot of try catch
17:20:00 <AnMaster> elsewhere
17:20:11 <AnMaster> neither of which I liked very much
17:20:18 <scarf> you could centralise it somewhat
17:20:24 <AnMaster> scarf, yes, try catch
17:20:30 <AnMaster> but that is somewhat blunt
17:20:47 <AnMaster> also, efunge is already slow.
17:20:50 <scarf> as in, defining fingerprint commands, you'd say what type of arguments they expected in the specfile-equivalent
17:21:08 <AnMaster> scarf, currently efunge uses the same specfile format as cfunge for the fingerprints
17:21:25 <AnMaster> (and similar shell scripts, but with different code generation output of course)
17:22:02 <Deewiant> AnMaster: Until it's around the level of L::B you can't call it slow
17:22:22 <AnMaster> Deewiant, well, slow enough that I'm somewhat annoyed at waiting on mycology
17:22:39 <Deewiant> How long does it take?
17:22:41 <scarf> Deewiant: hmm, if it doesn't implement hexadecifunge, it should be significantly faster than L::B to not be considered slow
17:22:48 <AnMaster> Deewiant, overall it is a bit slower than ccbi it seems
17:22:56 <AnMaster> varies a bit depending on things
17:23:01 <scarf> *hexadecefunge
17:23:05 <Deewiant> And that makes it annoyingly slow? You're awfully sensitive :-P
17:23:06 <AnMaster> (like, which program)
17:23:42 <AnMaster> scarf, what is hexadecefunge?
17:23:54 <scarf> AnMaster: 16-dimensional funge, of course
17:24:10 <cpressey> Deewiant: What is L::B?
17:24:12 <AnMaster> scarf, oh, not weird topology then?
17:24:19 <AnMaster> cpressey, Language::Befunge
17:24:22 <AnMaster> perl
17:24:24 <Deewiant> cpressey: Language::Befunge, the Perl implementation
17:24:25 <cpressey> Oh, Perl.
17:24:34 <scarf> it supports arbitrary-dimension funge
17:24:36 <scarf> and is incredibly slow
17:24:45 <cpressey> Then shouldn't it be Language::Funge?
17:24:50 <Deewiant> To be fair, it was incredibly slow even before it supported arbitrary-dimensional funges
17:24:56 <Deewiant> cpressey: It didn't always support them
17:24:59 <scarf> cpressey: probably, but it's probably too late to rename it now
17:25:15 <cpressey> Speaking of immutability
17:25:40 <AnMaster> cpressey, it causes problems when breaking previous programs
17:26:05 <AnMaster> cpressey, you should have made "under development" bold type
17:26:07 <asiekierka> back
17:26:10 <AnMaster> then maaaybe ;P
17:26:38 <cpressey> Maybe what?
17:26:52 <AnMaster> cpressey, "allow changes"
17:27:11 <cpressey> I don't understand.
17:27:13 <AnMaster> meh
17:27:17 <AnMaster> never mind
17:27:30 <scarf> we should have a fingerprint which is officially defined to be undefined, and whose semantics change every now and then
17:27:32 <AnMaster> (possibly that was more in-joke than I thought)
17:27:39 <AnMaster> scarf, heh
17:28:57 <AnMaster> cpressey, oh btw... MODU
17:29:02 <AnMaster> cpressey, "R: C-language integer remainder "
17:29:05 <AnMaster> is that C99?
17:29:18 <Deewiant> It predates C99 :-P
17:29:21 <AnMaster> because C89 remainder is actually not well defined for negative values
17:29:29 * cpressey remembers why he walked away from Befunge the first time
17:29:33 <AnMaster> Deewiant, befunge-98 does. But I don't know about that fingerprint
17:29:40 <AnMaster> :(
17:29:43 <Deewiant> Presumably it also does
17:29:47 <AnMaster> Deewiant, well right
17:29:59 <AnMaster> cpressey, fun to revisit for a bit? :)
17:30:09 <scarf> cpressey: you've still managed to invent arguably the most useful of all the esolangs, though
17:30:22 <AnMaster> yeah
17:30:35 <cpressey> Useful measured how?
17:30:44 -!- augur has quit (Ping timeout: 246 seconds).
17:30:49 <Deewiant> Most used of the non-tarpit ones, at least
17:31:08 <scarf> cpressey: useful in how quick it is to write a practical program with it
17:31:19 <asiekierka> cpressey: Which one?
17:31:22 <AnMaster> cpressey, what Deewiant said, and also "capable of interacting with other things with something more than just console io"
17:31:24 <asiekierka> which one is the useful one
17:31:32 <pikhq> Befunge.
17:31:33 <FireFly> Probably befunge
17:31:35 <scarf> as in, if you really wanted to program something, and had only esolangs to do it with, you'd probably use befunge
17:32:16 <AnMaster> cpressey, I can't imagine fungot being possible to write in brainfuck or intercal. For a start it would have needed a proxy program to handle socket and file io multiplexing for it
17:32:17 <fungot> AnMaster: love this song describes me...2 much. knob head. now, their all wanna be friends?
17:32:25 <Sgeo_> Might PSOX help? *evilgrin*
17:32:33 <scarf> AnMaster: wrong there, CLC-INTERCAL can do both
17:32:33 * AnMaster slaps Sgeo_
17:32:40 <AnMaster> scarf, wasn
17:32:51 <scarf> AnMaster: cut-off line
17:33:03 <AnMaster> I know
17:33:13 <AnMaster> scarf, wasn't* that just to other clc-intercal
17:33:16 <AnMaster> (the socket IO)
17:33:24 <AnMaster> stealing variables or something?
17:33:30 <scarf> no, it has syscalls too
17:33:46 <scarf> stealing variables is a favoured method of network communication, as it's higher-level
17:33:53 <AnMaster> scarf, what? arbitrary syscalls?
17:33:57 <scarf> but you can do low-level socket work too if you like, to be compatible with other programs
17:34:02 <scarf> not arbitrary syscalls, a subset
17:34:07 <AnMaster> phew
17:34:13 <AnMaster> scarf, still that is unportable
17:34:19 <scarf> AnMaster: they're relatively portable ones
17:34:24 <AnMaster> scarf, I mean, syscalls on freebsd are different than on linux
17:34:27 <scarf> I think they can all be implemented in portable Perl
17:34:46 <scarf> a syscall from INTERCAL's point of view is "open a socket", not "open a socket using this specific function"
17:34:47 <AnMaster> scarf, which ABI does it assume for the syscalls then?
17:34:55 <AnMaster> scarf, aha
17:34:58 <scarf> it doesn't, CLC-INTERCAL is interpreted
17:35:10 <AnMaster> scarf, well, I thought perl could call native code
17:35:20 <AnMaster> like syscall() in libc or such
17:35:21 <scarf> it can, but it's not implemented like that
17:35:28 <scarf> as in, CLC-INTERCAL isn't
17:35:43 <scarf> although my attempts to port it to DOS failed because it assumed newline=10
17:35:54 <Sgeo_> Twitter uses Ruby [on Rails] apparently
17:36:09 <scarf> Rails and Ruby are really quite different
17:36:23 <scarf> you might as well try to compare Befunge to SCKE, or whatever
17:36:24 <cpressey> Sgeo_: and from what I've heard it's given them quite a bit of pain
17:37:02 <AnMaster> scarf, well, the term "syscall" mislead me here
17:37:38 <Sgeo_> Hm. Howso?
17:37:56 <cpressey> Sgeo_: scaling
17:38:16 <cpressey> Scaling up to however many millions of users they have.
17:38:52 <cpressey> But, that's just a rumour.
17:39:14 <cpressey> It may be anti-Rails agitprop, for all I know
17:39:43 <cpressey> Anyway
17:40:17 <Sgeo_> scarf, I don't know what SCKE is
17:40:42 <scarf> Sgeo_: a funge fingerprint, I just picked one off the top of my head
17:40:43 <cpressey> I think it's more productive, when faced with an ambiguously-defined fingerprint, to propose a new fingerprint with a different name (diff by one letter, say) which fixes the ambiguities.
17:40:57 <scarf> like FING and FNGR?
17:41:09 <Deewiant> FING and FNGR are two quite different approaches
17:41:13 <scarf> yes
17:41:27 <cpressey> Implementations which provide ambiguous fingerprints will do so ambiguously. Good implementations that provide ambiguous fingerprints will allow themselves to be configured to handle the common de facto interpretations of the fingerprint.
17:41:39 <cpressey> That's all.
17:42:13 <Deewiant> If only there were "common de facto interpretations" :-)
17:42:26 <cpressey> Maybe I should have said "most common".
17:42:34 <fizzie> Heh, fungot now has a Twitter account.
17:42:35 <fungot> fizzie: are you sick son of a job drawing conclusions!!! i can't wait for the airshow and that just shows up when the pilot.
17:42:45 <Deewiant> fizzie: What made you think that was a good idea
17:42:50 <scarf> fizzie: does it spout nonsense whenever anyone mentions it?
17:43:07 <Deewiant> scarf: Sounds like a typical Twitter user to me, actually
17:43:25 <fizzie> scarf: I haven't really rigged up the automation yet; that's one possibility. I was personally thinking more about a scheduled "thought for the day" sort of thing.
17:43:39 <scarf> fungot: and what is your thought for today?
17:43:40 <fungot> scarf: i'll take my moron with on r,please.
17:43:48 <Deewiant> :-D
17:43:56 <Deewiant> That's actually a pretty good thought
17:44:05 <scarf> I don't know what it means
17:44:13 <AnMaster> ^style
17:44:13 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc jargon lovecraft nethack pa speeches ss wp youtube*
17:44:19 <AnMaster> ah
17:44:25 <AnMaster> fizzie, make a style twitter?
17:44:26 <AnMaster> then
17:44:32 <fizzie> See http://twitter.com/fungot for the first tweet; that was just a half-manual (automatic babble-generation and automatic posting, but nothing scheduled, just a fire-once thing with a fixed model) run.
17:44:33 <fungot> fizzie: you must be stupid if there were 130 people on the news. if yall want to give 4000 to each chinese citizen to pay off it's debt's)its only gonna get worse and worse each week.
17:44:35 <AnMaster> then use that to generate the new ones
17:44:35 <Deewiant> It's invoking Muphry's, at least
17:44:43 <fizzie> AnMaster: I have a twitter style, it's just not in the bot yet.
17:44:48 <AnMaster> fizzie, ah
17:44:56 <fizzie> AnMaster: I don't have very much data for it yet.
17:45:08 <AnMaster> fizzie, I see
17:45:42 <fizzie> sqlite> select count(*) from tweets;
17:45:42 <fizzie> 11590
17:45:49 <Deewiant> fizzie: Does the "about nethack" show the style it came from or is that actually part of what it said
17:46:00 <fizzie> Deewiant: It shows the style, in this case.
17:46:59 -!- kar8nga has joined.
17:47:12 <AnMaster> fizzie, why a sql db for it?
17:48:02 <fizzie> AnMaster: Why not? Everything can interface with sqlite, and I may want to use some of the tweet-related metadata for selecting things at some point. Admittedly currently a flat file would've worked just as well.
17:49:03 <fizzie> For the twitter style I've just told it to every 10 minutes go and fetch the top-10 "trending" topics from the Twitter API, select one randomly, and fetch 64 latest tweets about that topic.
17:49:06 <AnMaster> fizzie, yeah, well that is what I thought: "it uses flat files"
17:49:19 <AnMaster> also now you forced me to actually define that fingerprint SQLITE
17:49:24 <AnMaster> (or SQL I guess)
17:49:43 <AnMaster> (maybe, when I have time)
17:49:58 <Deewiant> SQLT for SQLite I guess
17:50:10 <AnMaster> Deewiant, why T?
17:50:15 <AnMaster> shouldn't it be SQLL?
17:50:17 <AnMaster> for Lite
17:50:21 <scarf> Deewiant: SQLT reminded me of XSLT
17:50:30 <AnMaster> ouch
17:50:36 <Deewiant> AnMaster: Well, SQLite already has SQL in the name so I was thinking SQLiTe
17:50:53 <Deewiant> SQLL would fit if it were SQL-Lite
17:51:02 <Deewiant> Maybe SQL- ;-P
17:51:02 <AnMaster> hm
17:51:09 <AnMaster> Deewiant, why not SQLITE?
17:51:26 <Deewiant> Depends on what it overlaps with
17:51:31 <Deewiant> In the 32-bit range
17:51:42 <AnMaster> Deewiant, ffs, 32-bit is a thing of the past ;P
17:51:51 <Deewiant> No, it really isn't :-P
17:51:56 <Deewiant> 16-bit pretty much is
17:52:04 <Deewiant> But 32-bit is very much present
17:52:14 <AnMaster> Deewiant, 16 bit is not
17:52:18 <fizzie> The twitter style output generates pretty horribly moronic output, but, well, garbage in and so on.
17:52:22 <fizzie> http://pastebin.com/Aj33WwJn
17:52:23 <AnMaster> Deewiant, look at lots of embedded microcontrollers
17:52:42 <Deewiant> AnMaster: Lots of embedded stuff is actually 32-bit as well
17:53:02 <scarf> fizzie: can you make it just pull from the twitter feeds of intelligent people?
17:53:06 <AnMaster> fizzie, should filter urls from it I think
17:53:10 <Deewiant> And I have a feeling that things are generally going in that direction
17:53:13 <Deewiant> But maybe I'm wrong
17:53:14 <asiekierka> ^style youtube
17:53:14 <fungot> Selected style: youtube (Some YouTube comments)
17:53:27 <AnMaster> Deewiant, well sure
17:53:31 <fizzie> scarf: There are intelligent people there? But sure, theoretically.
17:53:34 <AnMaster> Deewiant, but 12 bits or such is still common
17:53:45 <asiekierka> fungot: Is there a discussion here?
17:53:46 <fungot> asiekierka: what about the ' tenor' roles... it could have been a while!!
17:53:47 <Deewiant> Mayhap
17:53:56 <AnMaster> Deewiant, iirc PIC12F had... hm I don't remember address and data bus sizes
17:54:05 <fizzie> Lots of DSP stuff is (or at least has been) 24 bits; that's a nice intermediate size.
17:54:06 <asiekierka> (the comments were sourced from the top 50 or so videos of 11th May, 2009)
17:54:13 <asiekierka> (492kb of data)
17:54:19 <asiekierka> (all processed to be content-only)
17:54:21 -!- asiekierka has changed nick to asie[afk].
17:55:39 <scarf> ugh, the top videos are bound to have stupid comments
17:55:45 <fizzie> Using real twitter data has the "problem" that it will include lots of @names in it, and those mentioned people might get a bit confused.
17:56:02 <fizzie> Since (as far as I know) they see it when people put their @name in there.
17:56:16 <AnMaster> fizzie, filter @names and http:// then?
17:56:17 <Sgeo_> Confusion is fun!
17:56:32 <fizzie> Yes, I'm not yet sure if it's a problem.
17:56:57 <fizzie> Twitter people might count the end product spam, anyway.
17:57:40 <AnMaster> fizzie, well, filtering it doesn't sound too bad
17:58:00 <asie[afk]> hi fizzie
17:58:12 <asie[afk]> i want to add new youtube comments to fungot
17:58:13 <fungot> asie[afk]: nobody was in middle to the bloke the plane ( alpha-floor protection etc) and loads more cabin crew.
17:58:17 <asie[afk]> the goal is 5MB
17:59:19 <fizzie> I'd really suggest some HTML scraping as opposed to manual collecting, but whatever floats your e-boat, I guess.
17:59:58 <fizzie> AnMaster: But then it doesn't look authentic twittery if it's not full of tinyurl links and @pings and #tags. (Though I guess there's no need to filter #tags; that's just another way people might end up actually seeing those tweets and being confused by them.)
18:00:20 <AnMaster> wth is going on
18:00:34 * AnMaster prods disk, htop and sync
18:00:54 <AnMaster> basically lots of disk io (seek noise), sync just hangs. Everything else is fine
18:01:03 <AnMaster> htop shows no candidate for this
18:01:09 <AnMaster> hrrm it stopped
18:01:25 <AnMaster> aaaie
18:01:31 <AnMaster> [887761.704069] INFO: task sync:24027 blocked for more than 120 seconds.
18:01:31 <AnMaster> [887761.704075] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
18:01:34 <AnMaster> and lots more
18:01:56 <AnMaster> okay going offline for emergency fsck from livecd now
18:04:03 -!- scarf has quit (Remote host closed the connection).
18:04:53 -!- augur has joined.
18:05:20 -!- AnMaster has quit (Read error: Operation timed out).
18:09:19 <cpressey> http://catseye.tc/lab/Befunge-111-Specification-DRAFT.txt
18:09:30 <cpressey> That's the first 1/3 or so of it, mostly definitions.
18:09:48 <cpressey> Defining what it means for an IP to advance is going to be a pain.
18:12:51 -!- anmaster_l has joined.
18:13:03 <anmaster_l> okay it looks like one partition was damaged
18:13:06 <anmaster_l> /tmp
18:13:10 <anmaster_l> all others are fine
18:13:24 <anmaster_l> I guess it is lucky considering...
18:13:32 <anmaster_l> where did scarf go?
18:13:34 <anmaster_l> :/
18:13:48 <fizzie> * scarf has quit (Remote host closed the connection) -- your guess is as good as ours, I guess.
18:14:06 <anmaster_l> ah
18:14:12 -!- kar8nga has quit (Remote host closed the connection).
18:14:32 <anmaster_l> actually that is just the ext* file systems checked so far
18:15:26 -!- oerjan has joined.
18:15:48 <lament> oh come on
18:16:02 <lament> "Every integer in the range of -2,147,483,648 to 2,147,483,647 inclusive must be precisely and reliably representable by a intval."
18:16:12 <lament> So it's OK for other integers to be represented imprecisely and unreliably?
18:16:25 <anmaster_l> lament, where is that from?
18:16:55 <fizzie> anmaster_l: Oh, right, you missed:
18:16:57 <fizzie> <cpressey> http://catseye.tc/lab/Befunge-111-Specification-DRAFT.txt
18:16:57 <fizzie> <cpressey> That's the first 1/3 or so of it, mostly definitions.
18:16:57 <fizzie> <cpressey> Defining what it means for an IP to advance is going to be a pain.
18:17:03 <anmaster_l> ah
18:17:27 <anmaster_l> will check that once desktop is back up
18:18:07 <cpressey> lament: Yes. That's what people mean when they say "32-bit Befunge"... do you have a problem with that?
18:22:37 -!- benuphoenix has joined.
18:23:05 <Sgeo_> Hi
18:23:10 <Sgeo_> I'm about to leave now, so bye
18:23:35 <anmaster_l> cpressey, are you saying OOM should result in exiting?
18:23:41 <anmaster_l> this breaks { behaviour
18:23:48 <anmaster_l> which is to reflect if allocation fails
18:23:50 <anmaster_l> hm
18:23:58 <anmaster_l> this doesn't matter for actual programs
18:24:22 <anmaster_l> but it does cause some headache if you are to implement both 98 and 111
18:24:27 <cpressey> anmaster_l: In general, yes, but I haven't defined { yet.
18:24:29 <anmaster_l> (as a command line flag or such)
18:24:30 -!- benuphoenix has left (?).
18:24:49 <anmaster_l> cpressey, does it have to terminate nicely?
18:25:06 <anmaster_l> cpressey, or is ending with a huge backtrace okay?
18:25:18 <cpressey> anmaster_l: "Implementing both 98 and 111" is a not a design consideration
18:25:27 <cpressey> anmaster_l: "nicely" is not defined
18:25:48 <anmaster_l> cpressey, you know what I mean. Is it allowed to crap all over the place basically in case of OOM
18:26:07 <cpressey> anmaster_l: It doesn't disallow it.
18:26:15 <anmaster_l> hm okay
18:26:38 <cpressey> "You know what I mean" is what got us into this mess. If you want specific, I'm going to be specific.
18:27:00 <cpressey> If you don't want specific, -98 is fine
18:27:39 <anmaster_l> cpressey, it would need to be specific in the spec yes
18:27:48 <anmaster_l> but I don't think IRC is the spec
18:28:14 <cpressey> No, but questions about the spec can't be answered unless they're specific, even if those questions are asked on IRC
18:28:29 <anmaster_l> cpressey, I'm typing this on an uncomfortable keyboard
18:28:35 <anmaster_l> you have to allow for that
18:29:22 <anmaster_l> cpressey, cells yeild 32 by default?
18:29:36 <anmaster_l> cpressey, how does that interact with popping zero on empty stack?
18:29:46 <anmaster_l> or is cell just funge-space here?
18:30:05 <cpressey> anmaster_l: Stacks are not defined in terms of cells, they are defined in terms of intvals.
18:30:36 <anmaster_l> cpressey, so they can't contain opaque objects
18:30:37 <anmaster_l> ?
18:30:40 <cpressey> Sorry, s/intvals/objects/.
18:30:42 <anmaster_l> ah
18:30:53 <cpressey> And yes, cells are effectively only in the playfield
18:31:32 <anmaster_l> fun, I hope no one gets confused reading cfunge source then! (typedef funge_cell is used stack too)
18:32:43 <cpressey> Well, elements on the stack aren't mutable, so there doesn't seem to be any reason to define them the same as cells.
18:32:56 <anmaster_l> cpressey, what exactly is ASCII?
18:33:04 <anmaster_l> shouldn't you refer to the relevant spec for it? ;P
18:33:23 <anmaster_l> cpressey, how are they not?
18:33:30 -!- augur has quit (Ping timeout: 248 seconds).
18:33:33 <anmaster_l> cpressey, there is that FRTH fingerprint which does rot and such
18:33:47 <cpressey> rot can be defined in terms of pushes and pops
18:34:00 <anmaster_l> (http://www.rcfunge98.com/rcsfingers.html#FRTH btw)
18:34:09 <anmaster_l> cpressey, what about IIPC?
18:34:25 <anmaster_l> hm it isn't change in place either I guess
18:35:12 -!- kar8nga has joined.
18:37:34 -!- cpressey has changed nick to cpressey[lunch].
18:38:08 -!- augur has joined.
18:41:21 <anmaster_l> cpressey[lunch], okay that doesn't work
18:41:27 <anmaster_l> it doesn't allow opaque values on the stack
18:41:50 <anmaster_l> the whole point of it is intermixing opaque and normal values
18:41:56 <anmaster_l> as parameters to some fingerprints
18:48:39 -!- alise has joined.
18:51:23 <asie[afk]> http://www.delsquacho.com/articles/ten-youtube-translations.php - This made me smile.
18:51:56 <alise> I am in fact still alive.
18:52:04 <alise> Now I need to find somewhere to put my computer...
18:52:04 <asie[afk]> Nana
18:52:06 <asie[afk]> Nana
18:52:06 <asie[afk]> Nana
18:52:07 <asie[afk]> Nana
18:53:06 <alise> cpressey[lunch] is making a new befunge standard himself?
18:53:07 <asie[afk]> Top 1 use for a Neural Network: Deciphering YouTube comments
18:53:12 -!- oerjan has quit (Quit: Later).
18:53:37 <asie[afk]> Befunge-111
18:53:41 <asie[afk]> which is obviously Befunge 2011
18:53:45 <asie[afk]> WE HAVE 2010 NOW
18:53:45 <asie[afk]> HELLO
18:53:55 <MissPiggy> fuck 2010
18:53:58 <MissPiggy> 2010 doesn't exist
18:54:07 <asie[afk]> OR
18:54:10 <asie[afk]> maybe he just meant
18:54:11 <asie[afk]> Befunge-7
18:55:01 <asie[afk]> `ls
18:55:03 <HackEgo> bin \ cube2.base64 \ cube2.jpg \ hello.txt \ help.txt \ huh \ netcat-0.7.1 \ netcat-0.7.1.tar.gz \ paste \ poetry.txt \ quotes \ share \ test.sh \ tmpdir.32722 \ wunderbar_emporium \ wunderbar_emporium-3.tgz \ wunderbar_emporium-3.tgz.1
18:55:31 <fizzie> alise: Well, you know the saying, never send a boy to do a man's job.
18:55:31 <asie[afk]> `ls
18:55:34 <HackEgo> bin \ cube2.base64 \ cube2.jpg \ hack_gregor \ hello.txt \ help.txt \ huh \ netcat-0.7.1 \ netcat-0.7.1.tar.gz \ paste \ poetry.txt \ quotes \ share \ test.sh \ tmpdir.351 \ wunderbar_emporium \ wunderbar_emporium-3.tgz \ wunderbar_emporium-3.tgz.1
18:55:35 <alise> asie[afk] is still just as annoying.
18:58:14 <cpressey[lunch]> <anmaster_l> it doesn't allow opaque values on the stack <-- please refer to why and how to fix it
18:58:46 <alise> cpressey[lunch]: So you usurped Befunge-10x?
18:58:53 <alise> Thank god. It was awful :P
18:59:09 -!- cpressey[lunch] has changed nick to cpressey.
18:59:30 <cpressey> alise: It? Does a Befunge-10x exist?
18:59:56 <alise> Um, that thing anmaster_l was working on with fingerprints being URIs.
19:00:06 <alise> I say thing; I mean abomination. >_>
19:00:15 <cpressey> Oh, I thought that was 109
19:00:22 <alise> Yeah, but then he failed to get it done in 2009
19:00:25 <asie[afk]> I should make Befunge-911
19:00:29 <alise> I think it was 108 before that
19:03:36 -!- dev_squid has quit (Ping timeout: 258 seconds).
19:04:42 -!- dev_squid has joined.
19:04:59 -!- asie[afk] has quit (Ping timeout: 265 seconds).
19:05:18 <alise> Welp, no place to put the computer.
19:05:57 <alise> 09:29:29 * cpressey remembers why he walked away from Befunge the first time
19:06:00 <alise> Ohh, ice burn.
19:12:17 <cpressey> I'm working on a "Notes" document to accompany the spec and contain all the non-normative commentary... hopefully it'll help make things clearer.
19:14:54 <pikhq> alise: So, new place, eh?
19:15:18 <alise> Well, not permanent. Only for, well, this night, pretty much. Sigh.
19:19:26 <anmaster_l> cpressey:
19:19:30 <anmaster_l> "In Befunge-111, any stack can only contain one kind of object."
19:19:34 <alise> cpressey: Allow objects on the stack.
19:19:41 <anmaster_l> that is the problematic phrase
19:19:42 <alise> i.e. objects and intvals
19:19:45 <alise> It will be fun and hilarious
19:19:51 <alise> oh lol
19:19:55 <alise> i fidn' teven see this convo
19:19:59 <alise> *didn't even
19:20:30 <alise> i would really like my computer :|
19:23:15 <anmaster_l> hm?
19:23:57 <cpressey> anmaster_l: That kind of object is "object", which is either an intval or an opaque. I realize this wording is confusing. I'll fix it.
19:24:22 <anmaster_l> cpressey, right
19:24:39 <anmaster_l> cpressey, it sounds like it is one kind of object per stack
19:24:43 <anmaster_l> (and that is surely wrong)
19:24:50 <cpressey> _object_ is horrible word to have a definition of
19:25:04 <anmaster_l> cpressey, what about value?
19:25:24 <cpressey> Yeah, value is OK. Don't ask me to define it though.
19:25:42 <cpressey> That's the sort of thing that makes philosophy careers.
19:26:11 <anmaster_l> cpressey, or entenity (sp? argh)
19:26:21 <fizzie> "object: region of data storage in the execution environment, the contents of which can represent values" (C99 is a bit pragmatic)
19:26:55 <anmaster_l> cpressey, actually, value would be confusing
19:27:06 <anmaster_l> object or entenity (again: spelling?)
19:27:09 <anmaster_l> are better
19:27:17 <alise> entity
19:27:22 <fizzie> Eternity.
19:27:23 <anmaster_l> alise, thanks
19:27:23 <cpressey> "element"?
19:27:30 <pikhq> alise: So, you're at a hotel or something and will be at place later. "Fun".
19:27:49 <alise> Entity: (forall x. x is an entity) & ~(exists x. ~(x is an entity))
19:27:53 <anmaster_l> cpressey, an element of an array on the stack?
19:27:54 <alise> Philosophy is like logic but with more redundancy.
19:27:55 <anmaster_l> or SETS
19:28:12 <cpressey> "thing"
19:28:13 <anmaster_l> cpressey, calling it element in general would make that SETS fingerprint confusing perhaps
19:28:15 <MissPiggy> sets don't exist
19:28:17 <anmaster_l> cpressey, hehe
19:28:21 <pikhq> alise: Logic is often considered part of philosophy.
19:28:33 <alise> By idiots.
19:28:39 <anmaster_l> MissPiggy, I'm talking about http://www.rcfunge98.com/rcsfingers.html#SETS
19:28:44 <MissPiggy> philosophy without logic is like sex without marrige
19:29:01 <alise> MissPiggy: Less restraining?
19:29:02 <alise> :P
19:29:09 <cpressey> (More diseases)
19:29:13 <pikhq> I consider it more a tool needed to do philosophy sanely.
19:29:17 <pikhq> (not that this stops people from doing it insanely)
19:29:53 -!- charlls has joined.
19:30:25 <cpressey> Maybe I'll just define "object stack", "stack stack", and "fingerprint semantic stack" as seperate things instead of trying to generalize (which is what is leading to me needing the word "thing")
19:30:40 <alise> Object or stack or fingerprint semantic...
19:30:46 <anmaster_l> cpressey, aha
19:30:51 <alise> cpressey: How about having object/stack/fingerprint semantics "types"?
19:30:59 <alise> And then say "A stack of a certain type ... contains elements of that type ..."
19:31:09 <cpressey> Either that, or objects can be stacks and they can be semantics and that is Wrong, or at least requires a lot more thought
19:31:22 <alise> So you say a stack of objects, a stack of stacks of a certain type, and a stack of fingerprint semantics.
19:31:39 <anmaster_l> cpressey, oh fun, lets have a fingerprint that can place stacks as opaque values on your stack
19:31:42 <cpressey> Or the type intval|opaque could have a name besides "object"
19:31:57 <anmaster_l> like, popping TOSS off, and pushing it as a opaque value on the new TOSS
19:32:04 <anmaster_l> ;)
19:32:22 <cpressey> alise: I think I like that approach
19:32:35 <anmaster_l> alise, that might work
19:32:43 <cpressey> anmaster_l: Nothing stopping you, really, since opaque is opaque is opaque
19:33:13 <anmaster_l> cpressey, true, anyway I come up with semi-opaque lazy lambdas now
19:33:19 <anmaster_l> that will execute when inspected
19:33:20 <anmaster_l> by anything
19:33:32 <anmaster_l> and thus try to present themselves with a reasonable value
19:33:41 <anmaster_l> cpressey, of course this is extremely feral
19:33:54 <anmaster_l> also it requires a lot more thought
19:34:11 <alise> cpressey: Allow the core operations to be performed on opaque objects, with semantics defined by the opaque object.
19:34:22 <anmaster_l> if you made all values functions, then this could work transparently
19:34:26 <alise> So we can have y push a bunch of lazy values that only evaluate when you use them.
19:34:38 <anmaster_l> either have values that are just "dumb" functions, returning their own value
19:34:42 <anmaster_l> or have advanced ones
19:34:48 <alise> OR
19:34:51 <anmaster_l> that could vary depending on what the operation is
19:34:56 <alise> Have values that do completely random things wwhen you operate on them
19:34:57 <alise> *when
19:35:01 <alise> +? Yes, that outputs the stack stack.
19:35:03 <anmaster_l> alise, and lazy values too of course
19:35:08 <alise> anmaster_l: Those can just be done as opaques.
19:35:28 <anmaster_l> alise, well, there is a bit of confusion about how many elements a lazy value could expand to
19:35:30 <anmaster_l> and the stack size
19:35:44 <anmaster_l> (you can get stack size with y remember?)
19:35:50 -!- charlls has quit (Read error: Connection reset by peer).
19:36:16 <anmaster_l> <alise> Have values that do completely random things wwhen you operate on them <-- yes :D
19:36:29 <anmaster_l> however, I think this is best left out of 111
19:36:40 <anmaster_l> it needs more thought
19:36:44 <alise> Fine, I'll just define my own... Abstract Funge!
19:36:54 <alise> N-dimensional? Who says it needs to be in only one kind of space?
19:37:00 <alise> Numbers? Why restrict yourself thusly?!
19:37:07 <anmaster_l> alise, call it beabstract?
19:37:08 <alise> It will be a monoidal semiring.
19:38:15 <anmaster_l> alise, anyway, one of the goals with befunge-111 is that it shouldn't break the majority of previous programs (some depending on corner cases are ok)
19:38:27 <anmaster_l> and it should clear up confusion
19:38:58 <anmaster_l> plus move some stuff, like tio= into fingerprints (and keep the existing chars implementation defined)
19:39:02 <anmaster_l> (for those)
19:39:06 <alise> cpressey: Can I make a humble suggestion? (note: it's crazy)
19:39:39 <anmaster_l> (alise, read logs for the last few weeks or so if you want more details, there was quite a lot of discussion)
19:39:52 <alise> Let an IP be in multiple places at once
19:40:00 <alise> That is, multiple velocities going different ways
19:40:06 <alise> Quantumly!
19:40:09 <anmaster_l> har
19:40:15 <anmaster_l> fine for a fingerprint I feel
19:40:15 <alise> DO IT
19:40:18 <alise> anmaster_l: NO
19:40:25 <alise> stop trying to keep funge boring :(
19:40:41 <Deewiant> s/boring/practical/
19:40:42 <cpressey> alise: For orthogonality, all vectors would need to be quantum superpositions of multiple vectors.
19:41:00 <cpressey> And the stack, too.
19:41:12 <anmaster_l> cpressey, and funge space?
19:41:18 <alise> cpressey: Whyever not? :D
19:41:24 <cpressey> No, funge space can be reduced to a single cell.
19:41:34 <alise> Ooh. Go in EVERY DIRECTION AT ONCE.
19:41:39 <alise> Your IP would /explode/ outwards.
19:41:45 <alise> Exploring t'forbidden space.
19:41:47 <Deewiant> And what would it do?
19:41:48 <alise> Now these wouldn't be separate IPs, oh no.
19:41:53 <alise> Go on a jump character?
19:41:56 <alise> ALL IPS JUMP
19:42:00 <alise> Change direction?
19:42:05 <alise> As do of your IPs.
19:42:08 <alise> *all of
19:42:14 <alise> Separate, yet equal!
19:42:17 <alise> White, yet black!
19:42:29 <Deewiant> Silly, yet silly!
19:42:30 * alise takes another hit from the bong
19:42:37 <alise> Also: ALBATROSS IPs
19:42:53 <anmaster_l> alise, your ideas are fine for some other be* language
19:42:56 <anmaster_l> but not befunge
19:43:00 <anmaster_l> see logs about that
19:43:04 <alise> cpressey: Tell him that he is wrong!
19:43:05 <alise> DO IT
19:43:11 <Deewiant> Too bad the name bequnge is already taken
19:43:21 <alise> befuck
19:43:24 <anmaster_l> alise, cpressey argued we should keep befunge close to the current one
19:43:29 <anmaster_l> so tough luck
19:43:34 <alise> That was before cpressey heard my wonderful idea.
19:43:36 <Deewiant> befuckyoubecausequantum
19:43:44 <anmaster_l> alise, also, he suggested other fungoids could be created
19:43:47 <anmaster_l> for weird ideas
19:43:47 <alise> BeQuantumlyFucked
19:43:49 <anmaster_l> like those
19:43:51 -!- kar8nga has quit (Remote host closed the connection).
19:44:46 <cpressey> alise: If you interpret the Befunge-111 in multiple languages simultaneously, you will find it contains all of your proposed features, and more.
19:44:49 <anmaster_l> alise, here is a suggested esolang name. Design the matching esolang: undertrefuck (read as: under-tre-fuck)
19:44:58 <cpressey> *spec
19:44:59 <alise> Fucking under trees.
19:45:06 <alise> cpressey: :D
19:45:25 <alise> BeEfucking
19:45:31 <alise> Sexual intercourse with bees. As a language.
19:45:35 <anmaster_l> alise, or combine underload, trefunge and brainfuck
19:45:52 <Deewiant> urefucked?
19:45:59 <alise> Unlambda + INTERCAL + Brainfuck + Underload = ??
19:46:00 <anmaster_l> Deewiant, heh
19:46:04 <alise> Unlambda + INTERCAL + Brainfuck + Underload + Befunge = ??
19:46:05 <alise> I should say
19:46:09 <alise> The 5 classics
19:46:10 <anmaster_l> hm
19:46:30 <anmaster_l> alise, "a messy bloated tarpit"
19:46:36 <anmaster_l> that is what you replace ?? with
19:46:36 <alise> BerainfunINTERCALoadge
19:46:54 <alise> Ber ayen fun interca loadge
19:50:09 <alise> Esolang idea: Axiom.
19:50:19 <anmaster_l> mhm
19:50:35 <alise> Example: forall x. x=3 -> outputted(start, x)
19:50:50 <alise> I.e., for all values x, x is 3 implies x was outputted at the start of execution.
19:51:25 <alise> exists x. x = inputted(start)
19:51:36 <alise> I.e., there exists a value x such that x is equal to what was inputted by the user at the start of the program.
19:51:50 <alise> exists x. x = inputted(start) & outputted(start+1, x)
19:52:06 <alise> I.e., there exists a value x such that x is equal to what was inputted by the user at the start of the program, and that was outputted at the start of the program + 1 event.
19:52:19 <alise> (exists x. x = inputted(start+1) & outputted(start, x)) - fails, contradictory
19:52:31 <alise> or rather impossible, not contradictory necessarily
19:52:39 <alise> it just /happened/ to be the same thing printed as you put in :)
19:56:02 <alise> forall n. forall x. outputted(n, x-1) & (x % whatever) = 0 -> outputted(n+1, x)
19:56:07 <alise> you get the idea
20:00:25 <anmaster_l> alise, spec and implement it then
20:01:00 <cpressey> > ; ; ; ; @
20:01:08 <cpressey> How many ticks before it halts?
20:01:30 <anmaster_l> cpressey, iirc 98 says space takes no ticks, and nor does ;; does it?
20:01:36 <anmaster_l> I'm not completely sure
20:02:26 <anmaster_l> "Like space, this takes zero ticks to execute, so that subroutines, comments, and satellite code can be insulated by surrounding it with ; markers, with no effect on multithreading."
20:02:40 <anmaster_l> cpressey, so I guess: tick 1: >, tick 2 @
20:02:44 <cpressey> I would say it executes >, then @, then it's over
20:02:46 <cpressey> Yeah
20:03:03 <anmaster_l> cpressey, better check with ccbi on this (cfunge doesn't track tick counts)
20:03:31 <anmaster_l> Deewiant spent quite a lot of time figuring this out
20:04:26 <Deewiant> Yeah, just run with ccbi's debugger ;-P
20:04:28 <alise> cpressey: space taking zero ticks sucks by the way
20:04:30 <alise> imo.
20:04:32 <Deewiant> It's the spec 2.0!
20:04:38 <cpressey> This is ugly. I'm going to have to define a single ; in a path as a special case.
20:04:44 <Deewiant> Why
20:04:46 <anmaster_l> cpressey, how is that?
20:04:48 <alise> or, well, I hate sgml spaces more
20:04:49 <Deewiant> There is never only a single ; in a path
20:04:49 <anmaster_l> cpressey, it wraps around
20:04:51 <cpressey> alise: Well, we want wrapping to complete in finite time
20:05:03 <alise> cpressey: Not SGML spaces + A run of spaces takes 0 ticks. But please no SGML spaces.
20:05:15 <cpressey> Deewiant: for my defn of 'path' right now there can be. this might chaneg
20:05:25 <anmaster_l> cpressey, I think SGML spaces should be kept now
20:05:27 <anmaster_l> they are useful
20:05:31 <alise> nooooooooOOOOOO
20:05:33 <anmaster_l> some programs I wrote made use of them
20:05:36 <cpressey> Fuck "useful"
20:05:42 <cpressey> "useful" has no meaning here
20:05:45 <anmaster_l> for things crossing each other
20:05:57 <Deewiant> cpressey: Your definition is poor ;-P
20:06:00 <anmaster_l> cpressey, like two strings intersecting, one vertical one horizontal
20:06:10 <cpressey> Deewiant: which is why it might change :)
20:06:11 <alise> Deewiant: You just don't want to change Mycology :)
20:06:20 <MissPiggy> I want to make one of those markov bots
20:06:30 <anmaster_l> cpressey, it will change due to wraparound
20:06:38 <Deewiant> alise: This wouldn't change anything since it sounds to me that the semantics are the same
20:06:42 <MissPiggy> well I just want to put text file in and get a bot out..
20:06:50 <alise> Deewiant: I just meant in general :P
20:07:22 <cpressey> My definition right now is only the "ray" extending outward. It needs to be the "line". Then maybe behaviour w.r.t semicolons will be easier to defnie
20:07:33 <cpressey> Or not
20:07:34 <Deewiant> alise: Well of course not ;-)
20:07:48 <anmaster_l> cpressey, look, it makes perfect sense if you considers wraparound
20:08:05 <anmaster_l> cpressey, the IP will always wrap, sooner or later
20:08:18 <Deewiant> cpressey: It /is/ a ray, it just crosses over itself ;-P
20:08:25 <cpressey> anmaster_l: I know it makes sense. The problem is that it needs to be worded in the form of an unambiguous definition.
20:08:27 <anmaster_l> cpressey, you could define a "wrapping ray"
20:08:36 <anmaster_l> cpressey, and then use that in there
20:08:44 <alise> If you have multiple velocities
20:08:47 <anmaster_l> if you need to keep ray and wrapping ray separate
20:08:49 <alise> The ray can actually CROSS OVER ITSELF
20:08:50 <alise> <3
20:09:00 <alise> Two sub-IPs collide and form one IP
20:09:03 <alise> With the average velocity of both
20:09:10 <alise> This is brilliant, do not deny it
20:09:15 <anmaster_l> why did this make me think of ghostbusters...
20:09:28 <alise> Don't cross the IPs!
20:09:33 <anmaster_l> oh right
20:09:37 <cpressey> ..., Ray!
20:10:22 <anmaster_l> cpressey, so suggestion: non-wrapping ray can sometimes be useful (some fingerprints that write a 0"gnirts" into funge space, with a given delta for example)
20:10:34 <anmaster_l> cpressey, so just define wrapping and non-wrapping rays
20:10:39 <cpressey> Or I'll just describe this procedurally
20:10:57 <anmaster_l> cpressey, defined wrapping yet btw?
20:11:38 <anmaster_l> with that, a wrapping ray would be trivial
20:11:50 <anmaster_l> so then defer defining ; until you defined wrapping
20:13:08 <alise> cpressey: A suggestion: Wrapping occurs when you hit an untraversed cell: all the cells specified that aren't just spaces around like befunge-98 wrapping rule at the start are traversed, anything p'd is traversed,
20:13:13 <alise> anything leading to a traversed cell is traversed,
20:13:24 <alise> and everything any IP has ever landed upon is traversed
20:13:40 <anmaster_l> alise, that doesn't allow for bounds to shrink
20:13:40 <alise> "Leading" meaning "under the current velocity"
20:13:49 <alise> anmaster_l: Yes it does, it's just an optimisation
20:13:52 <anmaster_l> which is important wrt p with space
20:13:57 <alise> Since runs of spaces take 0 time,
20:14:00 <anmaster_l> alise, it is a correctness issue for y
20:14:01 <alise> Just set them to spaces
20:14:07 <alise> anmaster_l: So fix y
20:14:13 <anmaster_l> alise, fix it how?
20:14:32 <alise> Make it not cause an incorrectness issue
20:14:56 <anmaster_l> alise, well since it *pushes bounds* on stack I don't see how you mean it can not depend on that
20:15:43 <alise> Define it to be the maximum bounds ever
20:15:55 <Deewiant> What breaks y here?
20:15:56 <anmaster_l> alise, there are good reasons not to
20:15:57 <alise> i.e. the size of the region of traversed cells at its maximum at any point in the past or present
20:16:08 <alise> Deewiant: Nothing
20:16:11 <alise> Since bounds never shrink in my system
20:16:12 <alise> So, yeah
20:16:13 <anmaster_l> alise, and a lot of effort went into making sure it shrunk to be current minimum bounds
20:16:18 <anmaster_l> ...
20:16:31 <alise> Any such shrinkage is just an optimisation
20:16:35 <alise> So don't expose that optimisation to y, duh
20:16:45 <anmaster_l> alise, no it isn't. it is a correctness issue according to mycology
20:16:49 <anmaster_l> and I agree
20:16:51 <alise> In Befunge-98
20:16:57 <alise> We're specifying a new language here, hellooooooooo
20:17:08 <anmaster_l> alise, it is a revision of it.
20:17:16 <Deewiant> Where is the non-shrinkage happening
20:17:20 <anmaster_l> also it is nicer to have bounds be the minimum bounding box at any time
20:17:34 <anmaster_l> Deewiant, read what he suggested above
20:17:34 <Deewiant> You just said "wrapping occurs at point x"
20:17:39 <Deewiant> I did
20:17:49 <alise> Let me specify it more precisely.
20:17:57 <anmaster_l> well I guess you could have two sets of bounds
20:18:08 <cpressey> alise: Much as I want to, I don't think too much can be made backwards-incompatible.
20:18:21 <alise> This wouldn't be incompatible at all apart from some minor detail of y :-)
20:18:37 <cpressey> (speaking in general, not sure what the current discussion centers around)
20:18:38 <Deewiant> It would still not be incompatible IMO
20:18:39 <anmaster_l> cpressey, yep, a backwards incompat one can be made as a different language, or as a feral fingerprint
20:18:52 <anmaster_l> (depending on the nature of the backwards incompat)
20:18:53 <Deewiant> You just defined the semantics of wrapping
20:18:59 <Deewiant> Which is invisible to everything
20:19:06 <Deewiant> What cells are "traversed" matters not since they're spaces
20:19:13 <anmaster_l> Deewiant, true. y bounds might be separate
20:19:29 <Deewiant> An impl is allowed to allocate 4G*4G and traverse every single space if it wants to
20:19:32 <Deewiant> The semantics are the same
20:19:42 <anmaster_l> yes
20:19:50 <alise> Whenever the IP would advance to an /untraversed/ cell, it instead {wrapping stuff goes here}. An untraversed cell is a cell that is not traversed. A traversed cell is a cell that satisfies one or more of the following properties: * It was in the original program source and (insert stuff here to handle extraneous spaces, using Befunge-98 rules). * It has been advanced to by an IP at some point in the program without wrapping occur
20:19:50 <alise> OR
20:19:57 <anmaster_l> Deewiant, how much is 4G*4G btw?
20:20:14 <alise> * If the IP continued on its current velocity, it would eventually reach a traversed cell without wrapping.
20:20:17 <alise> The end.
20:20:29 <Deewiant> anmaster_l: 17-19 exabytes or so?
20:20:35 <anmaster_l> ah
20:20:45 <Deewiant> Or "square gigabytes" if you prefer :-P
20:20:46 <alise> cpressey: ^
20:20:55 <anmaster_l> alise, you forgot about one thing
20:20:56 <alise> I think this definition is general enough to withstand all the ferality from any fingerprint you wish.
20:21:03 <anmaster_l> alise, writing a value to said cell
20:21:12 <alise> anmaster_l: "It has been modified over the course of the program"
20:21:18 <cpressey> alise: Currently, 'p'ing spaces into untraversed locations doesn't change wrapping... I'm not sure if your defn does or not. It might not, but it's not obvious to me yet.
20:21:24 <anmaster_l> alise, you missed out on that
20:21:28 <anmaster_l> alise, your message was cut off
20:21:29 <anmaster_l> ...
20:21:30 <alise> anmaster_l: k
20:21:40 <anmaster_l> "* It has been advanced to by an IP at some point in the program without wrapping occur"
20:21:40 <alise> cpressey: If you p something really far away, then set off on a course towards it, you won't wrap until you hit it.
20:21:43 <anmaster_l> alise, ^
20:21:48 <anmaster_l> alise, it ended there
20:21:50 <alise> occuring. * It has been modified over the course of the program.
20:21:54 <alise> And then the OR, and the line after.
20:22:03 <anmaster_l> alise, fix your client btw :P
20:22:33 <alise> I'm using webchat.freenode.net in IE on someone else's machine because there's nowhere to put my iMac because I'm at somebody else's house because of reasons out of my control.
20:22:37 <alise> So shut up.
20:22:44 <anmaster_l> mhm
20:22:48 <cpressey> Erm, since Funge-98 programs can't rely on more than 4G*4G playfield, and still only have (effectively) a single stack, does this mean Befunge-98 is not TC?
20:22:59 <Deewiant> Eh?
20:23:11 <anmaster_l> cpressey, befunge-98 allows larger ones
20:23:13 <Deewiant> Stack stack, dude
20:23:20 <anmaster_l> and stack-stack yes
20:23:21 <cpressey> anmaster_l: Allows, but does not guarantee.
20:23:22 <anmaster_l> Deewiant, err no
20:23:31 <anmaster_l> Deewiant, y can query size for each stack on stack stack
20:23:40 <cpressey> Deewiant: stack stack = single stack with markers, I think.
20:23:55 <cpressey> (Didn't we have this conversation?)
20:23:57 <fizzie> cpressey: You can make a tape out of the stack stack using the stack stack ops.
20:24:03 <anmaster_l> cpressey, that is an implementation detail
20:24:10 <anmaster_l> at least I have not implemented it like that
20:24:10 <cpressey> fizzie: That would save it.
20:24:14 <Deewiant> anmaster_l: But it isn't specced that it has to be a result that meaningfully fits in a cell :-P
20:24:23 <anmaster_l> Deewiant, eh?
20:24:29 <alise> cpressey: I don't think my definition of traversable has any flaws.
20:24:41 <alise> It's basically just a refinement and formalisation of the Befunge-98 wrapping rules.
20:24:41 <Deewiant> anmaster_l: E.g. CCBI will happily push INT_MIN if you push 2 gigacells
20:24:44 <anmaster_l> Deewiant, 0y not fit on stack?
20:24:53 <Deewiant> Push INT_MIN for the size, I mean
20:24:56 <alise> (In the 98 spec they're basically "It wraps like regular 2d space except not like that if you're in other dimensions. Happy/")
20:24:58 <alise> *Happy?
20:26:06 <anmaster_l> I think alise's suggestion might work. Of course y would need separate (always minimal) bounds
20:26:21 <Deewiant> cpressey: C doesn't guarantee infinite memory either, does that mean it's not TC?
20:26:29 <anmaster_l> (except for ATHR, but that is feral so it is okay for it to say that bounds updates might take a while to propagate)
20:26:44 <cpressey> Deewiant: I don't consider C to be TC, no.
20:26:49 <anmaster_l> Deewiant, iirc that has been discussed here
20:26:57 <Deewiant> cpressey: What /do/ you consider TC? :-)
20:27:24 <anmaster_l> cpressey, iirc C is TC with file io
20:27:24 <alise> Oh, you may also want to add:
20:27:28 <fizzie> Deewiant: Only languages that have infinite storage, yet have been implemented on finite computers.
20:27:40 <cpressey> Deewiant: It's more like "does it provide an operation that could always access more memory *if* that memory was available"? Addressing memory with fixed-size pointers doesn't count. (but car and cdr do.)
20:27:47 <alise> that a cell is also traversable if a fingerprint deems it to be so
20:27:55 <alise> (but feral fingerprints override the spec anyway, so possibly redundant?)
20:27:58 <anmaster_l> cpressey, befunge-98 is TC then. bignum is allowed I argue
20:28:08 <alise> anmaster_l: Only if you use dud values for bits
20:28:11 <alise> WHich is breaking the spec
20:28:12 <alise> *Which
20:28:20 <anmaster_l> alise, it doesn't forbid it either
20:28:29 <alise> You need to push the number of bits in a cell
20:28:29 <anmaster_l> alise, I mean -1 for number of bytes per cell
20:28:33 <alise> You don't, you push -1
20:28:36 <alise> You violate the spec
20:28:36 <alise> Q.E.D.
20:28:42 <anmaster_l> alise, yes, but the spec doesn't forbid that either
20:28:56 <pikhq> C doesn't merely *not guarantee* infinite memory, it requires finite memory.
20:29:04 <anmaster_l> pikhq, indeed
20:29:09 <pikhq> It can be arbitrarily large, but most have a bound.
20:29:14 <pikhq> Erm. Must.
20:30:27 <alise> anmaster_l: You have to push the bit width
20:30:28 <alise> You do not
20:30:30 <alise> That is violating the spec
20:30:35 <alise> Simple as
20:30:43 <anmaster_l> alise, no
20:30:48 <cpressey> So if I define a language with two instructions, and the meanings of both instructions are implementation-defined, then that language is TC, because it is allowed for an implementation to treat the instructions as encoding a UTM.
20:31:01 <Deewiant> cpressey: I see. By that definition, whether Funge-98 is TC depends on what part of the spec you read ;-)
20:31:06 <anmaster_l> alise, please read the spec
20:31:18 <anmaster_l> alise, "1 cell containing the number of bytes per cell (global env)."
20:31:20 <anmaster_l> not bits
20:31:25 <alise> Same thing
20:31:29 <alise> A bignum does not have -1 bytes per cell
20:31:31 <anmaster_l> alise, anyway, one could define bytes differently
20:31:35 <alise> No, you can't
20:31:43 <alise> Not even cpressey would consider that reasonable
20:31:48 <anmaster_l> alise, I define my bytes to be -(one bignum)
20:31:58 <alise> Just admit you're violating the spec
20:32:11 <anmaster_l> alise, it's a corner case
20:32:23 <alise> cpressey: Oh, please step in and resolve this ridiculousness.
20:32:25 <anmaster_l> I agree on that
20:32:32 <fizzie> pikhq: I think we did come to the conclusion that C's file IO parts are vaguely enough defined that you can still have a conforming C implementation which has an infinite tape affixed to a file (so that you move around the tape by writing special operations into the file), and thusly make it TC, but you might not want to count that.
20:32:46 <alise> I can't even believe anmaster_l is defending "I have -1 bytes per cell because I say the size of a byte is minus the size of one bignum."
20:33:10 <anmaster_l> alise, that was tongue in cheek -_-
20:33:17 <anmaster_l> alise, whooosh
20:33:29 <alise> All discussion about Befunge is tongue-in-cheek
20:33:40 <alise> But you were being just as ridiculous about refusing to admit you violate the spec before
20:33:56 <alise> And, also, it wasn't funny insofar as it was the obvious thing to say, were your intention to make the most boring non-excuse there is.
20:33:58 <fizzie> alise: Yes; personally I'd argue based on the incredible vagueness of "typically 4, could also be 2, 8, really really large, infinity, etc." (I mean, "etc."?), but that's not *so* convincing either.
20:34:07 <anmaster_l> alise, I don't think I violate the spec. But yes 0 might be better than -1
20:34:28 <pikhq> fizzie: Yes, but aside from file IO, C is required to be an FSM.
20:34:32 <alise> I'm just going to defer the only person who has any actual idea about the spec.
20:34:38 <pikhq> :)
20:34:47 <alise> *defer to
20:34:50 <anmaster_l> alise, "aka cell size. Typically 4, could also be 2, 8, really really large, infinity, etc. " <-- yes I represent infinity as -1 here
20:34:52 <cpressey> http://pastie.org/852357
20:34:52 <alise> cpressey: Pushing -1 for the bytes-per-cell value in y is verboten unless you actually have -1 bytes per cell. Yes? And a bignum does not take up -1 bytes per cell.
20:35:27 <cpressey> alise: The spec says: "2. 1 cell containing the number of bytes per cell (global env). aka cell size. Typically 4, could also be 2, 8, really really large, infinity, etc."
20:35:33 <cpressey> WITHOUT SAYING HOW TO REPRESENT INFINITY
20:35:38 <alise> Well, yes.
20:35:42 <alise> But -1 isn't infinity, it's -1.
20:35:47 <alise> That's pretty obvious.
20:36:02 <alise> (So "infinity" is just bunk there.)
20:36:06 <fizzie> anmaster_l: Do you happen to know Erlang's actual bignum format, by the way? I only know how GMP does it, and that particular library has a (surprisingly small) MAX_BIGNUM.
20:36:16 <Deewiant> anmaster_l: You should push a function that, when accessed, gives the largest number thus far used by the program + 1
20:36:19 <cpressey> Well, if I'm a Befunge program, with no knowledge of what could be interpreting me.
20:36:21 <alise> GMP has MAX_BIGNUM?
20:36:23 <alise> Wowzers.
20:36:25 <cpressey> And I run y.
20:36:30 <cpressey> And I look at the second cell.
20:36:35 <cpressey> And I see "-1"
20:36:43 <cpressey> What am I supposed to think?
20:36:49 <anmaster_l> fizzie, no idea actually
20:36:49 <fizzie> alise: Yes; on a 32-bit system, the MAX_BIGNUM value itself takes 8 gigabytes of storage, though. It's a bit large, but definitely not infinite.
20:36:57 <alise> "If I push values to the stack, I'll use less memory!"
20:36:58 <anmaster_l> Deewiant, nice idea
20:37:08 <alise> "Then The User will love me more!"
20:37:22 <Deewiant> alise: :-D
20:38:06 <fizzie> On a 64-bit system, the GMP MAX_BIGNUM actually takes only 16 gigabytes of storage, which is not so huge (if you compare to the addressable space); they use a signed 32-bit value as the counter of (in this case 64-bit) "limbs" of data bits.
20:38:18 <alise> Ah
20:38:24 <alise> I would use a pointer to the last one
20:38:34 <alise> After all, if you can't address the last bignum you can't access it
20:38:35 <alise> So it's foolproof
20:38:57 <anmaster_l> alise, what says it must be in one sequence=
20:39:00 <anmaster_l> s/=/?/
20:39:12 <anmaster_l> couldn't it be allocated in large chunks
20:39:19 <alise> What?
20:39:25 <pikhq> Hmm. Signed 32-bit value for a length?
20:39:37 <pikhq> That's retarded. Just use size_t.
20:39:43 <anmaster_l> alise, if you are near filling the address space, getting area after the end of the number might be hard
20:39:44 <fizzie> pikhq: The sign bit holds the sign of the actual value.
20:39:56 <anmaster_l> fizzie, ssize_t then?
20:39:58 <alise> fizzie: x_x
20:39:59 <Deewiant> cpressey: Just a nit: I don't like "at the edge of the world", it sounds like there's an actual edge on which you're standing, at the other side is the world and the other side nothing, but you've defined it as including that "nothing" as well
20:40:05 <alise> anmaster_l: not after
20:40:06 <pikhq> fizzie: That's... Silly.
20:40:07 <alise> you point to the last one
20:40:18 <fizzie> pikhq: And they argue that 32 bits is "large enough" and saves four bytes of space from each GMP integer. Hey, I didn't make it.
20:40:26 <cpressey> Deewiant: would "over the edge" be better?
20:40:26 <alise> Deewiant: Which is why cpressey should use traversable cells >:(
20:40:37 <alise> TRAVERSAAAAAAAAAAABLLLLLLLLLLLLLLLlle
20:40:50 <Deewiant> cpressey: I'd prefer that, yes; in my brain the "edge" is the edgemost non-marker cell
20:40:54 <pikhq> fizzie: 4 bytes... Per *number*.
20:41:14 <pikhq> What was that about "premature optimisation"?
20:41:28 <cpressey> Deewiant: But the procedure itself appears... uncontroversial?
20:41:39 <anmaster_l> cpressey, you forgot to reflect the backtrack of the IP I think?
20:41:48 <anmaster_l> cpressey, so now it points in the wrong direction doesn't it
20:41:57 <Deewiant> Right
20:41:59 <anmaster_l> maybe I misread
20:42:04 <anmaster_l> it's somewhat confusing that
20:42:36 <cpressey> anmaster_l: Nothing changes the delta, in this definition
20:42:41 <anmaster_l> cpressey, ah
20:42:42 <pikhq> IMO, GMP on a 64-bit system should be theoretically capable of handling a 2^64 byte number.
20:42:56 <pikhq> Erm. 2^64-1 byte.
20:43:09 <cpressey> Just that the backtrack's path is defined by the reflection of the delta
20:43:41 <Deewiant> Also right.
20:43:46 <alise> pikhq: No overhead?
20:43:47 <Deewiant> In that case, I think it's correct.
20:43:51 <anmaster_l> fizzie, all I can find is http://www.erlang.org/doc/efficiency_guide/advanced.html
20:43:59 <anmaster_l> fizzie, which includes the size of a fixnum in words
20:44:11 <anmaster_l> but bignum seems unlimited according to that
20:44:15 <fizzie> pikhq: I could buy some sort of "compatibility with the 32-bit GMP values" implementation, but they change the actual limb size from 32 to 64 bits...
20:44:21 <alise> cpressey: >_> ... ... TRAVERSED CELLS
20:44:22 <anmaster_l> I'm not about to dig through beam's sources
20:44:36 <cpressey> alise: I'm not seeing how they add anything, yet.
20:44:44 <Deewiant> cpressey: Is the IP the position? If not, I might say "IP's position" in at least a few places there
20:44:49 <alise> cpressey: Well, they are, I think, more precise.
20:44:57 <anmaster_l> alise, how so?
20:44:58 <alise> So fingerprints can do more Funky Stuff without breaking it
20:45:11 <fizzie> anmaster_l: Yes, well, "It is implementation-dependent how much memory the Erlang data types and other items consume"; you could argue that the Erlang-language is capable of having "real" bignums therefore.
20:45:19 <anmaster_l> alise, remember cpressey decided to not define unefunge/trefunge in 111 any more
20:45:25 <alise> Well, for one thing
20:45:28 <alise> Consider
20:45:28 <fizzie> On the other hand, certainly GMP's user-visible API doesn't restrict the value sizes, it's just their implementation of it.
20:45:31 <alise> x
20:45:32 <alise>
20:45:34 <alise> y
20:45:36 <alise> erm
20:45:37 <alise> x
20:45:38 <alise>
20:45:38 <Deewiant> Why no unefunge/trefunge? :-/
20:45:40 <alise> y
20:45:48 <alise> The spaces between x and y are traversable
20:45:55 <alise> Because they hit either x or y (when going diagonally)
20:45:56 <anmaster_l> alise, no one said they aren't?
20:45:57 <alise> eventually
20:45:59 <alise> But x, downwards, isn't
20:46:03 <cpressey> (Unefunge/Trefunge-111 can be derived from Befunge-111 later)
20:46:10 <alise> Because it does not lead to any traversable cell without wrapping
20:46:10 <alise> etc
20:46:12 <alise> So it's more precise
20:46:16 <cpressey> Deewiant: IP is position, yes.
20:46:20 <alise> internal bounds aren't an integer coordinate
20:46:21 <anmaster_l> alise, also they might not. Consider the delta from the space in the middle
20:46:26 <anmaster_l> so it never hits x or y
20:46:30 <anmaster_l> alise, that can happen
20:46:33 <alise> anmaster_l: That's why traversability is defined based on the velocity
20:46:36 <alise> Read the damn definition
20:46:54 <anmaster_l> cpressey, actually, what if there are no cells we can hit
20:46:55 <cpressey> Deewiant: I'm using "EC" for "Execution Context" for "Collection of IP, delta, stack, etc" instead of overloading "IP" to mean all that
20:47:04 <anmaster_l> cpressey, like, some other thread overwrote all with spaces
20:47:07 <anmaster_l> err
20:47:08 <anmaster_l> some other IP
20:47:39 <Deewiant> cpressey: Works for me, although I'd probably prefer IP for the backwards-compatibility (even though -93 used PC, IIRC...)
20:47:45 <anmaster_l> cpressey, or kp was used to overwrite both k and p and anything else in the same "ray"
20:47:48 <cpressey> anmaster_l: Then advancing never terminates
20:47:56 <anmaster_l> cpressey, I guess that is okay
20:48:06 <cpressey> Deewiant: I'll mention the change PC -> IP -> EC in the notes.
20:48:42 <cpressey> anmaster_l: It's not great, but it's tolerable
20:48:57 <anmaster_l> cpressey, btw, I consider IP something that has a position, a delta, a string-mode-flag, a stack-stack plus possibly a few other things
20:49:04 <anmaster_l> what do you consider an IP nowdays then
20:49:16 <Deewiant> What he said: the position
20:49:27 <anmaster_l> ah
20:49:35 <fizzie> It's an "instruction pointer", after all; it sort-of makes sense to be just the position.
20:49:50 <Deewiant> That's arguable either way
20:50:17 <Deewiant> Traditionally an instruction pointer always behaves the same way and thus only "needs" to be the position
20:50:39 <Deewiant> Whereas in Funge, much of what you do involves modifying the way the instruction pointer behaves
20:51:20 <anmaster_l> cpressey, what happens to an ec with delta 0?
20:51:31 <fizzie> Deewiant: Yes, well... on the other hand, even "traditionally" there's the stack which is very much not part of the intstruction pointer; there's some other sort of "context" that groups the IP position and the stack.
20:51:41 <Deewiant> anmaster_l: Again, advancing doesn't terminate.
20:51:49 <anmaster_l> Deewiant, shouldn't it just do nothing
20:51:53 <anmaster_l> and simply rest on it
20:52:04 <Deewiant> fizzie: Sure, there's other stuff, but the stack there isn't so associated with the IP
20:52:06 <anmaster_l> oh wait, it should execute the instruction on the current spot
20:52:10 <anmaster_l> but if that is space then what
20:52:11 <anmaster_l> cpressey, ^
20:52:15 <cpressey> Um, delta 0 will execute the instruction at the IP over and over and over
20:52:31 <anmaster_l> cpressey, what if that instruction is a space though
20:52:32 <fizzie> Deewiant: Right, it's associated with the context, which is what should correspond to the 98 "IP" anyway. :p
20:52:34 <Deewiant> fizzie: It isn't in Funge either, but things like the delta are.
20:52:41 <anmaster_l> cpressey, and what about a j? :D
20:52:59 <Deewiant> anmaster_l: If it's a space advancing doesn't terminate.
20:53:04 <cpressey> anmaster_l: You should be able to figure it out from the spec so far
20:53:13 <cpressey> Not j, the other stuff
20:53:17 <anmaster_l> cpressey, well okay
20:53:26 <anmaster_l> oh needed to ctrl-refresh it
20:53:28 <anmaster_l> strange
20:53:41 <fizzie> Deewiant: I guess you could argue for some sort of intermediate thing where IP is the (position, velocity) pair, and the rest are EC. If you wanted to, for some inexplicable reason.
20:54:03 <Deewiant> fizzie: I'd argue that the string mode is also part of the IP.
20:54:05 <cpressey> On that note, is there a good term for a (position, velocity) pair?
20:54:11 <Deewiant> cpressey: Ray
20:54:24 <cpressey> Deewiant: Hm, ok.
20:54:30 <cpressey> Sort of
20:54:36 <Deewiant> fizzie: And possibly I can argue enough things that it'll just be a matter of convenience to group the rest into the IP as well ;-)
20:54:44 <fizzie> cpressey: Call it a particle, that would be silly-funny.
20:54:45 <alise> cpressey: Agent
20:54:51 <alise> An agent is somewhere, and moves places.
20:54:58 <Deewiant> "A ray is part of a line which is finite in one direction, but infinite in the other. It can be defined by two points, the initial point, A, and one other, B. The ray is all the points in the line segment between A and B together with all points, C, on the line through A and B such that the points appear on the line in the order A, B, C."
20:55:02 <alise> It's directed-acting to modify some state based on some other state.
20:55:03 <Deewiant> -- Wikipedia
20:55:04 <alise> Thus, an agent.
20:55:20 <Deewiant> We define it with A and B-A but that's equivalent.
20:55:46 <fizzie> A (classical) particle has position and velocity too, though. And then you can easily make the position a probability density function and so on in the quantum extensions. :p
20:55:47 <alise> cpressey: Also: TRAVERSABILITY NOW :|
20:55:52 <fizzie> (I am being a bit unserious.)
20:55:57 <Deewiant> alise: What's the point?
20:56:00 <alise> Agent particle
20:56:09 <alise> Deewiant: More formal, more precise, easier to implement
20:56:16 <cpressey> More precise how?
20:56:19 <Deewiant> How is it... yeah
20:56:26 <alise> x
20:56:27 <alise>
20:56:28 <alise> y
20:56:42 <alise> the bounds here aren't rectangular
20:56:47 <alise> only the cell between x and y is traversable
20:57:01 <fizzie> Deewiant: For a typical sort of ray, though, ((0, 0), (1, 1)) and ((0, 0), (2, 2)) would be the same ray; but no-one would claim those to be equivalent for a particle.
20:57:05 <Deewiant> alise: How is this "more precise"
20:57:18 <alise> Because it is, so there
20:57:27 <Deewiant> You really have to define what you mean by "precise" :-P
20:57:39 <cpressey> I think it's probably equivalent, but it adds the burden of distinguishing some cells from others
20:57:50 <fizzie> Aw dang; I waited ~three hours for fungot's Twitter-poster to actually say anything, and then it bailed out due to a typo.
20:57:50 <fungot> fizzie: o jeh, o naw, o naw, o naw, o naw. morfoatari, was charged with manslaughter.
20:58:08 <anmaster_l> ^style
20:58:08 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc jargon lovecraft nethack pa speeches ss wp youtube*
20:58:16 <anmaster_l> ...
20:58:57 <alise> These are the beginnings of a new language.
20:59:08 <alise> Morfoatari means "was charged with manslaughter".
20:59:18 <anmaster_l> cpressey, an IP may also contain IP specific data.
20:59:24 <anmaster_l> err
20:59:26 <anmaster_l> fail
20:59:31 <anmaster_l> fingerprint specific data
20:59:32 <anmaster_l> I meant
20:59:41 <alise> I postulate that either manslaughter = atari, orfo = charged with, and m = past tense,
20:59:42 <alise> or,
20:59:52 <alise> foat = manslaughter, ari = charged with, mor = past tense
20:59:58 <cpressey> anmaster_l: Yes, the fingerprint-semantics-stack-set -- that's mentioned in the defns
21:00:05 <anmaster_l> cpressey, also: unloading a fingerprint isn't well defined. It might be partly unloaded
21:00:29 <anmaster_l> cpressey, well I meant, per-fingerprint data
21:00:35 <anmaster_l> cpressey, as in special flags for MODE
21:00:36 <anmaster_l> or whatever
21:00:41 <cpressey> Unloading fingerprints will be precisely defined to have the same broken behaviour as -98, probably
21:00:55 <cpressey> anmaster_l: That's the fingerprint's business, not the EC's.
21:01:02 <pikhq> alise: And what of "o jeh", and "o naw"?
21:01:03 <anmaster_l> cpressey, I don't think 98 behaviour is actually broken as such
21:01:14 <cpressey> Fine, "stupid behaviour"
21:01:26 <alise> pikhq: jeh/naw are probably yes/no.
21:01:28 <alise> o = it's, I bet.
21:01:28 <Deewiant> I don't think it's stupid either :-P
21:01:29 <anmaster_l> cpressey, I liked it :)
21:01:34 <alise> So It's yes = it's good, it's naw = it's bad
21:01:40 <alise> So it's good, he was charged! But oh the downsides. Bad bad bad.
21:01:55 <cpressey> I'm not sure what else to call something where you can unload it and it's still there
21:02:13 <alise> Consider a newspaper article: "O jeh! O naw, o naw, o naw, o naw. Morfoatari [the criminal but the implications ...]."
21:02:17 <Deewiant> You're not unloading "it" ;-)
21:02:18 <anmaster_l> cpressey, see it as set operations
21:02:26 <Deewiant> Multiset
21:02:52 <cpressey> No, you're unloading all the instructions that are defined in it, no matter what they actually do right now.
21:02:54 <anmaster_l> cpressey, let A and B be sets of the letters each fingerprint implements
21:03:10 <anmaster_l> cpressey, then you have operations like A\B
21:03:11 <cpressey> If that's what you want, it makes more sense to just... list those instructions
21:03:42 <cpressey> If AAAA and BBBB define the same sets of letters, unloading either has the same semantics
21:04:14 <anmaster_l> hm
21:04:29 <fizzie> To add one data point, I have a mild dislike of that; can't quite quantify the amount, but not large.
21:04:30 <cpressey> alise: It's the new *new* Newspeak.
21:04:57 <anmaster_l> cpressey, I quite like the current behaviour, and I see nothing wrong with it
21:05:14 <anmaster_l> cpressey, I might make a fingerprint that allows sending fingerprint instructions between ips or such
21:05:27 <anmaster_l> hey in efunge I could create fingerprints on the fly
21:05:32 <anmaster_l> I just realised this
21:05:45 <anmaster_l> since they are basically a stack of lambdas
21:05:49 <anmaster_l> (funs)
21:06:10 <anmaster_l> sure, they can resolve to a function in a module (what currently happens)
21:06:29 <anmaster_l> but nothing prevents a complete lambda being pushed there
21:07:17 <anmaster_l> cpressey, what about CR for file loading?
21:07:34 <cpressey> anmaster_l: Not supported, use a text converter.
21:07:54 <Deewiant> CR for file loading?
21:08:03 <Deewiant> You mean mac-style line breaks?
21:08:17 <cpressey> I assumed that what what anmaster_l meant
21:08:25 <Deewiant> Why not supported?
21:08:26 <anmaster_l> cpressey, aww, I went to great lengths ensuring any combination of LF CRLF and CR mixed for different lines in a single file worked
21:08:37 <anmaster_l> cpressey, so CRLF is also unsupported I guess?
21:08:49 <cpressey> Deewiant: "file" is a more abstract concept
21:09:01 <anmaster_l> last I checked mycology was encoded in CRLF
21:09:15 <Deewiant> That exposed a bug in rcfunge IIRC
21:09:19 <Deewiant> Which reflected on CR
21:09:31 <anmaster_l> cpressey, so basically it would use native line ending always?
21:09:33 <Deewiant> Or can't remember which, one of the earlier interps.
21:09:37 <cpressey> There is nothing stopping an implementation from providing loading of files in other formats as an option
21:09:43 <cpressey> anmaster_l: No, always 10.
21:09:45 <anmaster_l> cpressey, would actually handling non-native formats be allowed?
21:09:49 <anmaster_l> hm
21:09:59 <Deewiant> cpressey: That's massively inconvenient for windows users
21:10:06 <anmaster_l> cpressey, but that would need to be an explicit option?
21:10:30 <anmaster_l> (which I don't think is a good idea requiring)
21:10:50 -!- augur has quit (Ping timeout: 248 seconds).
21:11:00 <fizzie> Deewiant: It's just payback for "you people" spewing all those CRs everywhere.
21:11:19 <anmaster_l> cpressey, the SGML spaces + ticks had a somewhat tricky semantics iirc
21:11:28 <anmaster_l> cpressey, Deewiant is the right person to ask here iirc
21:11:38 <anmaster_l> I forgot what he thought was the best idea
21:11:39 <Deewiant> I don't really mind myself since I use vim which can easily save in whatever format I want
21:11:44 <Deewiant> But people /do/ use notepad
21:11:53 <Deewiant> And programs default to CRLF
21:11:58 <anmaster_l> c
21:12:04 <anmaster_l> s/c//
21:12:08 <anmaster_l> Deewiant, only on windows
21:12:19 <Deewiant> Yes, that's what I was talking about all along
21:12:30 <anmaster_l> well yes
21:13:30 <fizzie> Incidentally, what about s? The first time I read it, I assumed it pops a value from the stack, writes it to (pos+delta), then continues from the just-written value, but I guess interpreters generally tend to skip it, like ' does? (It's "defined" to be "mirror image" of '.)
21:13:38 <Deewiant> The only trickiness that comes to mind re. SGML spaces is in what order they are meant to work
21:13:56 <fizzie> I guess I was just hoping for a handy "execute the op currently on top of stack" command.
21:14:05 <Deewiant> I mean, where are you after spending three ticks (" included) in "x y"
21:14:14 <anmaster_l> Deewiant, indeed
21:14:20 <anmaster_l> Deewiant, where were you? I forgot
21:14:30 <Deewiant> I think you're on the y
21:14:44 <Deewiant> Seems most sensible to me anyway
21:14:58 <anmaster_l> err
21:14:59 <anmaster_l> how
21:15:04 <cpressey> Why would you not be on the y?
21:15:10 <anmaster_l> well
21:15:14 <cpressey> Enter Stringmode, Push `x`, Push ` `
21:15:16 <anmaster_l> what about *on* the third tick
21:15:23 <Deewiant> cpressey: You /could/ be on the second space, and you'd skip it only next tick
21:15:24 <anmaster_l> cpressey, then skip over the second space?
21:15:44 <Deewiant> I think that was cause for some confusion anyway
21:15:50 <Deewiant> I might misremember, maybe there was some other issue.
21:15:56 <anmaster_l> yes, iirc it exposed a bug in ccbi
21:16:06 <anmaster_l> after we found out it wasn't in cfunge as first thought
21:16:21 <Deewiant> Hmm, I do think I've always done it the same way
21:16:26 <fizzie> cpressey: You need a sort of a "read-ahead" in stringmode to be on the "y" after the third tick, whereas for the other way (skip extra spaces only on the second tick) you don't.
21:16:38 <cpressey> Since the whole "ticks" thing only makes sense when there are multiple ECs, and multiple ECs are optional, I'm thinking of just dropping it.
21:16:50 <anmaster_l> Deewiant, yes but you had a bug that hid a bug in mycology in the tests related to i
21:16:51 <anmaster_l> it*
21:16:53 <Deewiant> cpressey: That'd make everything multithreaded unspecified... which sucks
21:17:10 <cpressey> fizzie: Well, I've always thought of it as execute-then-advance-to-next-thing-that-can-be-executed (stringmode or no)
21:17:33 <anmaster_l> cpressey, indeed
21:17:36 <Deewiant> Right, that's a more general issue I think
21:18:02 <Deewiant> I may've done it as loop { advance-to-next-executable, execute, move by delta }
21:18:08 <cpressey> In "SGML" that means, push space then advance to next (non-space) thing that can be pushed... I don't see any lookahead involved
21:18:27 <Deewiant> cpressey: See what I just said
21:18:52 <Deewiant> If you do it as advance-to-next-executable, loop { execute, move by delta, advance-to-next-executable } there's no problem
21:18:59 <anmaster_l> funny thing... memtest86+ claims L1 speed is 16394 MB/s, L2 speed is 1123 MB/s, and memory speed is 1132 MB/s
21:19:00 <anmaster_l> so...
21:19:11 <anmaster_l> my main memory would be faster than L2?
21:19:32 <Deewiant> Heh
21:21:28 <fizzie> If you really want to be nitpicky, you could complain about this case: IP 1 executes whatever and moves to location X, which contains some executable-looking instruction; then IP 2 overwrites that with space; now what should IP 1 do? A literal reading of the spec is quite clear: " The IP executed is the one at the current position of the IP. Only after that does the IP moves by its delta to a new position."
21:21:56 <fizzie> On the other hand, the spec is equally clear: "-- space -- cannot ever be truly executed, in the sense of it taking up a tick and doing something."
21:23:09 <fizzie> I think at least my interpreters have opted to possibly move the IP even before execution, if the current position happens to be a space or a ;.
21:23:34 <anmaster_l> I'm not sure I handle that separately
21:23:47 <anmaster_l> actually, I think it can't happen
21:24:02 <anmaster_l> since I handle space in my execute_instruction
21:24:02 <Deewiant> It can, if a child IP overwrites your position with a space
21:24:12 <anmaster_l> as a loop that goes forward looking for next non-space
21:24:17 <anmaster_l> so hm
21:24:22 <Deewiant> But does it then execute the next instruction?
21:24:29 <anmaster_l> Deewiant, it does after
21:24:33 <Deewiant> On that tick
21:24:35 <Deewiant> Not the next
21:24:38 <anmaster_l> Deewiant, yes
21:24:45 <Deewiant> So it's all good :-P
21:24:47 <anmaster_l> Deewiant, I return "continue with same ip"
21:24:54 <anmaster_l> instead of "continue with next"
21:24:58 <Deewiant> I know I've broken and unbroken this many times in CCBI
21:25:04 <fizzie> I may have copied that sort of behaviour from some other interpreter, yes.
21:25:06 <anmaster_l> Deewiant, same I think
21:25:17 <anmaster_l> but the thing is
21:25:26 <anmaster_l> I don't search forward at the end of the cycle
21:25:30 <anmaster_l> but at the start of the cycle
21:25:42 <anmaster_l> at the end of the cycle I just move forward one delta
21:25:57 <Deewiant> Right, that's one of two alternatives
21:26:09 <Deewiant> And it's not entirely specified which one is right, I think.
21:26:20 <fizzie> Yes, that's a bit unclear too, since the "move afterwards" part of the spec only says you should move "as specified by the delta".
21:26:25 <anmaster_l> and only when I'm about to execute again I check if it is space, then skip forward and execute whatever is after
21:26:29 <anmaster_l> (assuming non-string mode
21:26:31 <anmaster_l> )
21:26:39 <anmaster_l> (string mode would be somewhat different)
21:26:49 <fizzie> But if you opt for the literal reading of that first part ("you must execute whatever is at the current position, and only move after that") you can't do it like that.
21:27:02 <fizzie> I'm not sure anyone does, though.
21:27:16 <anmaster_l> fizzie, j would be rather different then for example
21:27:25 <fizzie> For one thing, it sas that you have to execute the "IP -- at the current position of the IP".
21:27:26 <anmaster_l> fizzie, especially kj
21:27:30 <fizzie> Which doesn't really sense make.
21:27:35 <anmaster_l> fizzie, this was discussed a few days ago
21:27:36 <anmaster_l> in here
21:31:04 <cpressey> fizzie, that's a good point.
21:31:53 <cpressey> The "search" does have to occur at the beginning, before the first instruction is first executed anyway.
21:32:33 <cpressey> And it might have to happen if some other EC p'ed a space under the IP.
21:32:36 <Deewiant> Yes, that's what I was implicitly demonstrating in my second loop {} style thing
21:32:54 <cpressey> OK, it's clearer now. I'll make a note of it.
21:33:16 <fizzie> And what about that s?-) (Okay, okay, I'll shut up about the s.)
21:33:29 <Deewiant> I think the s is pretty obvious even in -98 :-P
21:34:05 <cpressey> Yeah, I didn't think there was anything tooooo controversial about s?
21:34:46 <anmaster_l> cpressey, indeed I agree
21:35:30 <pikhq> There is a patent on the linked list. Why is there a patent on the linked list.
21:37:22 <olsner> to protect innovation!
21:37:41 <anmaster_l> pikhq, there must be prior art
21:37:49 <anmaster_l> unless that patent is very old
21:37:54 <anmaster_l> so the patent is invalid
21:37:55 <pikhq> anmaster_l: Fairly recent.
21:38:04 <anmaster_l> pikhq, then that patent is invalid
21:38:14 <pikhq> There's tons of prior art. Like, *nearly every program*.
21:38:33 <pikhq> Yes, but validity of patents doesn't matter in the US courts.
21:38:40 <lament> I have written programs that don't use linked lists.
21:38:56 <fizzie> Deewiant, cpressey, anmaster_l: Oh, don't be like that. "s -- pops a value off the stack and writes it into (position + delta)." It doesn't say anything about advancing the pointer any extra, which made it (to me, anyway) sound like it'd be a fancy instruction that'd let you execute what's on top of stack, since (position + delta) is where the execution would normally continue from.
21:39:00 <cpressey> I want lament as my patent attorney
21:39:01 <pikhq> lament: Yes, but linked lists are an absurdly common data structure.
21:39:11 <fizzie> You only get the skipping behaviour from the vague "it's a mirror image of '" description.
21:39:24 <lament> cpressey: that's patently stupid.
21:39:34 <Deewiant> fizzie: See, I don't think it's that vague ;-P
21:39:47 <fizzie> Deewiant: It doesn't define what a "mirror image" is. :p
21:40:13 <cpressey> fizzie: yes, I don't think it was intended to skip over. "Mirror image" is merely, uh, imagery.
21:40:37 <Deewiant> You don't? O_o
21:40:49 <fizzie> Ha, see! Currently de-facto it does skip over, so it's not usable as-is as an "execute what's on stack" thing.
21:41:01 <fizzie> Okay, so it's not a huge space-waster to put a tight curve in there, but still.
21:41:11 <anmaster_l> cpressey, what?
21:42:18 <Deewiant> Executing what's on stack is trivial anyway, err... aycy+bydy+p (only works in Befunge)
21:42:23 <anmaster_l> fizzie, or just some # and j magic
21:42:28 <Deewiant> And needs a few more adds
21:42:31 <Deewiant> But anyway ;-P
21:42:32 <cpressey> I don't remember.
21:42:50 <fizzie> That's not what I'd call "trivial".
21:43:03 <pikhq> data [a] = a : [a] | [];head (x:_)=x;tail(_:xs)=xs
21:43:04 <Deewiant> I was jesting
21:43:09 <pikhq> Ooops, I'm violating a patent!
21:43:39 <cpressey> There were *supposed* to be "store left" and "store right" instructions, and corresponding "fetch", that would store stuff beside the path instead of in it
21:43:40 <fizzie> I have to admit that I haven't ever written a program where I'd actually felt the need to execute what's on stack... but it *could* happen!
21:44:04 <cpressey> I think that was in a 99 proposal
21:44:44 <anmaster_l> 99
21:44:50 <anmaster_l> cpressey, was that a typo for 98?
21:44:54 <cpressey> fizzie: k should have taken its instruction from the stack
21:44:57 <cpressey> anmaster_l: no
21:45:01 <anmaster_l> cpressey, hm okay
21:45:15 <anmaster_l> never heard about the 99 stuff before
21:45:20 <anmaster_l> 96 and 97 yes
21:45:37 <cpressey> That's because no one was interested in anyone's ideas for changes after 98
21:45:47 <anmaster_l> hm okay
21:45:51 <cpressey> There was all kinds of stuff proposed
21:46:11 <anmaster_l> cpressey, well I think they are good ideas, but I also think they should probably be a set of fungoids
21:46:16 <anmaster_l> and then everyone is happy
21:48:16 <fizzie> With the current s, I don't see any specifically elegant way of using it for stack-execution. sX^ and then v< on top of X^ works, but all the looping makes the IP dizzy. If you just jump backwards without changing delta, it's hard to avoid ending up in a loop; you can't do something like s#vX< because the s won't reach up to the X.
21:49:26 <Deewiant> s;> #;X#<
21:49:38 <fizzie> Deewiant: Won't that just overwrite the ;?
21:49:48 <Deewiant> Maybe :-P
21:50:08 <Deewiant> Would be cool if it didn't tho
21:50:25 <fizzie> With a non-cardinal delta you can do it semi-elegantly; assuming dx=2, dy=0 for example you could just svX <.
21:50:48 <anmaster_l> fizzie, what is X there?
21:50:54 <Deewiant> "any"
21:50:56 <fizzie> anmaster_l: The thing that gets overwritten by s.
21:50:59 <anmaster_l> ah
21:51:29 <fizzie> But setting a non-cardinal delta involves an ugly vector.
21:51:53 <Deewiant> eval is supposed to be ugly
21:52:04 <anmaster_l> fizzie, you could also do 0-2 0 'X #vsX x right?
21:52:10 <anmaster_l> or something like that
21:52:36 <fizzie> I guess so.
21:52:45 <anmaster_l> err
21:52:49 <anmaster_l> make that 02-
21:52:51 <anmaster_l> of course
21:53:21 <fizzie> Though 20x svX < is shorter. I just don't like non-cardinal deltas at all, due to theological observations.
21:53:36 <anmaster_l> oh?
21:53:48 -!- augur has joined.
21:53:48 <anmaster_l> oh
21:53:49 <anmaster_l> ffs
21:54:01 <fizzie> Like the old saying goes: God created the cardinal deltas; all else is the work of man.
21:54:06 <fizzie> They fell less holy, you see.
21:55:45 <fizzie> "The all-pervading nature of the program counter"; what a lovely section title from Wikipedia.
21:55:58 <anmaster_l> fizzie, so Cardinalidae is more holy? Huh
21:56:23 <anmaster_l> (algorithm: go to wikipedia disambig page, pick first from list)
21:56:57 <fizzie> On the other hand, bishops move diagonally...
21:57:05 <anmaster_l> haha
21:57:35 <fizzie> There was a related joke I saw somewhere.
21:57:43 <fizzie> "As a chess grandmaster, what's your view on America's war strategy?" "Send in the clergy! They can move diagonally!"
21:58:01 <pikhq> Mmm, SMBC.
21:58:12 <fizzie> That's probably where it was.
21:58:29 <pikhq> It was.
21:59:18 -!- alise has quit (Ping timeout: 252 seconds).
22:01:34 <MissPiggy> where is oklofubp
22:01:52 <MissPiggy> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
22:03:38 -!- AnMaster has joined.
22:04:06 <anmaster_l> night
22:04:16 -!- anmaster_l has quit (Quit: Leaving).
22:06:12 -!- angstrom has joined.
22:07:01 <angstrom> hi guys. how are the extensions { '#', '!' } actually used in brainfuck?
22:07:56 <lament> #!/sbin/brainfuck
22:08:38 <angstrom> as in "#! /bin/bash" ?
22:12:15 <angstrom> lament: my question refers to http://esolangs.org/wiki/Brainfuck#Extensions but what does "print the content of the first few memory cells" mean? kinda vague to me.. '!' should, if i'm right, write the char after it from the source into the current cell
22:14:36 <cpressey> angstrom: I think # is basically "Debug", and not meant to be portable in any serious way.
22:15:17 <fizzie> I've seen # used as a breakpoint instruction in BF too.
22:15:24 <cpressey> Whereas everything before "!" is interpreted as program, and everything after it as input (for interpreters that don't have the usual concept of stdin etc.)
22:15:27 <pikhq> And ! is only used as an "end of code" marker.
22:15:56 <fizzie> ^bf ,[.,]!hello
22:15:57 <fungot> hello
22:15:59 <fizzie> Like that.
22:28:33 <angstrom> ic. i ask, because i'm currently implementing my own bf interpreter, and just wondered, whether there is a mutual understanding of extensions..
22:30:03 <pikhq> Just ignore them, really.
22:31:01 <cpressey> Hm
22:31:02 <angstrom> a command for doing something like printf("%u", *(ptr + cell)); would come in handy though
22:31:46 <angstrom> eg. "^4" which then would print the int stored at (4)
22:32:05 <pikhq> Then add and document it.
22:32:22 <cpressey> <insert bf interp written in bf here>!<insert bf interp written in bf here>!<insert bf interp written in bf here>! ... (this is an infinite stream) ...
22:32:32 <pikhq> cpressey: Yes. :)
22:33:06 <angstrom> i'm not implementing it in bf tho
22:35:04 <fizzie> cpressey: It's turtles all the way down.
22:37:02 -!- tombom has quit (Quit: Leaving).
22:46:24 -!- alise has joined.
22:46:38 <alise> PING google.com (209.85.229.104): 56 data bytes
22:46:38 <alise> 64 bytes from 209.85.229.104: icmp_seq=0 ttl=49 time=445.559 ms
22:46:38 <alise> 64 bytes from 209.85.229.104: icmp_seq=1 ttl=49 time=458.109 ms
22:46:38 <alise> 64 bytes from 209.85.229.104: icmp_seq=2 ttl=49 time=1841.185 ms
22:46:38 <alise> 64 bytes from 209.85.229.104: icmp_seq=3 ttl=49 time=847.884 ms
22:46:40 <alise> 64 bytes from 209.85.229.104: icmp_seq=4 ttl=49 time=999.323 ms
22:46:40 <alise> 64 bytes from 209.85.229.104: icmp_seq=5 ttl=49 time=365.233 ms
22:46:41 <alise> Hi.
22:47:13 -!- Gracenotes has quit (Ping timeout: 260 seconds).
22:47:13 <Gregor> The domain name misogyno.us is available.
22:47:15 <alise> (Explanation: Now I am on my iMac, using this BT FON thing where you pay £5 and get 24 hours of interwebs via Wi-Fi. It is slow; I think the router is some way away.)
22:47:28 <alise> The other computer is connected wiredly; but with a winmodem.
22:47:34 <alise> Shit sucks.
22:47:44 <alise> Gregor: :D
22:48:45 <Gregor> As is coprophago.us , but I don't know what that word is and it scares me ...
22:48:57 <alise> Very bad ping, very bad bandwidth.
22:48:58 <cpressey> Gregor: you don't?
22:48:59 <alise> Gregor: Poo-sexual.
22:49:04 <alise> Like our dear friend coppro.
22:49:10 <Gregor> (Pooppy)
22:49:18 <alise> hey guys what's my lag?
22:49:28 <alise> ping is 1.29 seconds to Gregor :D
22:49:28 <cpressey> alise: PING
22:49:36 <alise> cpressey: Uh, use CTCP ping :P
22:49:38 <MissPiggy> alise help
22:49:41 <cpressey> alise: NO
22:49:42 <alise> MissPiggy: wut
22:49:47 <alise> cpressey: :(
22:50:12 <alise> Your ping is n/a no matter how many times I tell my client to ping you :)
22:50:16 <alise> Client doesn't respond to PINGs?
22:50:51 <cpressey> alise: 4 seconds
22:50:58 <alise> Sweet
22:51:08 <alise> The log for today is loading in tiny stutters
22:51:14 <alise> This thing is shared with whoever owns the hub apparently, and i'm capped
22:51:22 <alise> But my 3g stick refused to top up, so...
22:51:41 * alise joins #ubuntu for the lulz
22:52:07 * cpressey is scared to venture anywhere besides #esoteric
22:52:10 <alise> also I /just/ managed to connect to MSN...
22:52:42 <alise> We're the nicest channel now that #haskell has gone all big.
22:52:47 <alise> Even nicer if I left :)
22:54:42 <MissPiggy> man #haskell is so fucking awful seriously
22:54:49 <MissPiggy> that channel is a pit of fail
22:55:06 <alise> Anything else to say other than the usual "Haskell sucks" stuff?
22:55:11 <MissPiggy> was
22:55:12 <alise> I realise Coq is so much better and all but please.
22:55:13 <MissPiggy> but not anymore
22:55:19 <MissPiggy> what's coq got to do with it
22:55:25 <alise> Well, you seem to like Coq. :P
22:56:03 -!- alise_ has joined.
22:56:03 -!- alise has quit (Read error: Connection reset by peer).
22:56:07 -!- alise_ has quit (Client Quit).
22:56:13 <lament> haskell sucks
22:56:28 -!- alise has joined.
22:56:41 <alise> Not the most reliable connection.
22:56:52 <alise> Could someone pastebin the last, say, 100 lines of today's log?
22:56:56 <Deewiant> MissPiggy: Is there anything you feel positively about?
22:56:57 <alise> Or, well, since I last left for a while.
22:57:01 <alise> I can't seem to load the entire log.
22:57:11 <alise> Deewiant: Negativity!
22:58:01 <MissPiggy> Deewiant I wish there was
22:58:02 -!- alise has quit (Read error: Connection reset by peer).
22:59:18 -!- alise has joined.
22:59:41 <alise> This is just ridiculous.
22:59:45 <alise> Anyone said anything?
22:59:58 <cpressey> alise: No.
23:00:11 <alise> Well that's great. Probably they did but the lag stopped me seeing it :)
23:00:17 <alise> I should just top up the damn 3g stick
23:00:21 <cpressey> And previously it was mostly very boring stuff about Befunge spec.
23:00:30 <alise> Aight.
23:00:30 -!- MigoMipo has quit (Read error: Connection reset by peer).
23:01:44 <cpressey> Oh I missed this one.
23:01:45 <cpressey> (4:55:49 PM) lament: haskell sucks
23:02:03 <cpressey> We're in top form today.
23:03:19 -!- Gracenotes has joined.
23:03:23 -!- oerjan has joined.
23:04:37 <cpressey> In other news, Wouter took free variables (and thus closures) out of Aardappel after deciding they didn't add anything to it (function values can be expressed more directly as term-rewrite rules.)
23:04:55 <cpressey> But it does have local rules.
23:05:07 <cpressey> Which is what I'm thinking about.
23:05:10 <cpressey> Anyway.
23:05:33 -!- alise has quit (Ping timeout: 240 seconds).
23:08:30 -!- alise has joined.
23:11:19 <cpressey> Aardappel doesn't treat the local rules as part of the term, though, afaict. So they can't be rewritten by other rules.
23:11:32 <alise> Topped up.
23:11:52 <cpressey> Also, I think there are only 2 levels, local and global. No nested scoping beyond that. Could be wrong though.
23:12:00 <MissPiggy> hi alise
23:14:18 -!- coppro has joined.
23:16:00 <alise> cpressey: I think deltas should modify, but not overwrite, the velocity.
23:16:17 <alise> Like, < should change (1,2) to (0,3)
23:16:22 <alise> Er, if I have my order correct
23:17:29 <cpressey> alise: I think that idea was kicked around once... so, like, >> > > > > > causes the IP to speed up to the right
23:17:42 <cpressey> Assuming it's already going right
23:17:48 <augur> accelerating >s!
23:17:55 <cpressey> Pretty much
23:18:01 <cpressey> It makes turning corners interesting
23:18:02 * augur accelerates cpressey's >
23:18:03 <alise> cpressey: Oh, I think it'd behave normally just for ^/v/</>
23:18:09 <alise> Dunno how, though
23:18:13 <alise> Just a sort of generalisation
23:18:21 <MissPiggy> hi augur
23:18:39 <augur> sups
23:18:44 <MissPiggy> im sad
23:18:55 <MissPiggy> why did I study so much computers it was a waste of time
23:19:02 <augur> :(
23:19:14 <MissPiggy> ? nobody gives a fuck if I can implement CPS conversion using delimited continuations ?
23:20:17 <MissPiggy> whine whien whien
23:20:24 <augur> :P
23:20:29 <alise> MissPiggy is having some sort of crisis where she disowns all of CS :P
23:20:34 <alise> #math is that way
23:20:38 <augur> and takes up linguistics! :D
23:20:40 <MissPiggy> #math is awful
23:20:43 <alise> math actually
23:20:45 <alise> or so she says
23:20:47 <MissPiggy> I am learning a little bit of linguistics
23:20:48 <cpressey> linguistics is awful
23:20:50 <alise> *maths
23:20:55 <alise> cpressey: augur hates you now
23:21:00 <augur> CPRESSEY YOU HOLD YOUR TONGUE
23:21:00 <augur> >O
23:21:05 <MissPiggy> I just read the intro books
23:21:17 <augur> come, my dear, let me teach you bout some linguisticd
23:21:20 <MissPiggy> yeah but alise I'm not good at math
23:21:58 <MissPiggy> http://www.youtube.com/watch?v=Lt4JZyssxOQ
23:22:21 <augur> lmfao
23:22:27 <augur> thats a horrible demonstration XD
23:24:30 <augur> his bothmer person has a bunch of stupid videos
23:24:31 <augur> lol
23:24:46 <augur> "this is nor a homomorphism: /bother burns a sheet of paper"
23:24:48 <augur> not**
23:25:26 <alise> MissPiggy: computing's cool man
23:25:57 -!- dev_squid has quit (Ping timeout: 260 seconds).
23:26:42 <cpressey> computer science is the worst
23:26:58 <cpressey> can't decide if it's math, logic, or electrical engineering
23:27:03 <MissPiggy> Today, I mostly paste libraries together. So do you, most likely, if you work in software. Doesn’t that seem anticlimactic? We did all those courses on LR grammars and concurrent software and referentially transparent functional languages. We messed about with Prolog, Lisp and APL. We studied invariants and formal preconditions and operating system theory. Now how much of that do we use? A huge part of my job these days seems to be impedence-ma
23:27:21 <cpressey> Fuck, paste libraries together? I WISH!
23:27:52 <cpressey> Modern programming is 90% troubleshooting and 10% acting like the bugs that are there don't matter.
23:28:00 <alise> oh great MissPiggy read a sub-par lol cs is not programming
23:31:08 <Deewiant> MissPiggy: impedence-ma
23:31:28 <alise> MissPiggy: look cs has a boring brother called programming
23:31:32 <alise> but mathematics doesn't even have a boring brother
23:31:52 <uorygl> Mathematics also has a boring brother called programming?
23:32:06 <Slereah> Math is nothing but the lesbian sister of biology
23:32:08 <alise> Not really :P
23:32:15 <cpressey> Mathematics has a "special" brother called CS.
23:34:08 -!- Gracenotes has quit (Ping timeout: 256 seconds).
23:35:43 <cpressey> I am a huge proponent of "Agile mathematics"
23:36:27 <Slereah> Is it the kind where you need to perform autofellatio?
23:38:41 <Gregor> ... wow.
23:41:12 <alise> XD
23:41:22 <cpressey> I don't get it.
23:42:01 <alise> Exactly.
23:44:07 <cpressey> I keep thinking it's some obscure Pair Programming reference.
23:44:10 <oerjan> the connection to mathematics seems a little weak
23:44:53 <oerjan> cpressey: that wouldn't be auto- would it.
23:46:46 <cpressey> On the other side of the coin is http://www.flounder.com/bricks.htm
23:47:25 <cpressey> i.e. Programming has a useless brother called CS
23:49:37 <MissPiggy> that was funny about the comma inside the quote
23:52:58 <alise> Whoever wrote that — ok so I haven't read it yet — has probably used quicksort. Or O(n) notations to decide on an algorithm.
23:53:00 <alise> Or... I could go on.
23:53:38 <coppro> his point is not that CS is useless
23:53:38 <cpressey> alise: OK, so the analogy isn't quite right.
23:53:53 <coppro> his point is that CS education does not train programmers
23:53:54 <alise> coppro: Yeah, seems not.
23:53:59 <cpressey> Programming as a profession has a useless brother called CS Education.
23:54:00 <alise> Or CS, in most cases.
23:54:45 <Gregor> Naw, programming is to CS as civil engineering is to physics ... the fact that civil engineers need to take physics classes doesn't mean that they're dealing directly in theoretical physics every day.
23:55:19 <MissPiggy> good analogy
23:55:34 <MissPiggy> this is all great but none of it helps me :|
23:55:51 <Gregor> What did you want to be helped with? :P
23:56:01 <MissPiggy> I don't even know :(
23:56:19 <MissPiggy> time travel is out of the question
23:56:20 <cpressey> MissPiggy needs metahelp
23:56:42 -!- augur has quit (Ping timeout: 248 seconds).
23:56:44 <uorygl> Quicksort is a fun sorting algorithm.
23:57:07 <Gregor> MissPiggy: If you're confident that you can develop the technology to travel backwards in time within your lifetime, then time travel is not out of the question. Just develop it, then send it back to your younger self, and you'll still have your entire life to do whatever else you wanted to do.
23:57:11 <uorygl> I love sorting algorithms that perform at their worst when their input is already sorted.
23:57:52 <MissPiggy> Gregor, but I don't beleive in time travel
23:58:02 <Gregor> So short-sighted :P
23:58:03 <MissPiggy> I mean, maybe it's possible to send me back in time
23:58:16 <uorygl> I imagine almost nobody believes in time travel.
23:58:30 <MissPiggy> but it would just be duplicating me, and destroying the original
23:58:37 <MissPiggy> I wouldn't actually be going through time, I'd just think I was
23:58:40 <uorygl> Not necessarily.
23:58:48 <Gregor> That's an irrelevant distinction.
23:59:00 <uorygl> I mean, what makes you think that when you walk around, you're not just duplicating yourself and destroying the original?
23:59:02 <MissPiggy> Gregor irrelevant to whom?
23:59:22 <uorygl> Whatever it is that makes you think that, it should also make you open to the idea that time travel wouldn't do that.
23:59:23 <Gregor> Irrelevant in every sense, you're existing a distinction with no physical consequences.
23:59:29 <Gregor> Erm
23:59:35 <Gregor> You're creating a distinction with no physical consequences.
←2010-03-02 2010-03-03 2010-03-04→ ↑2010 ↑all